From f5d8861eeaa7eb64c7632b53302c88a4b5866029 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Mon, 6 May 2024 11:08:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=93=E5=82=A8=E5=BE=AE=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../databases/tables/create_table_base.sql | 326 +++++++ .../tables/create_table_purchase.sql | 213 +++++ .../tables/create_table_warehouse.sql | 385 ++++++++ yxt-wms-biz/docs/databases/tables/wms.sql | 507 +++++++++++ .../数据备份/yxt_wms-20240301091036.sql | 841 ++++++++++++++++++ ...rvise_supplychain_2024-03-07_01-45-194.xls | Bin 0 -> 344576 bytes .../仓储管理(yxt_wms)1.1.xlsx | Bin 0 -> 339823 bytes .../基础信息(yxt_base)1.1.xlsx | Bin 0 -> 23522 bytes .../采购管理(yxt_pms)1.1.xlsx | Bin 0 -> 17674 bytes .../销售管理(yxt_sms)1.1.xlsx | Bin 0 -> 17605 bytes yxt-wms-biz/docs/sheji/wx20240223.txt | 16 + .../docs/sheji/仓储、储运与管线.png | Bin 0 -> 3010 bytes yxt-wms-biz/docs/sheji/仓储功能模块.jpg | Bin 0 -> 150573 bytes yxt-wms-biz/docs/sheji/仓储建模.png | Bin 0 -> 2580 bytes ...功能开发计划(2024.02-2024.03).xlsx | Bin 0 -> 16107 bytes .../docs/sheji/功能权限设计.docx | Bin 0 -> 15032 bytes ...能)开发计划(2024.02-2024.03).xlsx | Bin 0 -> 22505 bytes ...端页面设计与开发规范v1.0.2.docx | Bin 0 -> 590317 bytes .../docs/sheji/客户管理思路设计.docx | Bin 0 -> 50209 bytes .../docs/sheji/数据权限设计.docx | Bin 0 -> 16945 bytes yxt-wms-biz/docs/sheji/系统表.png | Bin 0 -> 55958 bytes yxt-wms-biz/pom.xml | 134 +++ .../java/com/yxt/wms/YxtWmsApplication.java | 24 + .../com/yxt/wms/apiadmin/AdminHomeRest.java | 16 + .../apiadmin/base/WmsWarehouseAreaRest.java | 69 ++ .../base/WmsWarehouseAreaTypeRest.java | 62 ++ .../apiadmin/base/WmsWarehouseExtendRest.java | 39 + .../apiadmin/base/WmsWarehouseInfoRest.java | 70 ++ .../apiadmin/base/WmsWarehouseRackRest.java | 62 ++ .../WarehousingReservationDetailRest.java | 56 ++ .../inventroy/WarehousingReservationRest.java | 55 ++ .../apiadmin/inventroy/WmsAnsBillRest.java | 55 ++ .../inventroy/WmsDistributeBillRest.java | 56 ++ .../WmsInventoryAllocatebillDetailRest.java | 49 + .../WmsInventoryAllocatebillRest.java | 97 ++ .../inventroy/WmsInventoryBatchRest.java | 89 ++ .../inventroy/WmsInventoryBillDetailRest.java | 17 + .../inventroy/WmsInventoryBillRest.java | 84 ++ .../WmsInventoryCheckbillDetailRest.java | 89 ++ .../inventroy/WmsInventoryCheckbillRest.java | 100 +++ .../inventroy/WmsInventoryRecordRest.java | 168 ++++ .../apiadmin/inventroy/WmsInventoryRest.java | 191 ++++ .../WmsInventorySettlebillDetailRest.java | 119 +++ .../inventroy/WmsInventorySettlebillRest.java | 124 +++ .../inventroy/WmsOldInventoryRest.java | 114 +++ .../inventroy/WmsOldRegisterRest.java | 37 + .../apiadmin/inventroy/WmsOutBillRest.java | 58 ++ .../inventroy/WmsReceiptBillRest.java | 73 ++ .../apiadmin/inventroy/WmsShelfBillRest.java | 73 ++ .../java/com/yxt/wms/apiwx/WxHomeRest.java | 16 + .../wmswarehousearea/WmsWarehouseArea.java | 28 + .../WmsWarehouseAreaAllVo.java | 56 ++ .../wmswarehousearea/WmsWarehouseAreaDto.java | 28 + .../WmsWarehouseAreaMapper.java | 24 + .../WmsWarehouseAreaMapper.xml | 27 + .../WmsWarehouseAreaQuery.java | 13 + .../WmsWarehouseAreaService.java | 93 ++ .../wmswarehousearea/WmsWarehouseAreaVo.java | 34 + .../WmsWarehouseAreaType.java | 17 + .../WmsWarehouseAreaTypeDto.java | 25 + .../WmsWarehouseAreaTypeMapper.java | 18 + .../WmsWarehouseAreaTypeMapper.xml | 22 + .../WmsWarehouseAreaTypeQuery.java | 13 + .../WmsWarehouseAreaTypeService.java | 89 ++ .../WmsWarehouseAreaTypeVo.java | 29 + .../WmsWarehouseExtend.java | 31 + .../WmsWarehouseExtendDto.java | 36 + .../WmsWarehouseExtendMapper.java | 17 + .../WmsWarehouseExtendMapper.xml | 15 + .../WmsWarehouseExtendQuery.java | 13 + .../WmsWarehouseExtendService.java | 64 ++ .../WmsWarehouseExtendVo.java | 43 + .../wmswarehouseinfo/WmsWarehouseInfo.java | 41 + .../WmsWarehouseInfoAllVo.java | 54 ++ .../wmswarehouseinfo/WmsWarehouseInfoDto.java | 42 + .../WmsWarehouseInfoMapper.java | 24 + .../WmsWarehouseInfoMapper.xml | 15 + .../WmsWarehouseInfoQuery.java | 13 + .../WmsWarehouseInfoService.java | 125 +++ .../wmswarehouseinfo/WmsWarehouseInfoVo.java | 47 + .../wmswarehouserack/WmsWarehouseRack.java | 26 + .../wmswarehouserack/WmsWarehouseRackDto.java | 25 + .../WmsWarehouseRackMapper.java | 19 + .../WmsWarehouseRackMapper.xml | 25 + .../WmsWarehouseRackQuery.java | 13 + .../WmsWarehouseRackService.java | 90 ++ .../wmswarehouserack/WmsWarehouseRackVo.java | 33 + .../WarehousingReservation.java | 38 + .../WarehousingReservationDto.java | 36 + .../WarehousingReservationMapper.java | 17 + .../WarehousingReservationMapper.xml | 17 + .../WarehousingReservationQuery.java | 25 + .../WarehousingReservationService.java | 175 ++++ .../WarehousingReservationVo.java | 43 + .../WarehousingReservationDetail.java | 40 + .../WarehousingReservationDetailDto.java | 35 + .../WarehousingReservationDetailMapper.java | 17 + .../WarehousingReservationDetailMapper.xml | 17 + .../WarehousingReservationDetailQuery.java | 25 + .../WarehousingReservationDetailService.java | 107 +++ .../WarehousingReservationDetailVo.java | 39 + .../biz/inventory/wmsansbill/WmsAnsBill.java | 51 ++ .../inventory/wmsansbill/WmsAnsBillDto.java | 55 ++ .../wmsansbill/WmsAnsBillMapper.java | 24 + .../inventory/wmsansbill/WmsAnsBillMapper.xml | 48 + .../inventory/wmsansbill/WmsAnsBillQuery.java | 37 + .../wmsansbill/WmsAnsBillService.java | 139 +++ .../inventory/wmsansbill/WmsAnsBillVo.java | 53 ++ .../inventory/wmsansbill/WmsAnsDetailsVo.java | 59 ++ .../wmsansbilldetail/WmsAnsBillDetail.java | 47 + .../wmsansbilldetail/WmsAnsBillDetailDto.java | 40 + .../WmsAnsBillDetailMapper.java | 18 + .../WmsAnsBillDetailMapper.xml | 25 + .../WmsAnsBillDetailQuery.java | 13 + .../WmsAnsBillDetailService.java | 29 + .../wmsansbilldetail/WmsAnsBillDetailVo.java | 30 + .../wmsansbilldetail/WmsAnsListDetailsVo.java | 58 ++ .../wmsdistributebill/WmsDistributeBill.java | 38 + .../WmsDistributeBillDto.java | 38 + .../WmsDistributeBillInitVo.java | 42 + .../WmsDistributeBillMapper.java | 13 + .../WmsDistributeBillMapper.xml | 4 + .../WmsDistributeBillQuery.java | 37 + .../WmsDistributeBillService.java | 35 + .../WmsDistributeBillVo.java | 35 + .../WmsDistributeBillDetail.java | 50 ++ .../WmsDistributeBillDetailDto.java | 44 + .../WmsDistributeBillDetailVo.java | 44 + .../wmsinventory/WmsGoodsInventoryVo.java | 20 + .../inventory/wmsinventory/WmsInventory.java | 60 ++ .../wmsinventory/WmsInventoryAgeExportVo.java | 40 + .../wmsinventory/WmsInventoryAgeQuery.java | 26 + .../wmsinventory/WmsInventoryAgeVo.java | 32 + .../WmsInventoryAlloSelectList.java | 39 + .../WmsInventoryAlloSelectQuery.java | 30 + .../WmsInventoryBillListQuery.java | 21 + .../wmsinventory/WmsInventoryBillListVo.java | 53 ++ .../wmsinventory/WmsInventoryDto.java | 48 + .../WmsInventoryHandleSelectList.java | 37 + .../WmsInventoryHandleSelectQuery.java | 26 + .../wmsinventory/WmsInventoryInitVo.java | 49 + .../WmsInventoryInvenSelectList.java | 37 + .../WmsInventoryInvenSelectQuery.java | 30 + .../wmsinventory/WmsInventoryMapper.java | 53 ++ .../wmsinventory/WmsInventoryMapper.xml | 306 +++++++ .../WmsInventoryPackageQuery.java | 28 + .../wmsinventory/WmsInventoryPackageVo.java | 44 + .../wmsinventory/WmsInventoryQuery.java | 32 + .../WmsInventoryReturnSelectList.java | 21 + .../WmsInventoryReturnSelectQuery.java | 30 + .../wmsinventory/WmsInventorySalesQuery.java | 16 + .../wmsinventory/WmsInventorySalesVo.java | 32 + .../wmsinventory/WmsInventorySaveDto.java | 57 ++ .../wmsinventory/WmsInventoryService.java | 472 ++++++++++ .../wmsinventory/WmsInventoryUpdateDto.java | 29 + .../wmsinventory/WmsInventoryUpdatePrice.java | 25 + .../wmsinventory/WmsInventoryVo.java | 45 + .../wmsinventory/WmsInventoryVoExcelVo.java | 54 ++ .../wmsinventory/WmsUpdateCountQuery.java | 17 + .../WmsInventoryAllocateBill.java | 31 + .../WmsInventoryAllocateBillDetailsVoNew.java | 99 +++ .../WmsInventoryAllocateBillDto.java | 45 + .../WmsInventoryAllocateBillDtoNew.java | 59 ++ .../WmsInventoryAllocateBillMapper.java | 20 + .../WmsInventoryAllocateBillMapper.xml | 28 + .../WmsInventoryAllocateBillQuery.java | 13 + .../WmsInventoryAllocateBillQueryNew.java | 30 + .../WmsInventoryAllocateBillService.java | 196 ++++ .../WmsInventoryAllocateBillVo.java | 52 ++ .../WmsInventoryAllocateBillVoNew.java | 56 ++ .../WmsInventoryAllocateBillDetail.java | 41 + .../WmsInventoryAllocateBillDetailDto.java | 45 + .../WmsInventoryAllocateBillDetailDtoNew.java | 62 ++ .../WmsInventoryAllocateBillDetailMapper.java | 27 + .../WmsInventoryAllocateBillDetailMapper.xml | 38 + .../WmsInventoryAllocateBillDetailQuery.java | 13 + ...WmsInventoryAllocateBillDetailService.java | 157 ++++ .../WmsInventoryAllocateBillDetailVo.java | 52 ++ ...ventoryAllocatebillDetailDetailsVoNew.java | 98 ++ .../wmsinventorybatch/WmsInventoryBatch.java | 85 ++ .../WmsInventoryBatchDetailsVo.java | 89 ++ .../WmsInventoryBatchDto.java | 89 ++ .../WmsInventoryBatchMapper.java | 60 ++ .../WmsInventoryBatchMapper.xml | 13 + .../WmsInventoryBatchQuery.java | 87 ++ .../WmsInventoryBatchService.java | 95 ++ .../WmsInventoryBatchVo.java | 89 ++ .../InStorageDetailsQuery.java | 14 + .../wmsinventorybill/InStorageDetailsVo.java | 42 + .../OutStorageDetailsQuery.java | 14 + .../wmsinventorybill/OutStorageDetailsVo.java | 40 + .../wmsinventorybill/WmsInventoryBill.java | 34 + .../wmsinventorybill/WmsInventoryBillDto.java | 40 + .../WmsInventoryBillExcelVo.java | 36 + .../WmsInventoryBillInDto.java | 47 + .../WmsInventoryBillMapper.java | 26 + .../WmsInventoryBillMapper.xml | 77 ++ .../WmsInventoryBillOutDto.java | 42 + .../WmsInventoryBillQuery.java | 25 + .../WmsInventoryBillService.java | 311 +++++++ .../wmsinventorybill/WmsInventoryBillVo.java | 69 ++ .../WmsInventoryBillDetail.java | 91 ++ .../WmsInventoryBillDetailDto.java | 51 ++ .../WmsInventoryBillDetailInDto.java | 52 ++ .../WmsInventoryBillDetailMapper.java | 28 + .../WmsInventoryBillDetailMapper.xml | 95 ++ .../WmsInventoryBillDetailOutDto.java | 64 ++ .../WmsInventoryBillDetailQuery.java | 13 + .../WmsInventoryBillDetailService.java | 186 ++++ .../WmsInventoryBillDetailVo.java | 50 ++ .../WmsInventoryCheckbill.java | 76 ++ .../WmsInventoryCheckbillDetailsVo.java | 85 ++ .../WmsInventoryCheckbillDto.java | 84 ++ .../WmsInventoryCheckbillMapper.java | 60 ++ .../WmsInventoryCheckbillMapper.xml | 13 + .../WmsInventoryCheckbillQuery.java | 60 ++ .../WmsInventoryCheckbillService.java | 142 +++ .../WmsInventoryCheckbillVo.java | 82 ++ .../WmsInventoryCheckbillDetail.java | 76 ++ .../WmsInventoryCheckbillDetailDetailsVo.java | 103 +++ .../WmsInventoryCheckbillDetailDto.java | 103 +++ .../WmsInventoryCheckbillDetailMapper.java | 66 ++ .../WmsInventoryCheckbillDetailMapper.xml | 28 + .../WmsInventoryCheckbillDetailQuery.java | 54 ++ .../WmsInventoryCheckbillDetailService.java | 105 +++ .../WmsInventoryCheckbillDetailVo.java | 54 ++ .../WmsInventoryRecord.java | 102 +++ .../WmsInventoryRecordDetailsVo.java | 103 +++ .../WmsInventoryRecordDto.java | 103 +++ .../WmsInventoryRecordListVo.java | 30 + .../WmsInventoryRecordMapper.java | 85 ++ .../WmsInventoryRecordMapper.xml | 147 +++ .../WmsInventoryRecordQuery.java | 101 +++ .../WmsInventoryRecordService.java | 318 +++++++ .../WmsInventoryRecordVo.java | 103 +++ .../WmsInventoryRecordsExcelVo.java | 66 ++ .../WmsInventoryRecordsQuery.java | 39 + .../WmsInventoryRecordsVo.java | 46 + .../report/WmsInAndOutboundVo.java | 14 + .../report/WmsInventoryCountDetailsVo.java | 18 + .../report/WmsInventoryCountReportQuery.java | 19 + .../report/WmsInventoryCountReportVo.java | 29 + .../WmsInventoryDetailsRecordQuery.java | 24 + .../report/WmsInventoryDetailsRecordVo.java | 43 + .../WmsInventorySettleRecordQuery.java | 18 + .../WmsInventorySettleRecordVo.java | 18 + .../WmsInventorySettlebill.java | 76 ++ .../WmsInventorySettlebillDetailsVo.java | 81 ++ .../WmsInventorySettlebillDto.java | 74 ++ .../WmsInventorySettlebillMapper.java | 71 ++ .../WmsInventorySettlebillMapper.xml | 42 + .../WmsInventorySettlebillQuery.java | 79 ++ .../WmsInventorySettlebillService.java | 157 ++++ .../WmsInventorySettlebillVo.java | 81 ++ .../WmsInventorySettlebillDetail.java | 86 ++ ...WmsInventorySettlebillDetailDetailsVo.java | 95 ++ .../WmsInventorySettlebillDetailDto.java | 95 ++ .../WmsInventorySettlebillDetailMapper.java | 70 ++ .../WmsInventorySettlebillDetailMapper.xml | 60 ++ .../WmsInventorySettlebillDetailQuery.java | 67 ++ .../WmsInventorySettlebillDetailService.java | 130 +++ .../WmsInventorySettlebillDetailVo.java | 72 ++ .../WmsInventorySettlebillExportVo.java | 38 + .../wmsoldinventory/WmsOldInventory.java | 58 ++ .../WmsOldInventoryDetailsListVo.java | 30 + .../WmsOldInventoryDetailsVo.java | 35 + .../wmsoldinventory/WmsOldInventoryDto.java | 41 + .../WmsOldInventoryExcelVo.java | 60 ++ .../WmsOldInventoryInitVo.java | 45 + .../WmsOldInventoryMapper.java | 32 + .../wmsoldinventory/WmsOldInventoryMapper.xml | 132 +++ .../WmsOldInventoryPageListQuery.java | 38 + .../WmsOldInventoryPageListVo.java | 45 + .../wmsoldinventory/WmsOldInventoryQuery.java | 26 + .../WmsOldInventoryRecordList.java | 57 ++ .../WmsOldInventoryRecordListExcelVo.java | 76 ++ .../WmsOldInventoryRecordListQuery.java | 49 + .../WmsOldInventoryService.java | 264 ++++++ .../wmsoldinventory/WmsOldInventoryVo.java | 60 ++ .../wmsoldregister/WmsOldRegister.java | 30 + .../wmsoldregister/WmsOldRegisterDto.java | 32 + .../wmsoldregister/WmsOldRegisterMapper.java | 14 + .../wmsoldregister/WmsOldRegisterMapper.xml | 9 + .../wmsoldregister/WmsOldRegisterQuery.java | 25 + .../wmsoldregister/WmsOldRegisterService.java | 44 + .../wmsoldregister/WmsOldRegisterVo.java | 29 + .../biz/inventory/wmsoutbill/WmsOutBill.java | 45 + .../wmsoutbill/WmsOutBillDetailsVo.java | 39 + .../inventory/wmsoutbill/WmsOutBillDto.java | 41 + .../wmsoutbill/WmsOutBillInventoryQuery.java | 32 + .../wmsoutbill/WmsOutBillInventoryVo.java | 49 + .../wmsoutbill/WmsOutBillMapper.java | 22 + .../inventory/wmsoutbill/WmsOutBillMapper.xml | 53 ++ .../inventory/wmsoutbill/WmsOutBillQuery.java | 31 + .../wmsoutbill/WmsOutBillService.java | 197 ++++ .../inventory/wmsoutbill/WmsOutBillVo.java | 30 + .../wmsoutbilldetail/WmsOutBillDetail.java | 50 ++ .../wmsoutbilldetail/WmsOutBillDetailDto.java | 53 ++ .../WmsOutBillDetailMapper.java | 18 + .../WmsOutBillDetailMapper.xml | 21 + .../WmsOutBillDetailService.java | 31 + .../wmsreceiptbill/WmsReceiptBill.java | 45 + .../wmsreceiptbill/WmsReceiptBillDto.java | 58 ++ .../wmsreceiptbill/WmsReceiptBillDto2.java | 56 ++ .../wmsreceiptbill/WmsReceiptBillInitVo.java | 56 ++ .../wmsreceiptbill/WmsReceiptBillMapper.java | 20 + .../wmsreceiptbill/WmsReceiptBillMapper.xml | 42 + .../wmsreceiptbill/WmsReceiptBillPageVo.java | 40 + .../wmsreceiptbill/WmsReceiptBillQuery.java | 33 + .../wmsreceiptbill/WmsReceiptBillService.java | 220 +++++ .../wmsreceiptbill/WmsReceiptBillVo.java | 52 ++ .../WmsReceiptBillDetail.java | 58 ++ .../WmsReceiptBillDetailDto.java | 55 ++ .../WmsReceiptBillDetailDto2.java | 69 ++ .../WmsReceiptBillDetailMapper.java | 21 + .../WmsReceiptBillDetailMapper.xml | 43 + .../WmsReceiptBillDetailService.java | 73 ++ .../WmsReceiptBillDetailVo.java | 66 ++ .../WmsReceiptBillDetailBatch.java | 30 + .../WmsReceiptBillDetailBatchDto.java | 26 + .../WmsReceiptBillDetailBatchDto2.java | 47 + .../WmsReceiptBillDetailBatchMapper.java | 21 + .../WmsReceiptBillDetailBatchMapper.xml | 25 + .../WmsReceiptBillDetailBatchService.java | 47 + .../WmsReceiptBillDetailBatchVo.java | 34 + .../wmsshelfbill/ShelfDetailsVo.java | 37 + .../inventory/wmsshelfbill/ShelfInitVo.java | 38 + .../inventory/wmsshelfbill/WmsShelfBill.java | 28 + .../wmsshelfbill/WmsShelfBillDto.java | 36 + .../wmsshelfbill/WmsShelfBillMapper.java | 22 + .../wmsshelfbill/WmsShelfBillMapper.xml | 39 + .../wmsshelfbill/WmsShelfBillQuery.java | 23 + .../wmsshelfbill/WmsShelfBillService.java | 263 ++++++ .../wmsshelfbill/WmsShelfBillVo.java | 27 + .../ShelfDetailsListVo.java | 52 ++ .../wmsshelfbilldetail/ShelfInitListVo.java | 49 + .../WmsShelfBillDetail.java | 32 + .../WmsShelfBillDetailDto.java | 55 ++ .../WmsShelfBillDetailMapper.java | 22 + .../WmsShelfBillDetailMapper.xml | 46 + .../WmsShelfBillDetailService.java | 37 + .../WmsShelfBillDetailVos.java | 44 + .../java/com/yxt/wms/biz/package-info.java | 4 + .../main/java/com/yxt/wms/config/config.md | 1 + .../basegoodssku/BaseGoodsSkuDetailsVo.java | 48 + .../base/basegoodssku/BaseGoodsSkuFeign.java | 24 + .../BaseGoodsSkuFeignFallback.java | 17 + .../BaseSupplierInfoDetailsVo.java | 16 + .../BaseSupplierInfoFeign.java | 24 + .../BaseSupplierInfoFeignFallback.java | 18 + .../java/com/yxt/wms/feign/package-info.java | 4 + .../java/com/yxt/wms/utils/DoubleUtils.java | 93 ++ .../src/main/java/com/yxt/wms/utils/Rule.java | 15 + .../java/com/yxt/wms/utils/StyleUtils.java | 89 ++ .../src/main/resources/application-dev.yml | 30 + .../src/main/resources/application-pro.yml | 27 + .../src/main/resources/application-test.yml | 31 + .../src/main/resources/application.yml | 43 + .../src/main/resources/logback-spring.xml | 50 ++ .../com/yxt/wms/YxtWmsApplicationTest.java | 24 + 360 files changed, 21152 insertions(+) create mode 100644 yxt-wms-biz/docs/databases/tables/create_table_base.sql create mode 100644 yxt-wms-biz/docs/databases/tables/create_table_purchase.sql create mode 100644 yxt-wms-biz/docs/databases/tables/create_table_warehouse.sql create mode 100644 yxt-wms-biz/docs/databases/tables/wms.sql create mode 100644 yxt-wms-biz/docs/databases/数据备份/yxt_wms-20240301091036.sql create mode 100644 yxt-wms-biz/docs/databases/数据库文档/supervise_supplychain_2024-03-07_01-45-194.xls create mode 100644 yxt-wms-biz/docs/databases/数据库文档/仓储管理(yxt_wms)1.1.xlsx create mode 100644 yxt-wms-biz/docs/databases/数据库文档/基础信息(yxt_base)1.1.xlsx create mode 100644 yxt-wms-biz/docs/databases/数据库文档/采购管理(yxt_pms)1.1.xlsx create mode 100644 yxt-wms-biz/docs/databases/数据库文档/销售管理(yxt_sms)1.1.xlsx create mode 100644 yxt-wms-biz/docs/sheji/wx20240223.txt create mode 100644 yxt-wms-biz/docs/sheji/仓储、储运与管线.png create mode 100644 yxt-wms-biz/docs/sheji/仓储功能模块.jpg create mode 100644 yxt-wms-biz/docs/sheji/仓储建模.png create mode 100644 yxt-wms-biz/docs/sheji/仓储管理功能开发计划(2024.02-2024.03).xlsx create mode 100644 yxt-wms-biz/docs/sheji/功能权限设计.docx create mode 100644 yxt-wms-biz/docs/sheji/售后服务管理(含仓储管理功能)开发计划(2024.02-2024.03).xlsx create mode 100644 yxt-wms-biz/docs/sheji/宇信通PC前端页面设计与开发规范v1.0.2.docx create mode 100644 yxt-wms-biz/docs/sheji/客户管理思路设计.docx create mode 100644 yxt-wms-biz/docs/sheji/数据权限设计.docx create mode 100644 yxt-wms-biz/docs/sheji/系统表.png create mode 100644 yxt-wms-biz/pom.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/YxtWmsApplication.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/AdminHomeRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaTypeRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseExtendRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseInfoRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationDetailRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsAnsBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsDistributeBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillDetailRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBatchRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillDetailRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillDetailRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRecordRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillDetailRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldInventoryRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldRegisterRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOutBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsReceiptBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/apiwx/WxHomeRest.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseArea.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaAllVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaType.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtend.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoAllVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservation.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsListDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillInitVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsGoodsInventoryVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeExportVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectList.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectList.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInitVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectList.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectList.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySaveDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdateDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdatePrice.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVoExcelVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsUpdateCountQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDetailsVoNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDtoNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQueryNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVoNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDtoNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocatebillDetailDetailsVoNew.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatch.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillExcelVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillInDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillOutDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailInDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailOutDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecord.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsExcelVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInAndOutboundVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillExportVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventory.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryExcelVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryInitVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordList.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListExcelVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegister.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto2.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillInitVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillPageVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatch.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto2.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfInitVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBill.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillQuery.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfDetailsListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfInitListVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetail.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailDto.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailVos.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/package-info.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/config/config.md create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeignFallback.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoDetailsVo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeign.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeignFallback.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/feign/package-info.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/utils/DoubleUtils.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/utils/Rule.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/utils/StyleUtils.java create mode 100644 yxt-wms-biz/src/main/resources/application-dev.yml create mode 100644 yxt-wms-biz/src/main/resources/application-pro.yml create mode 100644 yxt-wms-biz/src/main/resources/application-test.yml create mode 100644 yxt-wms-biz/src/main/resources/application.yml create mode 100644 yxt-wms-biz/src/main/resources/logback-spring.xml create mode 100644 yxt-wms-biz/src/test/java/com/yxt/wms/YxtWmsApplicationTest.java diff --git a/yxt-wms-biz/docs/databases/tables/create_table_base.sql b/yxt-wms-biz/docs/databases/tables/create_table_base.sql new file mode 100644 index 0000000000..52a1043939 --- /dev/null +++ b/yxt-wms-biz/docs/databases/tables/create_table_base.sql @@ -0,0 +1,326 @@ + + +DROP TABLE IF EXISTS `base_goods_spu`; +CREATE TABLE `base_goods_spu` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + + goodsCode varchar(64) DEFAULT NULL COMMENT '商品代码', + barCode varchar(64) DEFAULT NULL COMMENT '条形码', + goodsName varchar(200) DEFAULT NULL COMMENT '商品名称', + goodsPY varchar(64) DEFAULT NULL COMMENT '拼音缩写', + goodsShortName varchar(64) DEFAULT NULL COMMENT '商品简称', + externalCode varchar(64) DEFAULT NULL COMMENT '外部编码', + factoryCode varchar(64) DEFAULT NULL COMMENT '厂家货号', + typeSid varchar(64) DEFAULT NULL COMMENT '分类sid', + isListed int DEFAULT NULL COMMENT '是否上架', + brandSid varchar(64) DEFAULT NULL COMMENT '品牌sid', + manufacturerSid varchar(64) DEFAULT NULL COMMENT '厂家sid', + goodsUnitSid varchar(64) DEFAULT NULL COMMENT '商品单位sid', + goodsModelSid varchar(64) DEFAULT NULL COMMENT '供应商sid', + taxRate decimal(2,2) DEFAULT NULL COMMENT '税率', + shelfLife int DEFAULT NULL COMMENT '保质期天', + nationalStandardCode varchar(64) DEFAULT NULL COMMENT '国标码', + sortNo int DEFAULT NULL COMMENT '排序', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品spu'; + +DROP TABLE IF EXISTS `base_goods_spu_detail`; +CREATE TABLE `base_goods_spu_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + + goodSpuSid varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + goodsExplain text DEFAULT NULL COMMENT '商品详细说明', + goodsDescription varchar(64) DEFAULT NULL COMMENT '商品描述', + length decimal(10,2) DEFAULT NULL COMMENT '长度cm', + width decimal(10,2) DEFAULT NULL COMMENT '宽度cm', + height decimal(10,2) DEFAULT NULL COMMENT '高度cm', + volume decimal(10,2) DEFAULT NULL COMMENT '体积cm3', + picUrl varchar(500) DEFAULT NULL COMMENT '图片', + producer varchar(200) DEFAULT NULL COMMENT '产地', + costPrice decimal(10,2) DEFAULT NULL COMMENT '成本价', + tagPrice decimal(10,2) DEFAULT NULL COMMENT '吊牌价', + salesPrice decimal(10,2) DEFAULT NULL COMMENT '销售单价', + standardPurchasePrice decimal(10,2) DEFAULT NULL COMMENT '标准进价', + agencyPrice decimal(10,2) DEFAULT NULL COMMENT '代理价', + discount decimal(10,2) DEFAULT NULL COMMENT '折扣', + minimumSalesPrice decimal(10,2) DEFAULT NULL COMMENT '最低零售价', + safetyStockDays int DEFAULT NULL COMMENT '安全库存天数', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品详情'; + +DROP TABLE IF EXISTS `base_goods_sku`; +CREATE TABLE `base_goods_sku` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + + goodsSkuCode varchar(64) DEFAULT NULL COMMENT '商品Sku代码', + goodsSkuName varchar(200) DEFAULT NULL COMMENT '商品Sku名称', + goodsSpuSid varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + externalCode varchar(64) DEFAULT NULL COMMENT '外部编码', + length decimal(10,2) DEFAULT NULL COMMENT '长度cm', + width decimal(10,2) DEFAULT NULL COMMENT '宽度cm', + height decimal(10,2) DEFAULT NULL COMMENT '高度cm', + volume decimal(10,2) DEFAULT NULL COMMENT '体积cm3', + colourSid varchar(64) DEFAULT NULL COMMENT '颜色sid', + sizeSid varchar(64) DEFAULT NULL COMMENT '尺码sid', + grossWeight decimal(10,2) DEFAULT NULL COMMENT '毛重g', + netWeight decimal(10,2) DEFAULT NULL COMMENT '净重g', + finalPurchasePrice decimal(10,2) DEFAULT NULL COMMENT '最后采购价', + safetyStockDays int DEFAULT NULL COMMENT '安全库存天数', + isOriginalFactory int DEFAULT NULL COMMENT '是否原厂', + isInventoryAlert int DEFAULT NULL COMMENT '是否库存警戒', + InventoryAlertUpperLimit int DEFAULT NULL COMMENT '库存警戒上线', + InventoryAlertLowerLimit int DEFAULT NULL COMMENT '库存警戒下线', + costPrice decimal(10,2) DEFAULT NULL COMMENT '成本价', + tagPrice decimal(10,2) DEFAULT NULL COMMENT '吊牌价', + salesPrice decimal(10,2) DEFAULT NULL COMMENT '销售单价', + standardPurchasePrice decimal(10,2) DEFAULT NULL COMMENT '标准进价', + agencyPrice decimal(10,2) DEFAULT NULL COMMENT '代理价', + discount decimal(10,2) DEFAULT NULL COMMENT '折扣', + minimumSalesPrice decimal(10,2) DEFAULT NULL COMMENT '最低零售价', + isLockingSalesPrice int DEFAULT NULL COMMENT '是否锁定销售价', + isIntegralExchange int DEFAULT NULL COMMENT '是否可以积分兑换', + integralAmount int DEFAULT NULL COMMENT '积分数量', + sortNo int DEFAULT NULL COMMENT '排序', + picUrl varchar(500) DEFAULT NULL COMMENT '图片', + model varchar(200) DEFAULT NULL COMMENT '型号', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品sku'; + +DROP TABLE IF EXISTS `base_goods_sku_extend`; +CREATE TABLE `base_goods_sku_extend` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +goodsSkuCode varchar(64) DEFAULT NULL COMMENT '商品Sku代码', +component varchar(64) DEFAULT NULL COMMENT '成分', +pattern varchar(64) DEFAULT NULL COMMENT '花纹', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品sku扩展表'; + +DROP TABLE IF EXISTS `base_goods_type`; +CREATE TABLE `base_goods_type` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +goodsTypeName varchar(64) DEFAULT NULL COMMENT '商品类别名称', +goodsTypeCode varchar(64) DEFAULT NULL COMMENT '类别编码', +percentageRate int DEFAULT NULL COMMENT '提成比例', +percentageAmount double(10,2) DEFAULT NULL COMMENT '提成金额', +pSid varchar(64) DEFAULT NULL COMMENT '父级sid', +isGoodsID int DEFAULT NULL COMMENT '是否一品一码(goodID),0否,1是', +sortNo int DEFAULT NULL COMMENT '排序', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品类别'; + + +DROP TABLE IF EXISTS `base_brand_info`; +CREATE TABLE `base_brand_info` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + + brandCode varchar(64) DEFAULT NULL COMMENT '品牌代码', + brandName varchar(64) DEFAULT NULL COMMENT '品牌名称', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品品牌'; + +DROP TABLE IF EXISTS `base_goods_unit`; +CREATE TABLE `base_goods_unit` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +unitName varchar(64) DEFAULT NULL COMMENT '单位名称', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品单位'; + +DROP TABLE IF EXISTS `base_goods_size`; +CREATE TABLE `base_goods_size` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +sizeName varchar(64) DEFAULT NULL COMMENT '尺寸名称', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品尺寸'; + +DROP TABLE IF EXISTS `base_goods_color`; +CREATE TABLE `base_goods_color` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +colorName varchar(64) DEFAULT NULL COMMENT '颜色名称', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品颜色'; + + +DROP TABLE IF EXISTS `base_manufacturer`; +CREATE TABLE `base_manufacturer` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +manufacturerCode varchar(64) DEFAULT NULL COMMENT '厂家名称', +manufacturerName varchar(64) DEFAULT NULL COMMENT '厂家编码', +address varchar(64) DEFAULT NULL COMMENT '地址', +telephone varchar(64) DEFAULT NULL COMMENT '电话', +contacts varchar(64) DEFAULT NULL COMMENT '联系人', +sortNo int DEFAULT NULL COMMENT '排序', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='厂家'; + +DROP TABLE IF EXISTS `base_markuprate_unified`; +CREATE TABLE `base_markuprate_unified` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +level varchar(64) DEFAULT NULL COMMENT '级别名称(客户)', +price double(10,2) DEFAULT NULL COMMENT '对应销售价', +markuprate int DEFAULT NULL COMMENT '加价率', +sortNo int DEFAULT NULL COMMENT '排序', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='统一加价率'; + +DROP TABLE IF EXISTS `base_range_markuprate`; +CREATE TABLE `base_range_markuprate` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +range_start int DEFAULT NULL COMMENT '区间起始', +range_end int DEFAULT NULL COMMENT '区间截止', +markupRate1 int DEFAULT NULL COMMENT '加价率1', +markupRate2 int DEFAULT NULL COMMENT '加价率2', +markupRate3 int DEFAULT NULL COMMENT '加价率3', +markupRate4 int DEFAULT NULL COMMENT '加价率4', +markupRate5 int DEFAULT NULL COMMENT '加价率5', +sortNo int DEFAULT NULL COMMENT '排序 ', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='区间加价率'; + diff --git a/yxt-wms-biz/docs/databases/tables/create_table_purchase.sql b/yxt-wms-biz/docs/databases/tables/create_table_purchase.sql new file mode 100644 index 0000000000..c02957e822 --- /dev/null +++ b/yxt-wms-biz/docs/databases/tables/create_table_purchase.sql @@ -0,0 +1,213 @@ + +DROP TABLE IF EXISTS `wms_purchase_bill`; +CREATE TABLE `wms_purchase_bill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值 0正常,1作废', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +sourceBillSid varchar(64) DEFAULT NULL COMMENT '来源单sid(工单sid)', +sourceBillNo varchar(64) DEFAULT NULL COMMENT '来源单编号', +billNo varchar(64) DEFAULT NULL COMMENT '单据编号', +createDate Varchar(64) DEFAULT NULL COMMENT '单据日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人sid', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +purchaseType varchar(64) DEFAULT NULL COMMENT '采购类型(厂家采购、外采)', +supplierSid varchar(64) DEFAULT NULL COMMENT '供应商sid', +supplierName varchar(64) DEFAULT NULL COMMENT '供应商名称', +supplierPhone varchar(64) DEFAULT NULL COMMENT '供应商联系电话', +billType varchar(64) DEFAULT NULL COMMENT '票据类型(不含税、增值税、普通税、已含增值税)', +markupType varchar(64) DEFAULT NULL COMMENT '加价方式(统一加价率、区间加价率、仓库加价率)', +priceStrategy varchar(64) DEFAULT NULL COMMENT '进价不同时的价格策略(加权平均、分别计价)', +isInvoicing int DEFAULT NULL COMMENT '是否需要开发票(是1,否0)', +invoiceCode varchar(64) DEFAULT NULL COMMENT '发票号码', +tempMarkupRate int DEFAULT NULL COMMENT '临时加价率', +purchaserSid varchar(64) DEFAULT NULL COMMENT '采购员sid(单选)', +purchaserName varchar(64) DEFAULT NULL COMMENT '', +storekeeperSid varchar(64) DEFAULT NULL COMMENT '库管员sid(单选)', +storekeeperName varchar(64) DEFAULT NULL COMMENT '', +errorAmount decimal(10,2) DEFAULT NULL COMMENT '误差调整金额', +freight decimal(10,2) DEFAULT NULL COMMENT '运费', +discountAmount decimal(10,2) DEFAULT NULL COMMENT '优惠金额', +payableAmount decimal(10,2) DEFAULT NULL COMMENT '应付金额(=采购金额+运费-优惠金额)', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购单'; + +DROP TABLE IF EXISTS `wms_purchase_bill_detail`; +CREATE TABLE `wms_purchase_bill_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '单据sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', +specification varchar(64) DEFAULT NULL COMMENT '规格', +goodsModel varchar(64) DEFAULT NULL COMMENT '型号', +currentCount double(10,2) DEFAULT NULL COMMENT '当前库存数量', +unit varchar(64) DEFAULT NULL COMMENT '计量单位', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +position varchar(64) DEFAULT NULL COMMENT '货位', +cost double(10,2) DEFAULT NULL COMMENT '单位成本(进货价)', +count double(10,2) DEFAULT NULL COMMENT '采购数量', +taxAmount double(10,2) DEFAULT NULL COMMENT '税额', +taxPrice double(10,2) DEFAULT NULL COMMENT '含税价', +amount double(10,2) DEFAULT NULL COMMENT '采购金额', +price1 double(10,2) DEFAULT NULL COMMENT '销售价1', +price2 double(10,2) DEFAULT NULL COMMENT '销售价2', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购单据明细'; + +DROP TABLE IF EXISTS `wms_purchase_bill_settle`; +CREATE TABLE `wms_purchase_bill_settle` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '采购单sid', +payableAmount double(10,2) DEFAULT NULL COMMENT '应付金额', +prepaymentdeductAmount double(10,2) DEFAULT NULL COMMENT '预付款抵扣', +settleKey varchar(64) DEFAULT NULL COMMENT '结算方式key', +settleValue varchar(64) DEFAULT NULL COMMENT '结算方式value', +settleAmount double(10,2) DEFAULT NULL COMMENT '结算金额', +otherSettleKey varchar(64) DEFAULT NULL COMMENT '其他结算方式', +otherSettleValue varchar(64) DEFAULT NULL COMMENT '其他结算金额', +debts double(10,2) DEFAULT NULL COMMENT '欠款金额', +settleTime datetime DEFAULT NULL COMMENT '结算时间', +createUserSid varchar(64) DEFAULT NULL COMMENT '结算人sid', +createByName varchar(64) DEFAULT NULL COMMENT '结算人姓名', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购单-结算'; + +DROP TABLE IF EXISTS `wms_purchaseback_bill`; +CREATE TABLE `wms_purchaseback_bill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '0正常,1作废', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +sourceBillSid varchar(64) DEFAULT NULL COMMENT '来源单sid(采购单sid)', +sourceBillNo varchar(64) DEFAULT NULL COMMENT '来源单编号', +billNo varchar(64) DEFAULT NULL COMMENT '单据编号', +createDate varchar(64) DEFAULT NULL COMMENT '单据日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人sid', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +backErrorAmount double(10,2) DEFAULT NULL COMMENT '退误差调整金额', +backDiscountAmount double(10,2) DEFAULT NULL COMMENT '退优惠金额', +deductDebts double(10,2) DEFAULT NULL COMMENT '抵扣欠款', +deductBillNo varchar(64) DEFAULT NULL COMMENT '抵扣单号', +toPrepayment double(10,2) DEFAULT NULL COMMENT '转入预付款', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购退货单据'; + +DROP TABLE IF EXISTS `wms_purchaseback_detail`; +CREATE TABLE `wms_purchaseback_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '单据sid', +goodsStockSid varchar(64) DEFAULT NULL COMMENT '商品库存sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', +specification varchar(64) DEFAULT NULL COMMENT '规格', +goodsModel varchar(64) DEFAULT NULL COMMENT '车型', +currentCount double(10,2) DEFAULT NULL COMMENT '退货后的库存数量', +unit varchar(64) DEFAULT NULL COMMENT '计量单位', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +position varchar(64) DEFAULT NULL COMMENT '货位', +returnedCount double(10,2) DEFAULT NULL COMMENT '已退数量', +backCount double(10,2) DEFAULT NULL COMMENT '退货数量', +maxAmount double(10,2) DEFAULT NULL COMMENT '税额', +maxPrice double(10,2) DEFAULT NULL COMMENT '含税价', +backAmount double(10,2) DEFAULT NULL COMMENT '退货金额', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='采购退货单据明细'; + +DROP TABLE IF EXISTS `wms_supplier`; +CREATE TABLE `wms_supplier` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +supplierName varchar(64) DEFAULT NULL COMMENT '供应商名称', +supplierCode varchar(64) DEFAULT NULL COMMENT '供应商编码(拼音缩写)', +contacts varchar(64) DEFAULT NULL COMMENT '联系人', +mobile varchar(64) DEFAULT NULL COMMENT '联系手机号码', +contactAddress varchar(100) DEFAULT NULL COMMENT '联系地址', +taxpayerNo varchar(64) DEFAULT NULL COMMENT '税号', +bankName varchar(64) DEFAULT NULL COMMENT '开户行', +bankAccount varchar(64) DEFAULT NULL COMMENT '开户行账号', +Address varchar(100) DEFAULT NULL COMMENT '地址、电话', +billType varchar(64) DEFAULT NULL COMMENT '票据类型(不含税、增值税、普通税、已含增值税)', +sortNo int DEFAULT NULL COMMENT '排序号', +initDebts decimal(10,2) DEFAULT NULL COMMENT '期初欠款', +prepayment decimal(10,2) DEFAULT NULL COMMENT '预付款', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='供应商'; + + diff --git a/yxt-wms-biz/docs/databases/tables/create_table_warehouse.sql b/yxt-wms-biz/docs/databases/tables/create_table_warehouse.sql new file mode 100644 index 0000000000..9415c1c28d --- /dev/null +++ b/yxt-wms-biz/docs/databases/tables/create_table_warehouse.sql @@ -0,0 +1,385 @@ + +DROP TABLE IF EXISTS `wms_inventory`; +CREATE TABLE `wms_inventory` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +goodsID varchar(64) DEFAULT NULL COMMENT '商品ID(唯一编码,入库时生成)', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +billSid varchar(64) DEFAULT NULL COMMENT '入库单sid', +billDetailSid varchar(64) DEFAULT NULL COMMENT '入库单明细sid', +price1 decimal(10,2) DEFAULT NULL COMMENT '销售价格1', +price2 decimal(10,2) DEFAULT NULL COMMENT '销售价格2', +price3 decimal(10,2) DEFAULT NULL COMMENT '销售价格3', +price4 decimal(10,2) DEFAULT NULL COMMENT '销售价格4', +price5 decimal(10,2) DEFAULT NULL COMMENT '销售价格5', +unit varchar(64) DEFAULT NULL COMMENT '计量单位', +count decimal(10,2) DEFAULT NULL COMMENT '库存数量', +minimumPrice decimal(10,2) DEFAULT NULL COMMENT '销售底价', +freePrice decimal(10,2) DEFAULT NULL COMMENT '三包价格', +firstMaintainPrice decimal(10,2) DEFAULT NULL COMMENT '首保价格', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +warehouseArea decimal(10,2) DEFAULT NULL COMMENT '货位', +isShowDiscount int DEFAULT NULL COMMENT '是否显示折扣标志', +firstInDate timestamp DEFAULT NULL COMMENT '首次入库日期-计算库龄的依据', +lockCount decimal(10,2) DEFAULT NULL COMMENT '锁定数量,计算字段,出库申请通过,但未实际出库', +sortNo int DEFAULT NULL COMMENT '排序', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='商品库存-台账'; + +DROP TABLE IF EXISTS `wms_inventory_bill`; +CREATE TABLE `wms_inventory_bill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值0正常,1作废;申请-审批中-完成-作废', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +sourceBillSid varchar(64) DEFAULT NULL COMMENT '来源单sid', +billNo varchar(64) DEFAULT NULL COMMENT '单据编号', +billType varchar(64) DEFAULT NULL COMMENT '单据类型(入库、出库)', +createDate varchar(64) DEFAULT NULL COMMENT '单据日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +busTypeKey varchar(64) DEFAULT NULL COMMENT '业务类型key(采购入库、维修出入库、销售出入库等)', +busTypeValue varchar(64) DEFAULT NULL COMMENT '业务类型value(采购入库、维修出入库、销售出入库等)', +warehouseManagerSid varchar(64) DEFAULT NULL COMMENT '库管操作人sid', +warehouseManager varchar(64) DEFAULT NULL COMMENT '库管操作人', +outTime timestamp DEFAULT NULL COMMENT '实际出库时间', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='出入库单据'; + +DROP TABLE IF EXISTS `wms_inventory_bill_detail`; +CREATE TABLE `wms_inventory_bill_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '单据sid', +inventorySid varchar(64) DEFAULT NULL COMMENT '商品库存sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', +specification varchar(64) DEFAULT NULL COMMENT '规格', +goodsModel varchar(64) DEFAULT NULL COMMENT '型号', +currentCount decimal(10,2) DEFAULT NULL COMMENT '出入库后的库存量', +unit varchar(64) DEFAULT NULL COMMENT '计量单位', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +warehouseArea varchar(64) DEFAULT NULL COMMENT '货位', +cost decimal(10,2) DEFAULT NULL COMMENT '单位成本(进货价)', +count decimal(10,2) DEFAULT NULL COMMENT '数量(出库为负)', +taxAmount decimal(10,2) DEFAULT NULL COMMENT '税额(出库为负)', +taxPrice decimal(10,2) DEFAULT NULL COMMENT '含税价(出库为负)', +amount decimal(10,2) DEFAULT NULL COMMENT '金额(出库为负)', +price1 decimal(10,2) DEFAULT NULL COMMENT '销售价1', +price2 decimal(10,2) DEFAULT NULL COMMENT '销售价2', +subjectSid varchar(64) DEFAULT NULL COMMENT '科目sid(出库时)', +subject varchar(64) DEFAULT NULL COMMENT '科目(出库时)', +operTime timestamp DEFAULT NULL COMMENT '操作时间', +operUserSid varchar(64) DEFAULT NULL COMMENT '操作人', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='单据明细'; + +DROP TABLE IF EXISTS `wms_inventory_checkbill`; +CREATE TABLE `wms_inventory_checkbill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billNo varchar(64) DEFAULT NULL COMMENT '单据编号', +createDate varchar(64) DEFAULT NULL COMMENT '制单日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人sid', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +checkType varchar(64) DEFAULT NULL COMMENT '盘点类型', +checkState decimal(10,2) DEFAULT NULL COMMENT '盘点状态(盘点中1,盘点完成2)', +profitCount decimal(10,2) DEFAULT NULL COMMENT '盘盈数量', +profitAmount decimal(10,2) DEFAULT NULL COMMENT '盘盈金额', +lossCount decimal(10,2) DEFAULT NULL COMMENT '盘亏数量', +lossAmount decimal(10,2) DEFAULT NULL COMMENT '盈亏金额', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='库存盘点'; + +DROP TABLE IF EXISTS `wms_inventory_checkbill_detail`; +CREATE TABLE `wms_inventory_checkbill_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值状态(0正常、2盘亏、1盘盈)', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '盘点单sid', +inventorySid varchar(64) DEFAULT NULL COMMENT '商品库存sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', +goodsModel varchar(64) DEFAULT NULL COMMENT '型号', +unit varchar(64) DEFAULT NULL COMMENT '单位', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库', +warehouseArea varchar(64) DEFAULT NULL COMMENT '货位', +taxPrice decimal(10,2) DEFAULT NULL COMMENT '含税价', +bookCount decimal(10,2) DEFAULT NULL COMMENT '账面数量', +realCount decimal(10,2) DEFAULT NULL COMMENT '实盘数量', +profitandlossNumber decimal(10,2) DEFAULT NULL COMMENT '盈亏数( |实盘数量-账面数量|)', +profitandlossAmount decimal(10,2) DEFAULT NULL COMMENT '盈亏金额(盈亏数*含税价)', +picUrl varchar(1000) DEFAULT NULL COMMENT '现场照片(多张中间用英文逗号分隔)', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='库存盘点-明细'; + +DROP TABLE IF EXISTS `wms_inventory_allocatebill`; +CREATE TABLE `wms_inventory_allocatebill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值状态(未完成0、已完成1)', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billNo varchar(64) DEFAULT NULL COMMENT '单据编号', +createDate varchar(64) DEFAULT NULL COMMENT '制单日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人sid', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +outOrgSid varchar(64) DEFAULT NULL COMMENT '调出分公司sid', +inOrgSid varchar(64) DEFAULT NULL COMMENT '调入分公司sid', +count decimal(10,2) DEFAULT NULL COMMENT '调拨数量', +amount decimal(10,2) DEFAULT NULL COMMENT '调拨金额', +confirmSid varchar(64) DEFAULT NULL COMMENT '确认人sid', +confirmName varchar(64) DEFAULT NULL COMMENT '确认人姓名', +finishTime timestamp DEFAULT NULL COMMENT '完成时间', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='(调拨单)-调出方操作'; + +DROP TABLE IF EXISTS `wms_inventory_allocatebill_detail`; +CREATE TABLE `wms_inventory_allocatebill_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '盘点单sid', +inventorySid varchar(64) DEFAULT NULL COMMENT '商品库存sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', +specification varchar(64) DEFAULT NULL COMMENT '规格', +goodsModel varchar(64) DEFAULT NULL COMMENT '车型', +unit varchar(64) DEFAULT NULL COMMENT '单位', +outWarehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +outWarehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +warehouseAreasid varchar(64) DEFAULT NULL COMMENT '货位sid', +warehouseArea varchar(64) DEFAULT NULL COMMENT '货位名称', +taxPrice decimal(10,2) DEFAULT NULL COMMENT '含税价', +stockCount decimal(10,2) DEFAULT NULL COMMENT '库存数量', +inWarehouseSid varchar(64) DEFAULT NULL COMMENT '调入仓库sid', +inWarehouseName varchar(64) DEFAULT NULL COMMENT '调入货位', +count decimal(10,2) DEFAULT NULL COMMENT '调拨数量', +amount decimal(10,2) DEFAULT NULL COMMENT '调拨金额(调拨数量*含税价)', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='(调拨单-明细)'; + +DROP TABLE IF EXISTS `wms_inventory_settlebill`; +CREATE TABLE `wms_inventory_settlebill` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billNo varchar(64) DEFAULT NULL COMMENT '结算单编号', +createDate varchar(64) DEFAULT NULL COMMENT '制单日期', +createUserSid varchar(64) DEFAULT NULL COMMENT '制单人sid', +createByName varchar(64) DEFAULT NULL COMMENT '制单人姓名', +settleState int DEFAULT NULL COMMENT '库存结算状态(1进行中 2已完成)', +settleType int DEFAULT NULL COMMENT '库存结算类型(1月结 2年结)', +settle_startTime timestamp DEFAULT NULL COMMENT '开始时间', +settle_endTime timestamp DEFAULT NULL COMMENT '结束时间', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='库存结算单'; + +DROP TABLE IF EXISTS `wms_inventory_settlebill_detail`; +CREATE TABLE `wms_inventory_settlebill_detail` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +billSid varchar(64) DEFAULT NULL COMMENT '结算单sid', +settleType timestamp DEFAULT NULL COMMENT '库存结算类型(1月结 2年结)', +inventorySid varchar(64) DEFAULT NULL COMMENT '商品库存sid', +goodsSid varchar(64) DEFAULT NULL COMMENT '商品sid', +goodsCode varchar(64) DEFAULT NULL COMMENT '商品编码', +goodsName varchar(64) DEFAULT NULL COMMENT '商品名称', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +warehouseCode varchar(64) DEFAULT NULL COMMENT '仓库编码', +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +warehouseAreasid varchar(64) DEFAULT NULL COMMENT '货位sid', +warehouseAreaCode varchar(64) DEFAULT NULL COMMENT '货位编码', +warehouseAreaName varchar(64) DEFAULT NULL COMMENT '货位名称', +preBalance decimal(10,2) DEFAULT NULL COMMENT '上期结存', +currentBalance decimal(10,2) DEFAULT NULL COMMENT '本期结存', +currentEnter decimal(10,2) DEFAULT NULL COMMENT '本期入库', +currentOut decimal(10,2) DEFAULT NULL COMMENT '本期出库', +currentCheck decimal(10,2) DEFAULT NULL COMMENT '本期盘点', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='库存结算明细'; + + + +DROP TABLE IF EXISTS `base_warehouse`; +CREATE TABLE `base_warehouse` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +warehouseName varchar(64) DEFAULT NULL COMMENT '仓库名称', +warehouseCode varchar(64) DEFAULT NULL COMMENT '仓库编码', +addr varchar(255) DEFAULT NULL COMMENT '具体地址', +manager varchar(64) DEFAULT NULL COMMENT '仓库管理员', +markupRate1 int DEFAULT NULL COMMENT '加价率1', +markupRate2 int DEFAULT NULL COMMENT '加价率2', +markupRate3 int DEFAULT NULL COMMENT '加价率3', +markupRate4 int DEFAULT NULL COMMENT '加价率4', +markupRate5 int DEFAULT NULL COMMENT '加价率5', +warehouseType int DEFAULT NULL COMMENT '仓库类型(0正常库、1旧件库等)', +sortNo int DEFAULT NULL COMMENT '排序', +useOrgSid varchar(64) DEFAULT NULL COMMENT '使用组织sid', +createOrgSid varchar(64) DEFAULT NULL COMMENT '创建组织sid', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='仓库'; + +DROP TABLE IF EXISTS `base_warehouse_area`; +CREATE TABLE `base_warehouse_area` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +areaName varchar(64) DEFAULT NULL COMMENT '库位名称', +areanCode varchar(64) DEFAULT NULL COMMENT '库位编码', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid', +volume double(10,2) DEFAULT NULL COMMENT '库位容量', +unit varchar(64) DEFAULT NULL COMMENT '计量单位', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='库区'; + +DROP TABLE IF EXISTS `base_warehouse_rack`; +CREATE TABLE `base_warehouse_rack` ( + `id` INT(32) NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` VARCHAR(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` INT(32) NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` INT(11) NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` INT(32) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` INT(32) NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` VARCHAR(255) NULL DEFAULT NULL COMMENT '备注信息', + `createBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '创建者', + `updateBySid` VARCHAR(64) NULL DEFAULT NULL COMMENT '更新者', + +rackName varchar(64) DEFAULT NULL COMMENT '货架名称', +rackCode varchar(64) DEFAULT NULL COMMENT '货架编码', +warehouseSid varchar(64) DEFAULT NULL COMMENT '仓库sid ', +locationSid varchar(64) DEFAULT NULL COMMENT '库位sid ', + + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB COMMENT='货架'; \ No newline at end of file diff --git a/yxt-wms-biz/docs/databases/tables/wms.sql b/yxt-wms-biz/docs/databases/tables/wms.sql new file mode 100644 index 0000000000..1dd6d6c023 --- /dev/null +++ b/yxt-wms-biz/docs/databases/tables/wms.sql @@ -0,0 +1,507 @@ +DROP TABLE IF EXISTS `wms_inventory`; +CREATE TABLE `wms_inventory` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '1正常、0作废,申请-审批中-完成-作废', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `batchNumber` varchar(64) DEFAULT NULL COMMENT '批次号', + `goodsID` varchar(64) DEFAULT NULL COMMENT '商品ID(唯一编码,入库时生成)', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品Sku名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `count` decimal(10, 0) DEFAULT NULL COMMENT '库存数量', + `allocateCount` decimal(10, 2) DEFAULT NULL COMMENT '分配量', + `pickCount` decimal(10, 2) DEFAULT NULL COMMENT '拣货量', + `freezeCount` decimal(10, 2) DEFAULT NULL COMMENT '冻结量', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseRackSid` varchar(64) DEFAULT NULL COMMENT '库位sid', + `warehouseRackCode` varchar(64) DEFAULT NULL COMMENT '库位编码', + `firstInDate` timestamp null DEFAULT NULL COMMENT '首次入库日期-计算库龄的依据', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='商品库存/台账'; + +-- 预期到货通知单 +DROP TABLE IF EXISTS `wms_ans_bill`; +CREATE TABLE `wms_ans_bill` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '外部单号(业务单据编号)', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `busTypeKey` varchar(64) DEFAULT NULL COMMENT '业务类型key(采购预约、调拨预约、其他预约)', + `busTypeValue` varchar(64) DEFAULT NULL COMMENT '业务类型value(采购预约、调拨预约、其他预约)', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `billState` int(32) DEFAULT NULL COMMENT '货物状态(在途、部分收货、已收货、已取消)', + `reviewStatus` varchar(64) DEFAULT NULL COMMENT '审核状态(待审核、审核通过、审核拒绝)', + `refuseReason` varchar(64) DEFAULT NULL COMMENT '拒绝原因', + `contact` varchar(64) DEFAULT NULL COMMENT '联系人', + `mobile` varchar(64) DEFAULT NULL COMMENT '联系人手机', + `supplierSid` varchar(64) DEFAULT NULL COMMENT '供应商sid', + `supplierName` varchar(64) DEFAULT NULL COMMENT '供应商名称', + `goodsOwnerSid` varchar(64) DEFAULT NULL COMMENT '货主sid', + `goodsOwner` varchar(64) DEFAULT NULL COMMENT '货主', + `deliveryDate` timestamp null DEFAULT NULL COMMENT '预计到货日期', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='预期到货通知单'; + +-- 预期到货通知单 货物明细 +DROP TABLE IF EXISTS `wms_ans_bill_detail`; +CREATE TABLE `wms_ans_bill_detail` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `cost` decimal(10, 2) DEFAULT NULL COMMENT '单位成本(采购价)', + `orderCount` decimal(10, 2) DEFAULT NULL COMMENT '预约数量(采购订单数量)', + `waitInCount` int(32) DEFAULT NULL COMMENT '待入库数量-根据收货单计算', + `actualInCount` int(32) DEFAULT NULL COMMENT '实际入库数量-根据收货单计算', + `taxAmount` decimal(10, 2) DEFAULT NULL COMMENT '税额', + `taxPrice` decimal(10, 2) DEFAULT NULL COMMENT '含税价', + `amount` decimal(10, 2) DEFAULT NULL COMMENT '金额', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='预期到货通知单-货物明细'; + +-- 收货单据 +DROP TABLE IF EXISTS `wms_receipt_bill`; +CREATE TABLE `wms_receipt_bill` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid(asn单sid)', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单号(asn单号)', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `busTypeKey` varchar(64) DEFAULT NULL COMMENT '业务类型key(采购入库、销售退库等)', + `busTypeValue` varchar(64) DEFAULT NULL COMMENT '业务类型value(采购入库、销售退库等)', + `supplierSid` varchar(64) DEFAULT NULL COMMENT '供应商sid', + `supplierName` varchar(64) DEFAULT NULL COMMENT '供应商名称', + `goodsOwnerSid` varchar(64) DEFAULT NULL COMMENT '货主sid', + `goodsOwner` varchar(64) DEFAULT NULL COMMENT '货主', + `deliveryDate` timestamp null DEFAULT NULL COMMENT '到货日期', + `billState` int(32) DEFAULT NULL COMMENT '待收货/部分收货/已收货(默认)', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='收货单据'; + + +DROP TABLE IF EXISTS `wms_receipt_bill_detail`; +CREATE TABLE `wms_receipt_bill_detail` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品Sku名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品sku编码', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseRackSid` varchar(64) DEFAULT NULL COMMENT '库位sid', + `warehouseRackName` varchar(64) DEFAULT NULL COMMENT '库位名称', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `orderCount` decimal(10, 2) DEFAULT NULL COMMENT '预约数量', + `actualInCount` decimal(10, 2) DEFAULT NULL COMMENT '实收数量', + `rejectCount` decimal(10, 2) DEFAULT NULL COMMENT '拒收数量', + `rejectReason` varchar(64) DEFAULT NULL COMMENT '拒收原因', + `receivingGoodsTime` timestamp null DEFAULT NULL COMMENT '收货时间', + `isQuality` int(32) DEFAULT NULL COMMENT '是否需要质检(不需要0,需要1)', + `qualityState` int(32) DEFAULT NULL COMMENT '质检状态(合格0,不合格1)', + `packageRemark` varchar(200) DEFAULT NULL COMMENT '载具说明', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='收货单据-明细'; + +-- 批次属性 +DROP TABLE IF EXISTS `wms_receipt_bill_detail_batch`; +CREATE TABLE `wms_receipt_bill_detail_batch` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `detailSid` varchar(64) DEFAULT NULL COMMENT '收货明细sid', + `batchNumber` varchar(64) DEFAULT NULL COMMENT '批次号(收货日期+有效日期,如240320-241009)', + `batchCount` decimal(10, 0) DEFAULT NULL COMMENT '数量', + `manufactureDate` timestamp null DEFAULT NULL COMMENT '生产日期', + `expirationDate` timestamp null DEFAULT NULL COMMENT '有效期(根据spu中有效天数、生产日期计算)', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='批次属性'; + + +-- 上架单 +DROP TABLE IF EXISTS `wms_shelf_bill`; +CREATE TABLE `wms_shelf_bill` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid(收货单sid)', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单号(收货单号)', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `billState` int(64) DEFAULT '0' COMMENT '0新建1已完成', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='上架单'; + + +-- 上架单明细 +DROP TABLE IF EXISTS `wms_shelf_bill_detail`; +CREATE TABLE `wms_shelf_bill_detail` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `receiptDetailSid` varchar(64) DEFAULT NULL COMMENT '收货单明细sid', + `batchNumber` varchar(64) DEFAULT NULL COMMENT '批次号(入库日期+有效日期,如240320-241009)', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '库存sid', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseRackSid` varchar(64) DEFAULT NULL COMMENT '库位Sid', + `warehouseRackCode` varchar(64) DEFAULT NULL COMMENT '库位编号', + `count` decimal(10, 2) DEFAULT NULL COMMENT '上架数量', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='上架单明细'; + +-- 出库单据 +DROP TABLE IF EXISTS `wms_out_bill`; +CREATE TABLE `wms_out_bill` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单号', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `busTypeKey` varchar(64) DEFAULT NULL COMMENT '业务类型key', + `busTypeValue` varchar(64) DEFAULT NULL COMMENT '业务类型value((销售出库、采购退货出库等))', + `goodsOwnerSid` varchar(64) DEFAULT NULL COMMENT '货主sid', + `goodsOwner` varchar(64) DEFAULT NULL COMMENT '货主', + `billState` int(32) DEFAULT NULL COMMENT '已完成/已发货', + `isTogether` int(32) DEFAULT NULL COMMENT '是否一起发货(否0,是1)', + `isHandUp` int(32) DEFAULT NULL COMMENT '挂起状态(1挂起,0不挂起,2解锁)', + `priority` int(32) DEFAULT NULL COMMENT '优先级', + `actualDeliveTime` timestamp null DEFAULT NULL COMMENT '实际发货时间', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='出库单据'; + +-- 出库单明细 +DROP TABLE IF EXISTS `wms_out_bill_detail`; +CREATE TABLE `wms_out_bill_detail` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品Sku名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品sku编码', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `orderCount` decimal(10, 2) DEFAULT NULL COMMENT '订单数量', + `remainingCount` decimal(10, 2) DEFAULT NULL COMMENT '未结数量', + `adjustCount` decimal(10, 2) DEFAULT NULL COMMENT '调整数量', + `distributeCount` decimal(10, 2) DEFAULT NULL COMMENT '分配数量', + `deliveryCount` decimal(10, 2) DEFAULT NULL COMMENT '发货数量', + `billState` int(32) DEFAULT NULL COMMENT '状态(新建/已发货完成、部分分配、全部分配等)', + `deliveTime` timestamp null DEFAULT NULL COMMENT '发货时间', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='出库单-明细'; + +-- 配货单据 +DROP TABLE IF EXISTS `wms_distribute_bill`; +CREATE TABLE `wms_distribute_bill` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '出库单sid', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单号(出库单)', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `billState` int(32) DEFAULT NULL COMMENT '配货中/已发货', + `isHandUp` int(32) DEFAULT NULL COMMENT '挂起状态(1挂起,0不挂起,2解锁)', + `priority` int(32) DEFAULT NULL COMMENT '优先级', + `actualDeliveTime` timestamp null DEFAULT NULL COMMENT '实际发货时间', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='配货单据'; + +-- 配货单明细 +DROP TABLE IF EXISTS `wms_distribute_bill_detail`; +CREATE TABLE `wms_distribute_bill_detail` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `outBillDetailSid` varchar(64) DEFAULT NULL COMMENT '出库单明细sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品Sku名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品sku编码', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '库存sid', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseRackSid` varchar(64) DEFAULT NULL COMMENT '库位sid', + `warehouseRackCode` varchar(64) DEFAULT NULL COMMENT '库位编号', + `distributeCount` decimal(10, 2) DEFAULT NULL COMMENT '配货数量', + `deliveryCount` decimal(10, 2) DEFAULT NULL COMMENT '发货数量', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='配货单明细'; + + +-- 出入库记录 +DROP TABLE IF EXISTS `wms_inventory_record`; +CREATE TABLE `wms_inventory_record` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '库存sid', + `goodsID` varchar(64) DEFAULT NULL COMMENT '商品ID', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid(业务单sid)', + `billNo` varchar(64) DEFAULT NULL COMMENT '来源单据编号', + `billType` varchar(64) DEFAULT NULL COMMENT '单据类型(1入库、0出库)', + `busTypeKey` varchar(64) DEFAULT NULL COMMENT '业务类型key', + `busTypeValue` varchar(64) DEFAULT NULL COMMENT '业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)', + `billObjSid` varchar(64) DEFAULT NULL COMMENT '客户/供应商sid,出库是为客户,入库时为供应商', + `billObjName` varchar(64) DEFAULT NULL COMMENT '客户/供应商名称', + `batchNumber` varchar(64) DEFAULT NULL COMMENT '批次号', + `goodSpuSid` varchar(64) DEFAULT NULL COMMENT '商品基础信息Sid', + `goodsSpuName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuSid` varchar(64) DEFAULT NULL COMMENT '商品Skusid', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品Sku名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格型号', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseRackSid` varchar(64) DEFAULT NULL COMMENT '库位sid', + `warehouseRackCode` varchar(64) DEFAULT NULL COMMENT '库位编号', + `currentCount` decimal(10, 2) DEFAULT NULL COMMENT '出入库后的库存量', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `count` decimal(10, 2) DEFAULT NULL COMMENT '数量', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='配货单明细'; + +DROP TABLE IF EXISTS `wms_old_register`; +CREATE TABLE `wms_old_register` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `billNo` varchar(64) DEFAULT NULL COMMENT '维修工单编号', + `billTime` varchar(64) DEFAULT NULL COMMENT '工单创建日期', + `customerName` varchar(64) DEFAULT NULL COMMENT '客户名称', + `customerSid` varchar(64) DEFAULT NULL COMMENT '客户sid', + `vehMark` varchar(64) DEFAULT NULL COMMENT '车牌号', + `vinNo` varchar(64) DEFAULT NULL COMMENT '车架号', + `shortss` text DEFAULT NULL COMMENT '旧件回收说明', + `photos` text DEFAULT NULL COMMENT '旧件照片', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='旧件回收登记'; + + +DROP TABLE IF EXISTS `wms_old_inventory`; +CREATE TABLE `wms_old_inventory` +( + `id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id', + `sid` varchar(64) NOT NULL COMMENT 'sid', + `lockVersion` int(32) DEFAULT '0' COMMENT '版本锁', + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用', + `state` int(32) DEFAULT '1' COMMENT '状态', + `isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid', + `goodsID` varchar(64) DEFAULT NULL COMMENT '商品ID', + `goodsSkuTitle` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsSkuCode` varchar(64) DEFAULT NULL COMMENT '商品编码', + `manufacturerName` varchar(64) DEFAULT NULL COMMENT '厂家', + `goodsSkuOwnSpec` varchar(64) DEFAULT NULL COMMENT '规格', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `count` varchar(64) DEFAULT NULL COMMENT '数量', + `inCount` varchar(64) DEFAULT NULL COMMENT '已入库数量', + `billNo` varchar(64) DEFAULT NULL COMMENT '维修工单编号', + `customerName` varchar(64) DEFAULT NULL COMMENT '客户名称', + `vehMark` varchar(64) DEFAULT NULL COMMENT '车牌号', + `vinNo` varchar(64) DEFAULT NULL COMMENT '车架号', + `shortss` text DEFAULT NULL COMMENT '旧件回收说明', + `photos` text DEFAULT NULL COMMENT '旧件照片', + PRIMARY KEY (`id`), + KEY `id` (`id`) +) ENGINE = INNODB + DEFAULT CHARSET = utf8 COMMENT ='待入库旧件'; + + diff --git a/yxt-wms-biz/docs/databases/数据备份/yxt_wms-20240301091036.sql b/yxt-wms-biz/docs/databases/数据备份/yxt_wms-20240301091036.sql new file mode 100644 index 0000000000..38c918b313 --- /dev/null +++ b/yxt-wms-biz/docs/databases/数据备份/yxt_wms-20240301091036.sql @@ -0,0 +1,841 @@ +-- -------------------------------------------------------- +-- 主机: 39.104.100.138 +-- 服务器版本: 8.0.30 - MySQL Community Server - GPL +-- 服务器操作系统: Linux +-- HeidiSQL 版本: 12.6.0.6765 +-- -------------------------------------------------------- + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + + +-- 导出 yxt_wms 的数据库结构 +CREATE DATABASE IF NOT EXISTS `yxt_wms` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */; +USE `yxt_wms`; + +-- 导出 表 yxt_wms.wms_goods 结构 +DROP TABLE IF EXISTS `wms_goods`; +CREATE TABLE IF NOT EXISTS `wms_goods` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `barCode` varchar(64) DEFAULT NULL COMMENT '条形码', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `goodsPY` varchar(64) DEFAULT NULL COMMENT '拼音缩写', + `goodsTypeSid` varchar(64) DEFAULT NULL COMMENT '商品分类sid', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `goodsModelSid` varchar(64) DEFAULT NULL COMMENT '商品型号sid', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '商品型号', + `specification` varchar(64) DEFAULT NULL COMMENT '规格', + `brandSid` varchar(64) DEFAULT NULL COMMENT '品牌sid', + `brand` varchar(64) DEFAULT NULL COMMENT '品牌', + `manufacturerSid` varchar(64) DEFAULT NULL COMMENT '厂家sid', + `manufacturer` varchar(64) DEFAULT NULL COMMENT '厂家', + `producer` varchar(64) DEFAULT NULL COMMENT '产地', + `validityDays` int DEFAULT NULL COMMENT '有效期天数', + `picUrl` varchar(500) DEFAULT NULL COMMENT '图片', + `sortNo` int DEFAULT NULL COMMENT '排序', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='商品基础信息'; + +-- 正在导出表 yxt_wms.wms_goods 的数据:~0 rows (大约) +INSERT INTO `wms_goods` (`id`, `sid`, `lockVersion`, `createTime`, `modifyTime`, `state`, `isEnable`, `isDelete`, `remarks`, `createBySid`, `updateBySid`, `barCode`, `goodsName`, `goodsCode`, `goodsPY`, `goodsTypeSid`, `unit`, `goodsModelSid`, `goodsModel`, `specification`, `brandSid`, `brand`, `manufacturerSid`, `manufacturer`, `producer`, `validityDays`, `picUrl`, `sortNo`) VALUES + (1, '079c7d2a-fad0-4017-8af3-8be033e6304b', 0, '2024-02-29 06:08:15', '2024-02-29 06:08:15', 1, 1, 0, NULL, NULL, NULL, '8', '表所家', '87', 'elit adipisicing laborum', '11', 'in occaecat voluptate do eu', '61', NULL, 'pariatur fugiat', '70', NULL, '30', NULL, 'fugiat ullamco', 54, '', 1), + (2, '3c70386e-a726-47f0-ba70-a60665bc8b7f', 0, '2024-02-29 06:22:01', '2024-02-29 06:22:01', 1, 1, 0, NULL, NULL, NULL, '91', '件第后信同往须', '71', 'sit', '42', 'reprehenderit culpa exercitation velit', '32', NULL, 'sit sed consectetur', '13', NULL, '63', NULL, 'commodo labore', 74, '', 1); + +-- 导出 表 yxt_wms.wms_goods_brand 结构 +DROP TABLE IF EXISTS `wms_goods_brand`; +CREATE TABLE IF NOT EXISTS `wms_goods_brand` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `name` varchar(100) DEFAULT NULL COMMENT '品牌名称', + `logo` varchar(1024) DEFAULT NULL COMMENT '品牌logo', + `bigPic` varchar(1024) DEFAULT NULL COMMENT '专区大图', + `brandStory` text COMMENT '品牌故事', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品品牌'; + +-- 正在导出表 yxt_wms.wms_goods_brand 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_goods_other 结构 +DROP TABLE IF EXISTS `wms_goods_other`; +CREATE TABLE IF NOT EXISTS `wms_goods_other` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `isOriginalLogo` int DEFAULT NULL COMMENT '是否有原厂标志', + `figure` varchar(64) DEFAULT NULL COMMENT '花纹', + `materialCode` varchar(64) DEFAULT NULL COMMENT '材料编码', + `isWarning` int DEFAULT NULL COMMENT '是否库存预警', + `maximum` int DEFAULT NULL COMMENT '上限数量', + `minimum` int DEFAULT NULL COMMENT '下限数量', + `isScore` int DEFAULT NULL COMMENT '是否积分', + `islockPrice` int DEFAULT NULL COMMENT '是否锁定销售价', + `useScore` int DEFAULT NULL COMMENT '所需积分', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品其他信息'; + +-- 正在导出表 yxt_wms.wms_goods_other 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_goods_type 结构 +DROP TABLE IF EXISTS `wms_goods_type`; +CREATE TABLE IF NOT EXISTS `wms_goods_type` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `goodsTypeName` varchar(64) DEFAULT NULL COMMENT '商品类别名称', + `goodsTypeCode` varchar(64) DEFAULT NULL COMMENT '类别编码', + `percentageRate` int DEFAULT NULL COMMENT '提成比例', + `percentageAmount` double(10,2) DEFAULT NULL COMMENT '提成金额', + `pSid` varchar(64) DEFAULT NULL COMMENT '父级sid', + `isGoodsID` int DEFAULT NULL COMMENT '是否一品一码(goodID),0否,1是', + `sortNo` int DEFAULT NULL COMMENT '排序', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='商品类别'; + +-- 正在导出表 yxt_wms.wms_goods_type 的数据:~1 rows (大约) +INSERT INTO `wms_goods_type` (`id`, `sid`, `lockVersion`, `createTime`, `modifyTime`, `state`, `isEnable`, `isDelete`, `remarks`, `createBySid`, `updateBySid`, `goodsTypeName`, `goodsTypeCode`, `percentageRate`, `percentageAmount`, `pSid`, `isGoodsID`, `sortNo`, `useOrgSid`, `createOrgSid`) VALUES + (1, '2ca961b0-0d65-4380-952e-569cd80b3eb5', 0, '2024-02-29 06:27:26', '2024-02-29 06:27:26', 1, 1, 0, NULL, NULL, NULL, '清立导白度', '78', 85, 73.07, NULL, 42, 90, '36', '54'); + +-- 导出 表 yxt_wms.wms_inventory 结构 +DROP TABLE IF EXISTS `wms_inventory`; +CREATE TABLE IF NOT EXISTS `wms_inventory` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `goodsID` varchar(64) DEFAULT NULL COMMENT '商品ID(唯一编码,入库时生成)', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `billSid` varchar(64) DEFAULT NULL COMMENT '入库单sid', + `billDetailSid` varchar(64) DEFAULT NULL COMMENT '入库单明细sid', + `price1` decimal(10,2) DEFAULT NULL COMMENT '销售价格1', + `price2` decimal(10,2) DEFAULT NULL COMMENT '销售价格2', + `price3` decimal(10,2) DEFAULT NULL COMMENT '销售价格3', + `price4` decimal(10,2) DEFAULT NULL COMMENT '销售价格4', + `price5` decimal(10,2) DEFAULT NULL COMMENT '销售价格5', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `count` decimal(10,2) DEFAULT NULL COMMENT '库存数量', + `minimumPrice` decimal(10,2) DEFAULT NULL COMMENT '销售底价', + `freePrice` decimal(10,2) DEFAULT NULL COMMENT '三包价格', + `firstMaintainPrice` decimal(10,2) DEFAULT NULL COMMENT '首保价格', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseArea` decimal(10,2) DEFAULT NULL COMMENT '货位', + `isShowDiscount` int DEFAULT NULL COMMENT '是否显示折扣标志', + `firstInDate` timestamp NULL DEFAULT NULL COMMENT '首次入库日期-计算库龄的依据', + `lockCount` decimal(10,2) DEFAULT NULL COMMENT '锁定数量,计算字段,出库申请通过,但未实际出库', + `sortNo` int DEFAULT NULL COMMENT '排序', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品库存-台账'; + +-- 正在导出表 yxt_wms.wms_inventory 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_allocatebill 结构 +DROP TABLE IF EXISTS `wms_inventory_allocatebill`; +CREATE TABLE IF NOT EXISTS `wms_inventory_allocatebill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值状态(未完成0、已完成1)', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createDate` varchar(64) DEFAULT NULL COMMENT '制单日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `outOrgSid` varchar(64) DEFAULT NULL COMMENT '调出分公司sid', + `inOrgSid` varchar(64) DEFAULT NULL COMMENT '调入分公司sid', + `count` decimal(10,2) DEFAULT NULL COMMENT '调拨数量', + `amount` decimal(10,2) DEFAULT NULL COMMENT '调拨金额', + `confirmSid` varchar(64) DEFAULT NULL COMMENT '确认人sid', + `confirmName` varchar(64) DEFAULT NULL COMMENT '确认人姓名', + `finishTime` timestamp NULL DEFAULT NULL COMMENT '完成时间', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='(调拨单)-调出方操作'; + +-- 正在导出表 yxt_wms.wms_inventory_allocatebill 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_allocatebill_detail 结构 +DROP TABLE IF EXISTS `wms_inventory_allocatebill_detail`; +CREATE TABLE IF NOT EXISTS `wms_inventory_allocatebill_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '盘点单sid', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '商品库存sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `specification` varchar(64) DEFAULT NULL COMMENT '规格', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '车型', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `outWarehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `outWarehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseAreasid` varchar(64) DEFAULT NULL COMMENT '货位sid', + `warehouseArea` varchar(64) DEFAULT NULL COMMENT '货位名称', + `taxPrice` decimal(10,2) DEFAULT NULL COMMENT '含税价', + `stockCount` decimal(10,2) DEFAULT NULL COMMENT '库存数量', + `inWarehouseSid` varchar(64) DEFAULT NULL COMMENT '调入仓库sid', + `inWarehouseName` varchar(64) DEFAULT NULL COMMENT '调入货位', + `count` decimal(10,2) DEFAULT NULL COMMENT '调拨数量', + `amount` decimal(10,2) DEFAULT NULL COMMENT '调拨金额(调拨数量*含税价)', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='(调拨单-明细)'; + +-- 正在导出表 yxt_wms.wms_inventory_allocatebill_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_bill 结构 +DROP TABLE IF EXISTS `wms_inventory_bill`; +CREATE TABLE IF NOT EXISTS `wms_inventory_bill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值0正常,1作废;申请-审批中-完成-作废', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `billType` varchar(64) DEFAULT NULL COMMENT '单据类型(入库、出库)', + `createDate` varchar(64) DEFAULT NULL COMMENT '单据日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `busTypeKey` varchar(64) DEFAULT NULL COMMENT '业务类型key(采购入库、维修出入库、销售出入库等)', + `busTypeValue` varchar(64) DEFAULT NULL COMMENT '业务类型value(采购入库、维修出入库、销售出入库等)', + `warehouseManagerSid` varchar(64) DEFAULT NULL COMMENT '库管操作人sid', + `warehouseManager` varchar(64) DEFAULT NULL COMMENT '库管操作人', + `outTime` timestamp NULL DEFAULT NULL COMMENT '实际出库时间', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='出入库单据'; + +-- 正在导出表 yxt_wms.wms_inventory_bill 的数据:~0 rows (大约) +INSERT INTO `wms_inventory_bill` (`id`, `sid`, `lockVersion`, `createTime`, `modifyTime`, `state`, `isEnable`, `isDelete`, `remarks`, `createBySid`, `updateBySid`, `sourceBillSid`, `billNo`, `billType`, `createDate`, `createUserSid`, `createByName`, `busTypeKey`, `busTypeValue`, `warehouseManagerSid`, `warehouseManager`, `outTime`, `useOrgSid`, `createOrgSid`) VALUES + (1, '1', 0, '2024-02-29 07:26:12', '2024-02-29 07:26:12', 1, 1, 0, NULL, '1', NULL, '1', '1', NULL, '2020', NULL, '1', '1', '1', '1', '1', '2024-02-29 07:26:00', '1', '1'); + +-- 导出 表 yxt_wms.wms_inventory_bill_detail 结构 +DROP TABLE IF EXISTS `wms_inventory_bill_detail`; +CREATE TABLE IF NOT EXISTS `wms_inventory_bill_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '商品库存sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `specification` varchar(64) DEFAULT NULL COMMENT '规格', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '型号', + `currentCount` decimal(10,2) DEFAULT NULL COMMENT '出入库后的库存量', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseArea` varchar(64) DEFAULT NULL COMMENT '货位', + `cost` decimal(10,2) DEFAULT NULL COMMENT '单位成本(进货价)', + `count` decimal(10,2) DEFAULT NULL COMMENT '数量(出库为负)', + `taxAmount` decimal(10,2) DEFAULT NULL COMMENT '税额(出库为负)', + `taxPrice` decimal(10,2) DEFAULT NULL COMMENT '含税价(出库为负)', + `amount` decimal(10,2) DEFAULT NULL COMMENT '金额(出库为负)', + `price1` decimal(10,2) DEFAULT NULL COMMENT '销售价1', + `price2` decimal(10,2) DEFAULT NULL COMMENT '销售价2', + `subjectSid` varchar(64) DEFAULT NULL COMMENT '科目sid(出库时)', + `subject` varchar(64) DEFAULT NULL COMMENT '科目(出库时)', + `operTime` timestamp NULL DEFAULT NULL COMMENT '操作时间', + `operUserSid` varchar(64) DEFAULT NULL COMMENT '操作人', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='单据明细'; + +-- 正在导出表 yxt_wms.wms_inventory_bill_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_checkbill 结构 +DROP TABLE IF EXISTS `wms_inventory_checkbill`; +CREATE TABLE IF NOT EXISTS `wms_inventory_checkbill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createDate` varchar(64) DEFAULT NULL COMMENT '制单日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `checkType` varchar(64) DEFAULT NULL COMMENT '盘点类型', + `checkState` decimal(10,2) DEFAULT NULL COMMENT '盘点状态(盘点中1,盘点完成2)', + `profitCount` decimal(10,2) DEFAULT NULL COMMENT '盘盈数量', + `profitAmount` decimal(10,2) DEFAULT NULL COMMENT '盘盈金额', + `lossCount` decimal(10,2) DEFAULT NULL COMMENT '盘亏数量', + `lossAmount` decimal(10,2) DEFAULT NULL COMMENT '盈亏金额', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存盘点'; + +-- 正在导出表 yxt_wms.wms_inventory_checkbill 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_checkbill_detail 结构 +DROP TABLE IF EXISTS `wms_inventory_checkbill_detail`; +CREATE TABLE IF NOT EXISTS `wms_inventory_checkbill_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值状态(0正常、2盘亏、1盘盈)', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '盘点单sid', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '商品库存sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '型号', + `unit` varchar(64) DEFAULT NULL COMMENT '单位', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库', + `warehouseArea` varchar(64) DEFAULT NULL COMMENT '货位', + `taxPrice` decimal(10,2) DEFAULT NULL COMMENT '含税价', + `bookCount` decimal(10,2) DEFAULT NULL COMMENT '账面数量', + `realCount` decimal(10,2) DEFAULT NULL COMMENT '实盘数量', + `profitandlossNumber` decimal(10,2) DEFAULT NULL COMMENT '盈亏数( |实盘数量-账面数量|)', + `profitandlossAmount` decimal(10,2) DEFAULT NULL COMMENT '盈亏金额(盈亏数*含税价)', + `picUrl` varchar(1000) DEFAULT NULL COMMENT '现场照片(多张中间用英文逗号分隔)', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存盘点-明细'; + +-- 正在导出表 yxt_wms.wms_inventory_checkbill_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_settlebill 结构 +DROP TABLE IF EXISTS `wms_inventory_settlebill`; +CREATE TABLE IF NOT EXISTS `wms_inventory_settlebill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billNo` varchar(64) DEFAULT NULL COMMENT '结算单编号', + `createDate` varchar(64) DEFAULT NULL COMMENT '制单日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `settleState` int DEFAULT NULL COMMENT '库存结算状态(1进行中 2已完成)', + `settleType` int DEFAULT NULL COMMENT '库存结算类型(1月结 2年结)', + `settle_startTime` timestamp NULL DEFAULT NULL COMMENT '开始时间', + `settle_endTime` timestamp NULL DEFAULT NULL COMMENT '结束时间', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存结算单'; + +-- 正在导出表 yxt_wms.wms_inventory_settlebill 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_inventory_settlebill_detail 结构 +DROP TABLE IF EXISTS `wms_inventory_settlebill_detail`; +CREATE TABLE IF NOT EXISTS `wms_inventory_settlebill_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '结算单sid', + `settleType` timestamp NULL DEFAULT NULL COMMENT '库存结算类型(1月结 2年结)', + `inventorySid` varchar(64) DEFAULT NULL COMMENT '商品库存sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseCode` varchar(64) DEFAULT NULL COMMENT '仓库编码', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseAreasid` varchar(64) DEFAULT NULL COMMENT '货位sid', + `warehouseAreaCode` varchar(64) DEFAULT NULL COMMENT '货位编码', + `warehouseAreaName` varchar(64) DEFAULT NULL COMMENT '货位名称', + `preBalance` decimal(10,2) DEFAULT NULL COMMENT '上期结存', + `currentBalance` decimal(10,2) DEFAULT NULL COMMENT '本期结存', + `currentEnter` decimal(10,2) DEFAULT NULL COMMENT '本期入库', + `currentOut` decimal(10,2) DEFAULT NULL COMMENT '本期出库', + `currentCheck` decimal(10,2) DEFAULT NULL COMMENT '本期盘点', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存结算明细'; + +-- 正在导出表 yxt_wms.wms_inventory_settlebill_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_manufacturer 结构 +DROP TABLE IF EXISTS `wms_manufacturer`; +CREATE TABLE IF NOT EXISTS `wms_manufacturer` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `manufacturerCode` varchar(64) DEFAULT NULL COMMENT '厂家名称', + `manufacturerName` varchar(64) DEFAULT NULL COMMENT '厂家编码', + `sortNo` int DEFAULT NULL COMMENT '排序', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='厂家'; + +-- 正在导出表 yxt_wms.wms_manufacturer 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_markuprate_unified 结构 +DROP TABLE IF EXISTS `wms_markuprate_unified`; +CREATE TABLE IF NOT EXISTS `wms_markuprate_unified` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `level` varchar(64) DEFAULT NULL COMMENT '级别名称(客户)', + `price` double(10,2) DEFAULT NULL COMMENT '对应销售价', + `markuprate` int DEFAULT NULL COMMENT '加价率', + `sortNo` int DEFAULT NULL COMMENT '排序', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一加价率'; + +-- 正在导出表 yxt_wms.wms_markuprate_unified 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_purchaseback_bill 结构 +DROP TABLE IF EXISTS `wms_purchaseback_bill`; +CREATE TABLE IF NOT EXISTS `wms_purchaseback_bill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '0正常,1作废', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid(采购单sid)', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单编号', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createDate` varchar(64) DEFAULT NULL COMMENT '单据日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `backErrorAmount` double(10,2) DEFAULT NULL COMMENT '退误差调整金额', + `backDiscountAmount` double(10,2) DEFAULT NULL COMMENT '退优惠金额', + `deductDebts` double(10,2) DEFAULT NULL COMMENT '抵扣欠款', + `deductBillNo` varchar(64) DEFAULT NULL COMMENT '抵扣单号', + `toPrepayment` double(10,2) DEFAULT NULL COMMENT '转入预付款', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购退货单据'; + +-- 正在导出表 yxt_wms.wms_purchaseback_bill 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_purchaseback_detail 结构 +DROP TABLE IF EXISTS `wms_purchaseback_detail`; +CREATE TABLE IF NOT EXISTS `wms_purchaseback_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodsStockSid` varchar(64) DEFAULT NULL COMMENT '商品库存sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `specification` varchar(64) DEFAULT NULL COMMENT '规格', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '车型', + `currentCount` double(10,2) DEFAULT NULL COMMENT '退货后的库存数量', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `position` varchar(64) DEFAULT NULL COMMENT '货位', + `returnedCount` double(10,2) DEFAULT NULL COMMENT '已退数量', + `backCount` double(10,2) DEFAULT NULL COMMENT '退货数量', + `maxAmount` double(10,2) DEFAULT NULL COMMENT '税额', + `maxPrice` double(10,2) DEFAULT NULL COMMENT '含税价', + `backAmount` double(10,2) DEFAULT NULL COMMENT '退货金额', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购退货单据明细'; + +-- 正在导出表 yxt_wms.wms_purchaseback_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_purchase_bill 结构 +DROP TABLE IF EXISTS `wms_purchase_bill`; +CREATE TABLE IF NOT EXISTS `wms_purchase_bill` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值 0正常,1作废', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `sourceBillSid` varchar(64) DEFAULT NULL COMMENT '来源单sid(工单sid)', + `sourceBillNo` varchar(64) DEFAULT NULL COMMENT '来源单编号', + `billNo` varchar(64) DEFAULT NULL COMMENT '单据编号', + `createDate` varchar(64) DEFAULT NULL COMMENT '单据日期', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '制单人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '制单人姓名', + `purchaseType` varchar(64) DEFAULT NULL COMMENT '采购类型(厂家采购、外采)', + `supplierSid` varchar(64) DEFAULT NULL COMMENT '供应商sid', + `supplierName` varchar(64) DEFAULT NULL COMMENT '供应商名称', + `supplierPhone` varchar(64) DEFAULT NULL COMMENT '供应商联系电话', + `billType` varchar(64) DEFAULT NULL COMMENT '票据类型(不含税、增值税、普通税、已含增值税)', + `markupType` varchar(64) DEFAULT NULL COMMENT '加价方式(统一加价率、区间加价率、仓库加价率)', + `priceStrategy` varchar(64) DEFAULT NULL COMMENT '进价不同时的价格策略(加权平均、分别计价)', + `isInvoicing` int DEFAULT NULL COMMENT '是否需要开发票(是1,否0)', + `invoiceCode` varchar(64) DEFAULT NULL COMMENT '发票号码', + `tempMarkupRate` int DEFAULT NULL COMMENT '临时加价率', + `purchaserSid` varchar(64) DEFAULT NULL COMMENT '采购员sid(单选)', + `purchaserName` varchar(64) DEFAULT NULL, + `storekeeperSid` varchar(64) DEFAULT NULL COMMENT '库管员sid(单选)', + `storekeeperName` varchar(64) DEFAULT NULL, + `errorAmount` decimal(10,2) DEFAULT NULL COMMENT '误差调整金额', + `freight` decimal(10,2) DEFAULT NULL COMMENT '运费', + `discountAmount` decimal(10,2) DEFAULT NULL COMMENT '优惠金额', + `payableAmount` decimal(10,2) DEFAULT NULL COMMENT '应付金额(=采购金额+运费-优惠金额)', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购单'; + +-- 正在导出表 yxt_wms.wms_purchase_bill 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_purchase_bill_detail 结构 +DROP TABLE IF EXISTS `wms_purchase_bill_detail`; +CREATE TABLE IF NOT EXISTS `wms_purchase_bill_detail` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '单据sid', + `goodsSid` varchar(64) DEFAULT NULL COMMENT '商品sid', + `goodsName` varchar(64) DEFAULT NULL COMMENT '商品名称', + `goodsCode` varchar(64) DEFAULT NULL COMMENT '商品编码(图号)', + `specification` varchar(64) DEFAULT NULL COMMENT '规格', + `goodsModel` varchar(64) DEFAULT NULL COMMENT '型号', + `currentCount` double(10,2) DEFAULT NULL COMMENT '当前库存数量', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `position` varchar(64) DEFAULT NULL COMMENT '货位', + `cost` double(10,2) DEFAULT NULL COMMENT '单位成本(进货价)', + `count` double(10,2) DEFAULT NULL COMMENT '采购数量', + `taxAmount` double(10,2) DEFAULT NULL COMMENT '税额', + `taxPrice` double(10,2) DEFAULT NULL COMMENT '含税价', + `amount` double(10,2) DEFAULT NULL COMMENT '采购金额', + `price1` double(10,2) DEFAULT NULL COMMENT '销售价1', + `price2` double(10,2) DEFAULT NULL COMMENT '销售价2', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购单据明细'; + +-- 正在导出表 yxt_wms.wms_purchase_bill_detail 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_purchase_bill_settle 结构 +DROP TABLE IF EXISTS `wms_purchase_bill_settle`; +CREATE TABLE IF NOT EXISTS `wms_purchase_bill_settle` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `billSid` varchar(64) DEFAULT NULL COMMENT '采购单sid', + `payableAmount` double(10,2) DEFAULT NULL COMMENT '应付金额', + `prepaymentdeductAmount` double(10,2) DEFAULT NULL COMMENT '预付款抵扣', + `settleKey` varchar(64) DEFAULT NULL COMMENT '结算方式key', + `settleValue` varchar(64) DEFAULT NULL COMMENT '结算方式value', + `settleAmount` double(10,2) DEFAULT NULL COMMENT '结算金额', + `otherSettleKey` varchar(64) DEFAULT NULL COMMENT '其他结算方式', + `otherSettleValue` varchar(64) DEFAULT NULL COMMENT '其他结算金额', + `debts` double(10,2) DEFAULT NULL COMMENT '欠款金额', + `settleTime` datetime DEFAULT NULL COMMENT '结算时间', + `createUserSid` varchar(64) DEFAULT NULL COMMENT '结算人sid', + `createByName` varchar(64) DEFAULT NULL COMMENT '结算人姓名', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='采购单-结算'; + +-- 正在导出表 yxt_wms.wms_purchase_bill_settle 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_range_markuprate 结构 +DROP TABLE IF EXISTS `wms_range_markuprate`; +CREATE TABLE IF NOT EXISTS `wms_range_markuprate` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `range_start` int DEFAULT NULL COMMENT '区间起始', + `range_end` int DEFAULT NULL COMMENT '区间截止', + `markupRate1` int DEFAULT NULL COMMENT '加价率1', + `markupRate2` int DEFAULT NULL COMMENT '加价率2', + `markupRate3` int DEFAULT NULL COMMENT '加价率3', + `markupRate4` int DEFAULT NULL COMMENT '加价率4', + `markupRate5` int DEFAULT NULL COMMENT '加价率5', + `sortNo` int DEFAULT NULL COMMENT '排序 ', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区间加价率'; + +-- 正在导出表 yxt_wms.wms_range_markuprate 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_supplier 结构 +DROP TABLE IF EXISTS `wms_supplier`; +CREATE TABLE IF NOT EXISTS `wms_supplier` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `supplierName` varchar(64) DEFAULT NULL COMMENT '供应商名称', + `supplierCode` varchar(64) DEFAULT NULL COMMENT '供应商编码(拼音缩写)', + `contacts` varchar(64) DEFAULT NULL COMMENT '联系人', + `mobile` varchar(64) DEFAULT NULL COMMENT '联系手机号码', + `contactAddress` varchar(100) DEFAULT NULL COMMENT '联系地址', + `taxpayerNo` varchar(64) DEFAULT NULL COMMENT '税号', + `bankName` varchar(64) DEFAULT NULL COMMENT '开户行', + `bankAccount` varchar(64) DEFAULT NULL COMMENT '开户行账号', + `Address` varchar(100) DEFAULT NULL COMMENT '地址、电话', + `billType` varchar(64) DEFAULT NULL COMMENT '票据类型(不含税、增值税、普通税、已含增值税)', + `sortNo` int DEFAULT NULL COMMENT '排序号', + `initDebts` decimal(10,2) DEFAULT NULL COMMENT '期初欠款', + `prepayment` decimal(10,2) DEFAULT NULL COMMENT '预付款', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='供应商'; + +-- 正在导出表 yxt_wms.wms_supplier 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_warehouse 结构 +DROP TABLE IF EXISTS `wms_warehouse`; +CREATE TABLE IF NOT EXISTS `wms_warehouse` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `warehouseName` varchar(64) DEFAULT NULL COMMENT '仓库名称', + `warehouseCode` varchar(64) DEFAULT NULL COMMENT '仓库编码', + `addr` varchar(255) DEFAULT NULL COMMENT '具体地址', + `manager` varchar(64) DEFAULT NULL COMMENT '仓库管理员', + `markupRate1` int DEFAULT NULL COMMENT '加价率1', + `markupRate2` int DEFAULT NULL COMMENT '加价率2', + `markupRate3` int DEFAULT NULL COMMENT '加价率3', + `markupRate4` int DEFAULT NULL COMMENT '加价率4', + `markupRate5` int DEFAULT NULL COMMENT '加价率5', + `warehouseType` int DEFAULT NULL COMMENT '仓库类型(0正常库、1旧件库等)', + `sortNo` int DEFAULT NULL COMMENT '排序', + `useOrgSid` varchar(64) DEFAULT NULL COMMENT '使用组织sid', + `createOrgSid` varchar(64) DEFAULT NULL COMMENT '创建组织sid', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='仓库'; + +-- 正在导出表 yxt_wms.wms_warehouse 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_warehouse_area 结构 +DROP TABLE IF EXISTS `wms_warehouse_area`; +CREATE TABLE IF NOT EXISTS `wms_warehouse_area` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `areaName` varchar(64) DEFAULT NULL COMMENT '库位名称', + `areanCode` varchar(64) DEFAULT NULL COMMENT '库位编码', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid', + `volume` double(10,2) DEFAULT NULL COMMENT '库位容量', + `unit` varchar(64) DEFAULT NULL COMMENT '计量单位', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库区'; + +-- 正在导出表 yxt_wms.wms_warehouse_area 的数据:~0 rows (大约) + +-- 导出 表 yxt_wms.wms_warehouse_rack 结构 +DROP TABLE IF EXISTS `wms_warehouse_rack`; +CREATE TABLE IF NOT EXISTS `wms_warehouse_rack` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID,唯一编号', + `sid` varchar(64) NOT NULL DEFAULT '0' COMMENT '字符型编号', + `lockVersion` int NOT NULL DEFAULT '0' COMMENT '记录版本,锁', + `createTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', + `modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后修改时间', + `state` int NOT NULL DEFAULT '1' COMMENT '记录状态值', + `isEnable` int NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用', + `isDelete` int NOT NULL DEFAULT '0' COMMENT '记录是否被删除,0:未删除,1:已经删除', + `remarks` varchar(255) DEFAULT NULL COMMENT '备注信息', + `createBySid` varchar(64) DEFAULT NULL COMMENT '创建者', + `updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者', + `rackName` varchar(64) DEFAULT NULL COMMENT '货架名称', + `rackCode` varchar(64) DEFAULT NULL COMMENT '货架编码', + `warehouseSid` varchar(64) DEFAULT NULL COMMENT '仓库sid ', + `locationSid` varchar(64) DEFAULT NULL COMMENT '库位sid ', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='货架'; + +-- 正在导出表 yxt_wms.wms_warehouse_rack 的数据:~0 rows (大约) + +/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */; diff --git a/yxt-wms-biz/docs/databases/数据库文档/supervise_supplychain_2024-03-07_01-45-194.xls b/yxt-wms-biz/docs/databases/数据库文档/supervise_supplychain_2024-03-07_01-45-194.xls new file mode 100644 index 0000000000000000000000000000000000000000..05a77471e9bb956ffd11f9e40606c242ccc5017b GIT binary patch literal 344576 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%0DR}T86UJZj7Zv6DWR2f;;kT>du@uUI< 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 aIpdreRG)IA!;%D+uMTg%bBk`z!2bij&lbc0 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/databases/数据库文档/仓储管理(yxt_wms)1.1.xlsx b/yxt-wms-biz/docs/databases/数据库文档/仓储管理(yxt_wms)1.1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..692cb1d637b2cae86fa3147b8489d1ce4acae41d GIT binary patch literal 339823 zcmeFY1D9q?(=A%Ijqb8-+qP}n=(26wwr#tr%eHOb+WY;^y@$Wx+%?97u_7Z!uFRM* zBUfa|NdkkQ0Du8N0002s1HALZcf|q%0E~bE03ZWE0BH)^+Bg~8IO!_6+Zj7*)3{k% z;pKw>k>vsa{j~r8um6i@U@~dKVt@`o_&Mk+V6J&ZLV>Jka4bK@7~AX(u$(zsxDp)e z@bNhbg|u);8Un5ndm@?X87Hc8&aN}rxgI1!pd$030Y{tyk8QxmDcgvfnk8d`-Nkzp{zdksrJZx|PUGF1a*^0jHMXpgsb zKA8MI&K^#seQjmJ*OI0Ci&in{A{t3~ zfaM{9w@hO*D!OP?-vnp0bt#5CmkrU6eWSvbjaVaCW6${sEfJP!Nsor`gXUC#f~OJ;)WXZ)>Kz z9~ajW%Aqn*=s@Qn7ZJ+qdE1lA6nN2elio&Pnv0Hj#xE$bLc-d`27tG zAoo828Cj>>80ZJc+dnvk{sFSCgRzw(EzLjQ|385LFGlTu_vn@J(vraR2*KC>-}sYV zoa+<>^H#LNC(=frfb?mfdaP-&h3%iuBK%Hy%{U&JHLlt2X^$rL1#Sfho-Rnq!jS%% zCJP-Z{gR)pt>B0W4kA$(V*P#uR^{gvkBm_ihj}ZHJmHml`GGXV-@X{mqAElF+-+Ls zY-&jk7#a@}@a4o>Nr%6Kx3T1=n1-gsAUGX?^Lbu6UprY?rEAP5JZ#5`2q|NWg{EWG zUt(7U&hDA>Rq~36`f9z$PeaGw2@HX8NHsolPOdHI6cj{=gVKSsj$SX=KpQ&?g&mQ7 zHqu1?9Mg3&z?Z1m(2nIl)7NnuPOHwaB291Azx{6^Lzy%k=L8G@fc`^;@INiwtY}?r z9V`uOZ7u)dy+Y*~+jSO{ZupaLyqjvVL}PZee3UO@Dn11e>0~V+kVqj>AtL#L(iMJr zJ?z>lZezaS%?O-kK}3`lW9!+coUnvXOwUBCk?4qiNze?Gv5}Z<&uh=WYy0|0mL*CD zktI0&lqBzIY{tZy;Pnp0YSX_l zSbDHv0~#f&S`j+I^A}4ts2aPMOzAf(3M=BMJOz-F$}r67$Bb!>;)8K4dSl^FHidqh z=Z~&|M(8hE{H;_rs+2wKq}BsyvmJ^LPZV3*EdwcwD)XtTl(>)?SZ30)EF_O!bnSiD?(y|nGw__#fvs#pdu$k~pZ{%-UBK0etSxz&5P zx}JMo4>*@iVeRSZ@Os_T6G=C!gZm0$6VEj;dmLR zn)O!mv&&|~^T%r43Rb(8g^G6xz%%T9I8=jgKh=?P`Kw|fG&#rejq$n)4IeJftP54- z{hevl$oIwyEzIk$_+7X^f`;vdbv-SG`p08SS4;8D8C{zLUOkgjrd`Z<_;T|JjTi~G zZ*M;TTYzpsevf1ctD#hn&tK5qr^RPL#_>a__>m|-oES8C^}4WdUayAS z9>+TKFU>=`Atu(Tv-=Y4IG1z_!^fhpK{0uBlD}Og3!Y3s%=EWqN4t&WANxbonB*F@ zQCswBBLw#FvspaKR1Kn$F_N%ByqbXn*5I)ey?X2cBT2e-X8q9<-$l-lRDt$NizOX@ zcMa6w5Sn0bD43|n_|N_Hr(d#=v{#1YBd%*9nVSZ;(Eq!rsESEaVHyVjU}XaU0OQ9r z{>#NXni(5AInw_7L;sJj&rDd4&Y=6DM#{(ERNLUdfbqGp%C4&Ns^#V7>jO=OQnmi{ zO<9T+-JTZQY)}G`ZWBu6YtDW>-s;iC7?_gl z@hs(spgax%*J!relg|>iQd4chd}h*qmX;lv2m=;0WspiEnyrfD)MY`ET_nW|naMgt z*hnGzB1EXvJctfn(1OZIdLQz2RR>kv{7kl`px?!4S(s+=oBjz(w#}QND5@J?+C<+c>%$M!QXCT`_DBD;(d(_<@JEEV`KNuuZ#?YiCN;ykK2J^ zNcpcatzg}`d&}zK^Nf_sDu8+-?u;{|>D4DcLA;Rv*wQSG&Mz|BvNimw7s60q^x8@C+K~o611ZRn7&8^o zW-TDSQ8DTc2`pM72_XEGF>llt7t#M{~SPNW-6I*rYq(V+z| zlJaHwQYb%0*=~IiV9^~hzXY1StAE|F)^lv2t!YZ;`^$Uq?(St2HXsdLl0UOuONtpF zm@yuRN9QE95FGcJ)GQNZ!JH+m7?~`^I!d`-7X9%p0cmYN3Bl8t33l&$yf-6-|CiA| z-b6edu+R5+%A-JN7hM{tdAgAgy~LlQ|G1+cd-?vZ)V{3##ajI*X@{%Vr0|skc@WTs zYvEeo4fa5GPxxZ9xVB-z@Is`MqkUci^Vm-36 zGv6OipXb->%e+3{LaqYA+u7d;P7dGZ8{Z4)o8RJ_-%}et;E(U%6Tnm%jiv7;yvZNH z-$m~}Z}rbP@JC;qrQ5t}IC`sv!kfIGb^TZ0rx91*RNr6hY46v$-rsuezQze?&fgD) z`p@4F!tmjpUXJ&u__(o^h^|7vnD_ib6GW^~@k?&o2vOWU@&`tFy}aBM4NXI;1x|Xr z+}SkVVCTV}^I{+}unHF%f~&Aly0}byvAUl5yk&K9 zw|?}@?%o%rw!+)0f@}CWcr91T@qhoNjl#%-n3oNL-C0N>HcNR5S4Xmnm6^qAwvYo^ z(5LDT-$6zlu4Q9HsYxaXNdCoHoB%R0jK&y^Bb^}pQG}ObL6KWhu5FG%WPX$p7WfQ@ z#Z_^=uGwG}ImczYfBax4LP9v>1Zq;L?SN6}rX$VP>N>ll?j@PMXi!`=!pLAQ&fFxo z?+%=eS~#)*GR*0TRrxb(D+a@kA43mrA|$M3#dr*STX?KTOvX)v^*NF`1@N_2R&(-$ zgqUf7@(k9b*5ib)Wb1)3FdASI!=rVT)rXl?Xxygv#@R51qgo|w3zF93ELsd=)2ozH ztLal>=}Yx>xYCU7lGaA^2^I_lxKoMx(<-y+CIgYEqZ%w<^nweTeguv=fn&1c2yFE4 zeRF{iA=(q-oZ`OobJ$a(Fl72riP1k2aDnt#kUC3o$7HZDE8Xi|!iC%qCzI@{0{1H( z1~YbZ&SF`Oe}%`{b^ZHCz(^~7OP8%PvNAAY!~Zt7^p59XNb1dvRf zhUtl(T7Ov0(;4QBMun|8sm8&1{3{Iz)zoD?y2myu9Y#ZTHJK!;uQ5656C<6_?Ua;} z0eGCb!@c-#0gqebZJ@km_F}>>8OznRnz1Ysj%Z`;`$#GOQUWN-*|FqZjK*Sf#ca`@ za$C8T{E+*Dz^PwpAgHDuOWFGK%~mGzclx{zbok%~kp}KhM^;8qiS(fDt3omK=f-FZ zx!#Kyt%$S@L_&sPi&mmuR@r+P`b z*CA6Z*8Z^4p(L);E&2eG1HMRlrYxoFHm$+mbBkQU)@8CR7RkDQneYoPQ~8k<@P;wc zWmdREius1pvKvU<7&Ki7?_4;I@c|7+3`)k(gzpZxQ{rA{>P*NT$YxwPr&1r!6hGyX zTwsWcrHgUu>P)i`qm=n`=tWJ0M5h%F@Q+r9XTjnzK|$ugIH30~v~<8HF$vE@Oid@e zBE=HS)LOCkFyf+MTuVlCbu(8N9B=XdY9H`5jk$;}083{uoWl8zrh1p>xj6?<$1dW( zff&fnks^3TPRF88&&kH!cC)Rsi^V+e(Otp>}^)e=bzVLc`6Y6UR{;SCJ^+o zH&I(N;4oaGvb;b))=H?*ds~V)SP3`O?XnU+0xH3(b$*VJcEe~i(f%#I^bdHL{e+M5 z)J1~7kkJI=qdp?li%)(tlF)~j(5WVS%rN^BnJAy0ljQl z!cZ20B>qsE%xs=OZ>sU#8oeP|9zs6`ccP5n&aX5iR8x~pnm(;Ih5-h+xCu}f>aw^wh(_uJWEzaJGXVY!MmFP#-mD93 zwIN5e$71#%JS^YcK7QTN2uvvxGaX&?L4TG3^epw(NdRgPqwB9ur#f~Ta27qd|2&%E zQoxufcYY&t+a$>?jC)z5bF@@=IHQNWk@}iNuCaNApOCqw%Wt}xwuOfMiem&FD0|4s z#H%4p)R=L;Q&kWGh9vpBd|ik?hq=SnpZ%jlA`^EBMRZG&I%XcZ=87brqG2$vGtWgX zI@tQ7@o%Dy z`TfPXyQ7Ue{y}jcHVwF7Rpx6%J99NyhU)a~W;>6lS_BLJdy|nQo%;Ph*fv8xRfSD& zV2N`j9qSM(1{_MuYP_M*q;w2rE#84eej>8q`-cIrpfkBwnCrO|e%9zlLDRZK`&xP> zVF&Ubf3fDlMR-oQJcccJ6AT%EBCGk_;VP#a)LUOS6j|cP;~pgy@-xt20+zNWfqp#a zP=jrWlT`i$#wz>pevB?qM-H;;xKjoDVs(LiM#JPbff1N^JEcJk@%eMlZjmFwp)_xX zyry{i3Fl@*Fi|rk{m3nAc5Z^@(T@@~Mq)EfO#R7pA{3D~W$x5kVctX;sx}c4zM)kc zOX7khraZd&8Z4$Zy8Nx`M-9rFI7~TvFs@6L$RFPv3-nk4HX{yo(5#|EsF=GqIVi=( z_K!&y@_m-`JFbzR|6QwzBbT!`G4CG;BS*;euOm#uY^(s2uJ$-lKUbpOCS?54O1#fq zo5o{LpN(3k_sRqPq2mMq_OL!rBcLC9PJi+Z<+n_?I zDyAq`e$r!Igwcp0$wYXp7&g0ujPuYu*-I4L`r*8P7gloeXJJPJ-joAKa1qGURY?&& zVx$7Y86_87cW7ShPL8IoTJ^dh_&1T5xF zsiRCMzu`mUx&6LIf4US4c%hivo%+H0KYGPKdcUP1$e6w2n0AXmT!=)G=l^x$d~L%2 z$k?AHRNw7b618ISw=HuQPEJJ@mZa`%lZA-oD*%SF`8Ej@;55uzi9gUVS0fnL2dFKw zn*tf-tou3&PW_6d(;l|j80@w!sI(vL7>%5Be~<%Q1v!XgMt=|lT%~CwM?3A}(Tdri zg~M5VP5A>EVCvvbhg|0fnA@RMnPXbRr9#UGH168Za-7}Oe7MF;rXw`W?FdF>M609# z`U&4zdP6-+H{43r;ZplQuJNgwMozTTQpRv%OTAqL9MoCr5Ioihm*^FMm9` z`SW0;dP1Y$N1v*Ad;-+S6fypTYt9B*8Dp`|3JXr5l`cxQ$(7PF*cNR?Sh?L; zd0`?hDz^wFuNs_}2x%BadsFeCEm<&QL(72x+{^w!xL$nqMn& zoJM(1^wsBmjcH8ks)siSY2qXM9X?y7{G6@H-wI*d_-jD=36WlRMFkq3t3!T*Xjd#J5{yzPJ$~oo*uYLyT)G%Qt}J?c2G?O< zVGdulVjl%jyHZ$G+WUlJ)u(6|K9W8&Xsd)JVO4Ar6^ce)c-()E4|Af1EwP=g@I~y^ zYm>U*4=Z1vzdmEy8|Tw0l)MbJm?bE?Zd@~vUNo!_OHFJp5}p%lbA-E7w6kD0D~ zo^`d6HDscBOE5!MlMJH(R8oG`)>AtTmPMDWF!P#y7RIW2+u=?;EOpByia9CayFiTi zS$h-Vo$o*PV}nQ@sS^{?Y`MY6Y0iWwoj|4W9Zq9?hR2V_VS_#HRN#TNBfQHTeNngp zw7NjK*I0NCf2fyOVof%%_~|QR)>K6Kw|VX*mCq`PvpoEr77&)?t^S#&n&tE-~Rzrs%Um zB!dpxGuf*odUZWzoAO>E%B4ai0*PG{Sm>%i6!)bpoXEl4tk(!Z%%l?vK@{fhx=f^~fTc}4)@Z0ari83W5ONl+#DRxcVl)t12@Z_Z~xBEYBo3{ufh<5O1E*oinb?-eNmwT^+b zSz!6h4U(uQQ4!Zx(ZFb^Z2U0{^B=>Q?@v{wpw3IL3JX$RPC^5#YN7khq_RBbeA7#R zR3sr;8fj@zr7Zp%+X{o}4C2`(i;5gDyx2h+0fn|Di$tk~xvu?8h7-2H1#B@{{-kYa z94g}h!y_X_?skbu-gd|(J3ar$_>+Kjcw>Re$aieUD8>2F#Rf+yzIQ3Z?@z3@;PyK{bI{O}S+;qmet;)5O zJ;8||Gf>k!U52brfJ?Yw(MGXesRa#BGI7R-l-a{*q9Jmgbu;S|T5wy^-)mk79A76% zPE{t%$lL4vQG5}Q?U9MRDC`s{VeL{WSU8kZUmw(HNT-UvpoDF|kf4@p-V-3?q^vQj zk*84FW|;!9Vf-tI*(8%Ax7X~R!agK*@N|;=7~x^H!5BfRDEjit(?j^!#dnY~;tW2I{jn|=a#IRa;17S|Hk^BW^B69HfHZdLw2745Bq6SX3& z^A9oBqOG{%*aLvg)WhDXQYnCqf&5z50=Y=lz7=?sDVmg!OEUlOE-%?qI2!|djmIXa z3u?uD_aS1YwjEiTGy?^V{f|aw z^skk`!<6$qQo0l)J*r$OlxCRghRgS$bZxClojIc8t1me)*G%)PZSIvyODzrZl&2Oc zR+#?6sa8hi)>=9~YCJ2I)>|69Du2H8{>m2bSbG9NaPVR}woogv-{f3_R(6#}c3-Ay zzS`hgOwtJIrnD0-LPl}3?kPcTE>OLrm@m_}ToBr4#?4cqLv$Z%f@IP**SlTBX8G|! zRd`A#%+iTE_lOpt$Yslr>KB~+b<0ly=@(-YGJ=OX3qseZ9mpgeH5i7Ng$KMO=>7Wo z9aqG!F>;72e*@K*Hz8r0WTvnsTu3LYg}yd2@*SLAAtOq&LN_>sf|XyO7dfRXdCNPH zWny>W)Fxc7_U7Y&@og5^vbHt_V#LB*;B7hEJOry8AA{rDIMzb7rqEBEc~?RMM=PGH zPxqom%NkLPdax|KNczc|qI080>$1ZoSY&j}DU`mM>jWzHI3d5JN0p5pFbFxsr2eKO zj2dOhGpNtl+|XK->-Xg}sk>^xV>B@~yHU*7V3!bBDcr^$SY#^3$?>lY=2u!M^rhTj zS%gr5`8?4msx8LA|0Jhm+7M2FOoA}Ih%^60-JVeuX|(Dxi1PvixD;fs#{$ofk_IL zMvhvE+$+<*R;~@2sbkd*x30=6Epc(65uhlzC#DFI7*erqUhS6{VoA&##pFq3mE(TN zHMb;Lu--i=WmlqX_F#Mqd=l&SOP0L^fULHonU@Q%D5(%IRjtkh4J*TN5}_O)`tp-_>&5n9GpW3C;1Do8%vpiup*TT1uv{tH|-z zZFBh&+gf3ZkkSvG(_3p}GMeIWi(x-Oj7A@pg{cv~AJ%eMTvk((+qeV~86rnLbB_Ef zL8JfT_C{PB7G534YG$~IOFUm&l^#(Vf&|*S#NAl8iK>rcLJ;8@Ad*pDRbif#_GH#@ zoHg;oG;OD8iY$gJonLxv)7X50J36K?BWAq}Izt!Uub-|n<~YqeylQ&dIO|zd3F>2c zm=o~NAvWhI$Ks44SR44lQdliFyT6Wb)Ln>G4e6|>l1M1SE6dLkBXF$MPV}8M7yrZ# zb?8P>_mopfX0pX)Fv`1>w@5;b=fCH!8!?kbv~gBJ6daYJS8 z-N-3h!wmFr!rpDI)b^rb@DGEv69PGdFeAW1Et)>5qK9xNYF6u~TiF7+z6%fT=9 zON#dv?(#C^e|U)xtIZ_s8KkxO45~GNTs;!93$(qVT(cr zsz6X~CpoGJ+#09qQdL|;CAoHX0Hm348oaJo*P)=)XCQE_w<+E9s6^FgepIH6o`9|_ znEl;B;9-s`+t>v_qrkx&>E_&&5_fkmRU-ZxZ**F8DAVI$OsVTA3iEG-vLMP7>3g`m zMb^vh!eGSgNt+T|#qR?ai*~`jPBm1eO}e>ZTjYIV_7#Zewdo|`#=5$dpjqBS0p0eV zab_^ZM5Jh=BF@yh55?y;`usw!SRH;!PPHpcUe{}!OQn;s4xrTuCRP&tzDxbkHA#}) zWOt+w5$b_T&7GVAFNg~x3y2bdw-Qocd-#$F4g0$O7-Z2Pa~giZ)?5wk@rhDBy0*3W zdU(F3yL|@7{`~9{@$sph+tyv1-1fP!CCq-s0$5bZ0;L#g&a}z2cc_SFX}2F9>n3eE zBt-WbZ9T@>Cooe$LXM0m)moLSv33Y@FdmH6Qv+!e&-csFLMgH$YhZs!*2kB?>@A2; zh!zD(B)Z0wf@iY+;YWkRrOJUEm=7FEJ#V%{f=-Ny zJZ|oJ}mDBjtnc>HA{4RWr5m0c4-me53W+#VUfS1FF$D5 zJl54(vB(x5<;F#q-msLX;Y^;p3`*IlJF%;=sTv}HTOdEk;ZzYmHe?rP*ySvw~@?ze1r|9SQPe)wFV z{RaIfFZXY9&MI#1pLDmd&(I5SGMkJ7QaYb1#DzZH3A#~Ld}>j${okm|^O8hk&s3ej zBEze${)X-Rz6zK-WL6fPWwnqo^nFC>~ zckL5J@9Z_qJ+{oR?|m+~BoBO7A4rS7+1WHv(@ps^08vkFLf>%q_9v=ivoSXtBXh69 zQ*<{oCGeb8`Pe0wQW#eY0u`!6{pU;4v$}ZIS&J8ejm*65q`8`MdGH9bR}oW`RdgIT zf05T&IrIuwI5h%@a51)%A$`|u|DBZo`DCEZt($K0Pj)M1lXZTMJT+?AYri9FI9#!+>L;gMY`$#jZyyOX4D7Jpc-(bsKAg->EJWLLj^2QJIPlwyPNw=bhwZ$+MkbohSmgf3V zx2@R}5q-9WInRGJH-c|@?o>|Rq*bZ*Yh|@Vb zskltjPX-((_EYEH_=VBu2-$;3d)Nn+MC#8}^9JfoV7Lw`xl~N$2}s0G20WTBg(l0^ zO?`*A?BC|L0JrWiD>!<>cxw^+j)^q%Knd zloxFvuMbV~*CZs>E;>%1?*k8{&UWSH5y_$@xEGK&AhtESzS46tp_^yae?U%(0 zKX$R(7>()Ug6fg#XI@LC`f#hjF4a9!T5IhcOq}KJ(oOJT)h1B(uoS**t%AeDT|Z2y z-*En&WX`7Y!~iga@f+I8Cvx@I7grF>PdoiVC-1Obl!^6@pq#BDajaP~`$XBrR~|7L z2%8uc2Y3vB!2FP05Nd&mq`JsD+p+=roIz>}3}`3f@d93|Q2?WV16}y0cB90>Lev5i zMC**F!ok!U(jd`FCtRqrgXazVce}n(OV64nIcUWgZ2+|!Y z01q9=C^WMA4kf!|=c+cHKP9>vv{~!+0(3~}&F1#AM(v4L_t8QWZT&@+n{iwd6GOZI zIq|tU6;skvw0-C`0{;O4gJma@%VA~VD0gCd--Lo-#zTJwzt-aS2=S-{HxNgbo-CH`vkWotq&mRv3NMj_DKh|OV zSrCpOSrB)SPDn)Pd44Tvsw5CWSsYx-wtt3N4lj=v((1D2d=hA@iYlG0Y|H=if zf|(_$6wt+kHGC{!DEA@OREZNxM4MB0epe#v9 zDyO`e(BQJ>OcUEc%af@Z>TpW5q#xtqB`gdT<|HKHiy6JxRdRt= z+fs3{nPye*>~eEnDAMvendHc3vll-$LnE~7=hlOy&$<$Gt7P-~CXd@dmDFrUkvNwz z6}kE5_+v(tc))NF$!Dux)ciKA9O`*8m+yq6#fM^On-Nt6pss- zYFGqCpvCVp1Qq8tYWp_eY7Qt=?P>ups_)7Uo~KMjL7m=GKgviV1B=dygYE`B3LGX} zBw!lWDn57Sg-ZYw4wJRm<4l(R)H5O}tA+!UpI1Yzjvb5q+EeKmLpS5q-qYm^Wj0&Y zHdeNOhx>K>8xx{0MUv@WwZhg%lIhe=O<_zswb}QEJ4;TYt;G)#A^z!;CtonxfQ4o{D4`Mb zzo6omS_7pJ>!ST0!C zMxn5_MrtVA5ljeKbFl)cbODW>pk$XP&WMR>M}zX8Uh1^bOYvOJYt@Gpj|B>X zldbzL+PRruXDjh-z1t~lY{u$0SmZ8cd6?d2S3^i})0u^Idcs{JLgMw`n`X4VJcU@( zOQ)j#OGqrFvR)m2uTdYUiB8N~E;Sa#Fud8J7PX>B0pNBkkQ$GjG-HsibgO@xJX7IH zg+gKDjhtAV&iX>f@yUF&loI3FTg3Uv(rz)Hezdt1%#vNo#2oit^Z8Yq6Kv!n{2h zA-ts%itY;1ZfIF{87RyVK*sIV+`neForw(FOiRun22s@p4SRF=GTz`?yC@Vs3tOf| z$1E*n_zPxKVbFtE+C$1i`{!=YbZ(hShrY4`I7gwMWZW8oWCNCfO+Rjn>6;iB8IkYcN4DFit+%S;f>!dG)h3xRh}6|HmF~p) zVIW*Y6^}r2qiH9o=h?O_g=)t-`s4;>+<0{#^*31C#K1YE&TVk?(U`G0{MA=&Cg@um z$yF`I$z3vI?_t4>1-c7*P(35x)2}Bu<4DLsMm|5aYqtVi4euUA-u_L9g>-!$o2atVTBDbxj&3Y~LW(dMGRAtJaO@3RMj4Z&j1)doKK zs{_lfd2@=Uxaoh)mJr-ODMU`9Q^*G>c}pab8UK8S zcfzMIwCa+`mGcAj)0N7EhHwSDG{O{0TQMbPP3Be|ZSv#L$!KQdL(AlbCSVJZoCg*0 zg2pLY?|T?Mr_1=Nt$*KYi6POWmbbR}wYCsu1CcAK^r7dkILd%3g!ZpJQ-y^>-DajBS&r1IvtPZ5dy2DE}>R0x;ak0Ek zE(8yKNbka& zq>#q`>Eu5bbanO({;ljzVs0+!#oOyg%TIlzmK1{)h!v5cT(?yPHK`+Rv(&NCNl1do z7y zlU=5Yf2DyU=lE|NXM802h>=0ofL9Aimry88{NFFyFP$62Q0Pi=gTAD8+l@kM_8djYI?5Mj{~T0%xaD>P%g^XvD#?(N>k2Cl@CAA~wgFs4t`( zkI0LM!EZ2WsRJ`_29&toUvHaeo~v{NLx4aIFE>Kx)nMG`15bGwc+z2*S1oYu%u}ab z|GqI{D@2`Ga2jVy3C4j)>Il|fSAlY?HK^(f1RnI;13Z7uy7-JM9%5#j+O*h=30&kR zKvNj2#m!ALljo+6a{iMi_e?|CipLou8-4wfYO>NZT3BSaw9Y~#W)hN4d$?V%IXo2R zRQ63Fr9uaejY)fhoa9qgXyssVm{WU;uD^gx z>^Im!Egu=D{LJwPOiVz459d7J#4^Q(=A$Z0UWIvD;^6}cr7glM;)h{N4&d6Zq^a%2sl@-b{2XupZ@0Ok_@VlL7On>A z2w=&dKx`qZf(E1pVTuX!ZyFsY)z+5M?55Ani!GTtMwAV@b3?84+yGo=7qo{SJ7kX> zC8QuL95E3Wxb)y6w;c=o`jkGr4EZ5%DhfPzYenkVJtt#uX#1LUw(te`C8LE}Xu<+v zQ=?3suH+_xM-ArO@IPfR|7&eo(n}J_#?P+%@6QoxLFGjIE9T^ZoAu>I?NL zTWn#J9>QDR%BL-p%QwQPGo@QqVCl6|7tKeur)bxb>`nElNs>p{CQ%|HA%3mcR(n3a zB9%RbuXH{{l(KIiTa%@yXl{~5exUNBgU!z_)@#o#&o+lget|B-Nl<fxGSFwoy;SMS%_{G1HKkWaomsGOyTBMK&*nwkbMHF2$@ z44M5cko%DFH=_kru?5IG8M9Ru2u#gLLJHfG@<3MCIItg^>@zr^!(}LEL#cOud!een zyN&rg5osrKSHB6@?)+RwWrAP)9=O8;1L3K8XMMhwu9B!56%pjy{F;T9mwiCB`4MC) z-lTA%&_b3h9yJVY`*eXzwMHJ(yF_a0c1i%vxWJgBsL*CEO{x}XYKdcCPj@!gt5x37 zx(C1K(5P^F!P9u1uHBJEtQczA9H{S)SIrWTmYVbHH|3eyO(Y1#>|iyBTKt{^+j zz{PI}u@0ASG#KW}m#viz?^>CgN!|S>)jQKtBjQjnuU}}R$ zG^db{uFLiMxSD{j>wUN067&0pJ6go}C6-9djrAtXHG()dgC&xh9p`qr0An~*4TTJB z3vP)UQ?nPFQAoR$r8&wqMDWuNu;%cYS{FX;7~oXq2wfCxI!2~rom~MtyOrPV25X*nhQ6P;WS8w z*fq}WS}2<|1JO^ZS+dYO5n#`x7Lb1h_4==^+qKB{#;ZL;Y)DAIQo$Ge;$+O4Jgxk} zA%{>T4VD+c_&UkazQ~w~*6i4wQwYVQM**t9h$9kkFG-mmxWj?VCqWKLE20#mvpsiT z3`)WdtFQBH$-P+lXK;8N2YUjqh3^SNUul{n7A8 z$}{aCZ`HidmTm#t@k5_(8d^zurBmaMs*LNwO;1^fB4GA{7rv7x&E8Aor`;kPs0X!H zjKO*gZ#3)fpa?dNS)u$L6i8Y_pkYC7=d(1_n%enK@9d3CsYy3=^Q8bi@7@n9ZWR#^ zg{+3k)UbOPL{!)neS8EaAe=^c>Yg>G2fE*Q;ey2Zm^#$l(|L-S`$013<<1yG--H%r zwQBZk(i2xDWv)P+P{#P%*aek`vU+#{IpSb0NagDMO#aNnY7YC$tYImU(5u1(EIP}1 zMm8aVVw2nw@yR{fTNJZOA>*3F8}9MLP_^mNH9my46w#gTgxdmIYxbd}$Xv;Xqf}jU zoB*(760j5aR$%sSdr@Z7w)hZ>5_0CH7;s^}w>>y~Y-QkTs*9GwPqe_R`%+uP3^;>i z0Z9XxsL*p%A|y_`p|ELP2;$3lgq_J~O3vl^&e{u+`;ef5y+;Ttfu0hG&UhE_f^Mx! zA6yE?DwfR4E#-+?i>i|vUqSg!XzE=4>{iOIics5X1|hU(Qxaag;p2zBT%FOB;}snS zo2639PaqhEaX?_z)ZZa_HDTV177%u(BWl~aSS2}}agF$fRzSzIbvZ7AmV1fjdQs_Xh}d^XY8I8%f#*EZS!HZA^^Yx-<`ofgi1 ztB`#|`$k;}CY|<=GnXi&5}yOBHS_hDur$ZQ7t@%{Z}R?>Q~j@G;PsNJbNoXF_sjqQ zu>TURWsmi| z#u;GIUL3@?lZ?Dvk=WV`Vr=0hWQFuklgu)ctOK|{7({=5@4d4RZvY_K@1;3TqkBzA ze6UB$IS8Y(1^WPv6AbPqPgNTA(WR5@6_GWjH*eMv2pKRI&BlB%2oVhO(4fQSh(HgH z1qKGz5K}LNetdPPOJSx50yrNw#@SY8!dYTbCNsv#=G=yb&X@@RdxJVrV}T5g%C1+$yg<~Sk86@jBkFfRmzJ1K$HLhScfK=o1s#`>xDeP)U zMg+W!2ubFP-y^rHpKyed6Y6&!FD)|o44e?s8#9j2bP<=!s+LLT#$WBDqZPiFWmcL_ zkXX(0_eITo5v$C3Uk@Wn(aGUECeUv^y`Y|}+3m9fkdHG&i`g9>t;St~K3Sv(xoNZ= zccE>}rf+mfw|PZJ!iq2BqwgReM#7L|L)2P(@<#NOE$(%EQ(Ogj_gwLOd2P5ZLNQ)!` zND=g^F@I4ryG)~#ERpSkW=_*T^W@taTdFd|Vj3@!QS)0qyTL;< zs7_~LMQu2ODUYk&HB&Ytuz@!x_(hW0;@Cyz} zODuHgfUPHRlBGimdG5i4jSoL<2r*i}J_?hxJGK1XE@I*Jk-`_Hd6f20M{na4XK+;w z6cw+O$dPY!Gv4|H+pG>^IiCt&;r!vsn#L*Fx?+^IhP*;28_`tzle`!sW_*)%l@T(OFb_T&ZrM zPztp}wQ$m)^>uJ|53t5a4J8N)@vLHal_R|x^G#`~m8Z&bpna%Y%+oAWPFyu4izF!G z&4(rV8Ve?-%8#S#Qtnw*_!1d=+b{Dfu{@YKW8uyd-F-@pQ5v>6pvc&no zhuQawwWE~dpfi^JY_i$8kX2){*ifzdaAgE)ZHQcfnlBoTwLIjcvF>RwuQ|FMK2^rt z0Q~bTF+uo*xv2u1Ie`Z?a2~N(DM*|d?3W;*XD4_u)bY|aJ>DTtW^T2>@Ud>UV*Hv-SX} z1;1)v7Z_WXdB-*<5%e2WcoRg&i6Lh;bb8P=i?gPWLc!=_Rurxd(dx&zH?3H1C+YuK zy^LCT*#EL}fw(XcVR;FwyM@pL+l-UM=a?sep9K4d!$!voy9bVS;X9c(Le1V+#CkJ@#K zK~S-QwDi=le8K(SZVyi38-(Rx004?;002<_ixJH99gK|>ogB<^xE5#)6+P*!S&d`W9i~~Kq zFhnr9?aYhCWJ5iFds_B=BS&%(p| zBe8%=ktQ7BOUoFp*6-(GT0+=h@-l7(DaFI5QC};e?z5NsoHdvMD*%l}vzUhrlRaB$ zX^}?VXvyJY4FMJXLe+)+cu1eeZW6-035A$B+6fb`rN3(%e+tNH$Sn%-%ZZg6xbF^| zEaQR;%Rf>RZSQE8HL689)?kVXrY>rqS}elbq)7V7#?m%?S4N;UxR_X6Fl}yx) z+(W!AuLvrJgxFGnw^7LOD+(OMZxj@A%}w;7e;BH#?v*>$}!#hD9bn~XDc%At4? zk-udw|E5~FD)64!eB)JsCgM(YRSIO~J}dvs_>u?E{TBP4`0T(Z7?M7UA9V8h4Ldic zPg-0!OYG+^3@RT|-e!8-D>eH4n9QW=#mj82-vML9k3U*dad5Xr2dK@hA_k>rf69Af zO3z>~^AH(T;zk`G#IZTa&JfE|ho@m1pweJVDuz@9VWUtL0*$`E?BM9VNVl6Va4`aK ziR>tq6`V~y-wbR?=`wwIRYg+IJgOx@y>%>o+L(atP2^PfbE%|>X@pwM`5gkH#Vryx z$0lv$43i4g*d~o1wDlc$9K8c^cEa^nne$wS>xYN8tu0=^%-aNTXOyJa$-M>a@MQy% ze@w4igjlP56jMN-Ma{tympfFsC!xU?FKXVXL6$bgwPiq}{CTCK>`ohpqP)?E^KFfT z(sm=Ft{R_oi|uk0KzqCY{`%{ygkXIR`MTbGD!rPlb!8mWT9^4G`Y%YqZ-$ngIRw9_ zMn^e1e+~G#bDLF*na?ivTE-wzBX+j5JIMlhqYEDXH_*|jy++yM0jU8hSR6&TKqI~Vq4K=McF^1z&%g2tznaM!xxW_KvQoB zG%3$=nZ2OZtPZFEYG=C@Zm=|-9%=oQ`M7n{s|U6w%z_7&S~Q5pCCHR~lw9phw6Tkd z+he#VBcxPnknx<;<=f^gZxa5kA4CYEhO+&YG-QcsZNNst~}US6-c-yKcWs9l*uvP;Hy6dwTW>sMOog=W{)1>~!moTU9!WS>+{UG)Q&$bsr zzHRdR7(FLAvni8)FC4BiIPW(#ZWbNQV09Axl8ij7yZB5!#*Ucf(#2sc5wSs^=buM8 z&pv$t>=-zoMz}Ax#%J+6DOI)MnYK!KV)W;T1rfEs8pXcVkMRDMwKU7CX@ZE!R+wUp zM}lsMuj+?};kZ#{<*EjDh(FB}+jz{p@COv$({N<$oTLU_0GQO|@=K5eS3kR*XF0`O z&H#o5+mAL|+Fs6cGB`)b_YjP?4fPIx9nX#qP5yfQ5PT)2+6CW6`V}~E*Mh%2 zbO?7>tsEwnt_E(C^@)D1y)RTr{ctyIFD05O>12UokcJZJc?e95nGj1J{J=XZ2QQ9U!yiNz_`RLFJH zHcr0UDfCQ#h>NY8oxgitFQO2SfAtfQavj(zhrH{CO}!nVSpmG8?FRY7jd08o{zCYj z`Se5r!G6Y-J;+9BM6|pjpuk7*NKnqfywaXPO>@Hv21Hz1d?`N=u2%geRe#J*&m=k2 zkNu%MKnlJ{+`uT^!*aCHCIHnTgC=*}R*vX};$e7VM1 z+dK21-ek|qO%s!>bBQI8NK=*Zuw$iyD@X58mCD{DmiU@3ituEQJ@Y1K`b>Neaesl0 z-E2C%>fMHvSD^+QH=PIG+53-1uRwi{B39KGoHuM`KX{^HG{Bm*)wMoODSnc-Rc`P6 z;`)7TPFNks8$CeAz(l)0#@F>j{RtK;l0y#_9b#&|3DeHsGC}w(1Z?v^uFGcYlpI&o z@&zN0w6MnIvk#?6cf!?7D_&{+S(9d$!6O01Kk<>0iaG61A|!@iu$Umz)V>mxye|*c z*Kic@#ebu7Zm7EdPC&g3h>_haBUiSbL`B0`{k`g(cW#E*CGnKB3t>yX47 zt*N?B$D)R|;9V06V-*h|Il0#Do!D_#dZmH>)|fx?>mU``?H3m0ale= znB8ex-ednd_RYY<2l-?IGenU$Kj0D87HowiPVg$$AiO`?KW{k^6eRvKnCTV6G+8+v z3zBKjY+A2gCixnbTFNpwfVbEFibhr#(SgWQEA6_Op{=xBDvOh-MG=(g%3!1SM(tQ6 zy@8&kQRnv%BkkcYW6SPKI%q1d?|HrEubO}-4N}#2&Mh=Cd&0fn2s}U21+pU{^&Yv- zlbs4{3gS4`l8a}Eusi29TIE$g0vm-~?3<3RC(bq`I}`^t6QQpCzxEE)v%FShJh~lJ z{J+`kT-E6q$R8qE$ACc*~e!3~2x#PfM5JdMq0-Xo`0rCT0R^)>%sa(;O{O%9LIp%b3EFoFdve0z8}TqCK_$&E^487 z0W!?hGyAeiM>XmMUo#YI)Lp|65|CkPT6N3aye;&RRm>pV4w4VNze7N zvu6X=l%YBU!`pVEFzUc_&%)_7#>yG3n!Hvuf?551?k`AmBh08CHP)vHAoT4Zq131v z(m4g}C8wnosgt0Bfq4Olc2Tt*&kvO*l17_^QN}gSDh3hyB-%^2O*Glf5}p!8OU(^j z+zuquRKrS!w0PT|F9an`Ctz&WLc|0g>;M~k{ww|v!XE}ulxD`aQrRapB%-W!vnt;k z%ayX>5+-n4@Y#CPvzm$zGvio<^Z=Y)#0~y2V8Z+Uii(hUeH%e-MHxe{uxwT$i_;$( z=*Z)8N$qtD6^*(B))`$^26V2U`<68I9wDNi{FmEE^0Si4OEN~jvc)-JB3TVbiXb)i zS|#odIQd`k`A0>=1HPYS!Z$ADA#DOo)B}UBKXy_nnxVeBlXYCq+QdVMJ4WoPP`c=F zMr7;B{^IU(6jdhl(~8-5_;pvBy?Xiir8e>eIl>_OC;yCB2!mqp--alEp1MWki!3sW z;QdGghjcPa5`5y$w+Ig>hTseL7J&Gtz3APt_$!tq4@GUjbSobIgef(g;A`xOfEWPQ zCoB^mTsAmrD+nCJcPo=~;RpDm^oDp6}j^KZNO z&Hx($eaQZXQxXu&cfj-0383=tjMxvsUZm>-`^3P)PB>rXd4TCBgl%JR@hdnPi9w3S zwD%_K0?I+T^XhOpSISMV-Z=Utx_fuRwFki?o8B-+n=)AY z000MbABh84f?(KIA=Rt$viE-#ocpo|ynZY7FYDTycai@x1mk`rg#`xy0D6DEe?6t# z86nFH=n-do%QyXjl0&szGompmCcUeZC|+Rqf~(Z15dLdcaBw(bv1Tc*4a|lE{6&@> zZjN>GmjFASM{6jO=q&-#8lE_?^>_to?Pv)G?vBZ zN~9vhlaQ&n!^|p53~ctdLa8v0pmj|FlsQwZ#Z2Q<7%QVMEk(m`%YAF#R_Bl|NUwN# zde10(fo96m9_l}Eo_cZJ@|gfqvdqQu0DK%ngjI&%+B`(?JI6Qb5(j#(7#Xg_5e}13 zE}hcftI&sq2H&kR4f)kXmAd#r!>^wk!%B%@HFPS!i~Ka!yIh8k5{e+Yp#Ir0b-1km z#zso-ilz%*s=HGEnrEqEUoBQaE=D&~&u)nf_k2vLef3KVk1@a#-w%ysGZ&cCx+6mqmL7Qy-R!XRfPdQizkx-h6li z0kn1u2Ulfaz;?!nM}Rc-vAxkJF}H0mdWOdOKn@>-f*vNkOV1cq`IIcfNQu2X`B(Fu zcYMtzg)_t0{I?N}x?%#mt>pEP&g6`sS5O>&hX;>!;74^E*Kp~=h67$2+vk1s(BL8$ zorKoyjP%U(RS@e!iZ>-CwrNr{aGoC4m@KqSdLVFSjY~`2N-osBAVDYGwAZz2XCOJ0 zd_}Wyjtm#Yx3xWIRXZae&&c#d5dIY0>RJ7v^p^e1F6c5ic+jfO5+bUZ)^K^19@^>- z%2h2O|8<@T1kCxjhWJLKq;&QQV^3Ql}4!U3A_n>e@+3l8>HuuRLlsjsaKx)7K5R*lhg&1pLT4Iufskw2P&LghPFaw9U=GrNjkM=xm0EJVXvs zKa@qJ9nB&|nqLZ8fX)q2O6JQW(Cdhx~fDlb3T; z@p{@&cpY7#(i0P^;lo5QW7tsE=_?J~Bv`IY9P{6cxY%KB*-lLu)HbpQ^NlIC`z&jT zQWTy*8p!{Gl@KH-9o?_A>YU5+pL4z?3KQJlzYIOS@h?Yp*F|%1i9oGv_<7agCjZ9r zflpl|Razr`hoTr?njsnf-OWL-3yDssf2=FQ)^sFvX^yF_KRd`R`%Eq96 zoyEZk(i~p=tQ3adrenK-*6l>-Zz=Q*Z(Ij0XsyRI-Acfxw#?w*tpFMg2{v>i? zt2(jcCo!)gWBO{dkyg;s7eczD<%gQR^`d@2|A@)2^SQ(RgsJ}b7BYwPKo(7}Nt z(3w1I1`b`&@|Z(itgGpjHLLp0^_Ne#lB~|;m7!m*I8?bgu5#uBxw>{kUyt*ITs;Zm zVL2{1$&Lx4!L&kvPIJ!vu4WwcV$+f%#o*xDTC$(~+3If{1Xm0akDrP(EQoB+3ppnMI zLR&IjM!^s;Nxzg%NlB-RNs0qurlhA3cu z%fQ_YL~)M@>m00jCBU(8v2TVI(n2NDT;J%ZixusEJ6u_$fsGtW=*zbDmWpzqZKKZ9 zK59NVxTAOu3)u%g+1imZhbQH7Iwb@2Mt0&pm0Q7`fJC@FJClE=IM5@ylg<^dGNSgW zm#g!1GlLO;wB*k7!zj|qwX8AJLCf-u=ZX+cFHCyjjl`L6p#xK{M&~>b3(r2mYzI7-GuMI94<%1~ zTqjU3Qc>3W6Ab2=#phKKKR55RG^>SrLDJ)^D9w0L+#wa;hH2jBwSv+!jzgNb)Rl~J z;HRp~aY6W%#6~^6fP!R(=#SK-#j3G%L1QaI)2)ZmNX@rBUn*($#`CA5OWWgr zF-hy855Lz-+42g4E_=li1#$Ux_1r>(dk2(ov7)KUv)j3$U31E4FeP>PnZc-wvq>|H zBrsn=&qn4*piH)gNnyGK_}Qf(-}7N`BOud{h0^K4Obe;BGFNzl$P=fK_YjF~U)?l~ ztk_XXu1IkH$jM6rD9A2ym7SLP{lOWt_7v41NkCYKhBAj;$1iOqT|$Cdq^`8yp_p*% zia(mYPtYLx?M%C=tp}$3bsEtF7G)4I?~j42k{W`YgHPxb*@};DcVX!5^HYm!QYv(M zCB7|H&0bsm@$e_2$2=^f58hQWxjalh{V_tnx|)4Z1$dcQ?+S&EUL_LcSV;w~cL!ZZ9(IiJA-j5g|dkZd`&(Z6{+&t#nbI@X;#m zU!nJYl$1Ff1qCIm)-dxL-A@*@JDy3u>Fo2CyuM^qWD!Ub9GU=}r30RnYi7(%T$%JmG3)X#Q#RY6;PF z1Usdd^MNQIs-Z2xxgf)FKf#;uz5BewykiLg`$wrUki8%=beTMuypGJueHfPiH_%}+ zYyRFwqK`%CBlX{f!39xvG}_=7A#0V!RC2TV;1?!CzP^)QY{A~?Ep08MRv2{L`Q0?va7Dof?Edh-urs0c$sV$@l z8A3nzl83rx|6uRqa~E0FVI)N?tgQwMB1puh5aHp)Xyhd+a{1ii%8^%I@l&B~vlh7k zriQFnbIA}EF4h?m^XffL-Pb6}X&btf0@$=eN#i4LTGoKXsd5svovy%*3O6@mQBqoV zFO`I=mj;xR$POO~bJ#jP;7p5WuCzef{z?(XiclR^PIZ*B3lZwY-*k@bXCf@R^SIEB z+{`yLQg9rNUpC~9GK|X~Q(xPyd<^qzh;Z)_X2kC7b=$ zbv{o`I@~U6+G~o9ydoNA&n>TCD{R0lJG7jj)z$@80jy1Nam}CNKZhVHom>S&nM~8QRkM- zg!HBy9)^Bp`2bTW0E~mtB+iP0c@Fe8*em^P7ObzDC4j22v|+vbJz=k#^n@uQFhL?eOAOog$*E* z1|NZL_RbHIlK7q+c`G=lqUup0=n+GBG8~Bnh1WF(hdbvX!yhQIznrP}4JCgxBQpp| z&bWp5nHFdWUORW0-7a}e=lATbMvt=k`FD$`jYhWHUV_7JxY6H}BK_5aay=u0-*M+q zWA=9IQo;A9i68~eu^N(5EGZ3;mNq&Mq{PO{Nu^OwGxOF%Q!QC=^r6xsm$o)n33G8| z2M-5wh>-4PHsNPwxn-$1ae4EQ3?=0z2;}0+guUPh1hxiY04XDMS7y;Y%=YR}v5HmN z`Kg4{*z|PQ&|Eu0N4&Ba!~1B)f?Z+-j@I}Kmwq|>Qvh4-3Y`;|1b+(KjcwR1V0mSy zm#JkwKV23n=+q`lY#6Q?tNm!|ym8z|bS&r=5?3cEdOV5PV40l|$uTG|sYF)b#EWt8wt-7b&M9=MhnuH|lV{<(TuB#S0jjo(mt>^Dk^*h`fJkIeg8NnNYm zd#>pj`?ltIwLHp~IX)|u@Fa|1cIc}=yUi0zH@EJ=66D!nq1gGgm)w7{rFsDfjq-u? zk)f-6RJa_NE!aC_)qKa-Fx*-V~K5>Ig8eTQF zjdL;NWZtGLvwog952WG(a<#5lNqaAT19zV-v*PVmme?)txHPR)7$`(0%A#JBMVdnV z-ke$3X4lnTeXxDT1XWDKKdevYV|wF;njOxxZ1v5PCld=?lu~khN`)jztX=YcZyXu8 z%$Z+DKQ3A$#c=KCpKkFIZaa%(jVhDN^XrYlr&}D6sC z-I;#F)z(~aFl#8K@j$VCoz(6DN8A%0vMGXV{rPrgZm_v!V_lX0fNaw;Y1632{mhMM)vi`fe-VdKH!=P@<8qtz=;{8{o}#pH z;(QbLRG~+iqh)H}PcHvY29!rAVT5#k;)`pG_@_B-TQ?q92WVbPOXFAcS)nA3yJm$& zR2#n_Cx?HL4K;MVZ0HLRg(?$S{TA>E#MbMR_u zUCNqMCUR)-VdM(~wq2JNGfGK`gaM}EAHA^h+0b=o+pqAgzT56dOz9ZPGJy5!`fs9= zRTUK)C8ZNDPTE;E_6q??-X=k%>$<*S37?ka~PRk%@%GdZN3VM+7{jUdqoIO zdNq@{>&H6&KoWE$tt_yjXNXCF!ur{zTdiSAA9pARMg!{3wULxC3|)-GIN00%ja8t5 z#u+`NT;{IfCC-4U7F<+iz->rYQSEf1`X9e&OTua2zquJ}i>)~lYiK9VhsBS)&O=8Tot^y> zFUW|nm1HbKxYUIN@x&zyY#){6>lR3)+lBL$lak}}_Rp0%PC{gtYha{$CQd!;w#&P> zanUx{eJnjkx-D5|&dNX+n4`6-3i9QdnI>uKcaAl~?F*YoMY-?N@TfS}#mo#*xVTS|Xpl z++%gB4$11#0&JVZFMLJSZ@Ba=KGJ!w|1fcJm~)GIzZl%?y(KkC(pIF--W44?WqG7d z=`^+S=Ss$^thTC%q57w4r#b4aTp3-i`ir-_Mpe|X|kQyQwawKyq27C1w43 z_GN>Tlxq*)5?N;J-OT(QvU9}#5NWq_%vDDHJ&e#n=IOBCW!7yqMZrbrats;wy7w1} z24Whzu-r3sx);7#_79MgNgZ|ICgj?>J=xXK{9UH}tT+7N06s4_FjT>4}S6Ex2 z3kTG%|m z(~8f#i98pCzM0?d7?x2A#dODdB-IRK7Gmd-Ol;5V6p|_wX^=^WFvYyE=*ELsQj-Lm zFMPEB@Ud=WZWmQWf+1tKWLSuj?37`bX94U8z~64ZcX{&i?^y+lfqO>zM+u;PF#|8V z&fAxRxQ@)X|3T_k=!(~$y{z#70KC+H;`afLFPcw47GU$=2_ND9R|5q9y#Rj_B%Rf* zb2J&jm+}BTaf*d4-&F%5aw(l^c8>xo5sV(%*HaMy#_v3=UUh2h$gL41YX0nM{&)8O zV;JJU*Yf|lng7!TIBcz#-c8;1tuuc8tMCfIW-P=7w@%E4;HX|Wjoyy!Aw=FT0{|d? z3!(++YY35#=i{0Ef+=VLfdBVh_&?pY{~V+NIJ)qi&*?ckm0_&C9$VDcs)scV2I;K- zdz5Fn$OYa3t5#>HPDhsaU!W)ORa}A2x!p4PKIztYW!Ri(kUtvwfLM5g6V-Gi2+leW=;2 z@p7E)BibBU!JijQZB|l2B+)G!`k`lrGU+dnoTqCiJlZC z(km7zcyQaxC4@ZMI_`~A=Aw2FrXi5?obirKPM`3O^Y}xufjGODC?5cg@a5JPjXm4D zW3ZRcog}Px`p2)sLh<+G|Jw;O=$7LdWb&R-1G&=&fhFAYoc~5T_}@sg+=~uh{TH#a z{~sRGo`o7qB(;}$r=j+8cYvPgfAfwP%7TXtm!maOibF(po!gfZ9E?mvxsPl161cC_z}*tH2!IOA7i;B!J{7Jo zLSLTT+~l!9^2mWNN8xyWu)I%2q%>z1GWcMAbIxrcKEL5}eYAv)k7twTN2DZ4aC~4T z?zquHa0>@m7x*`!=9v^MtRsR4MGmkCZWo+~^XB!iBD(Y+^0q|`gxX6fp` zUTP-Y727+zJm2vTtRtKAhIX)b#X~wL>!b(ZU=3gYO6(r|ddixkToOqAZd< z874*Egr(2j_sSsFco_+MvDU1JaymRwARJR4Y^rVP>g4 z`*LosFhROzSJPsj*3wET>KPXt?6_O@Azn@kvsM>o=+nFO)uyj$yYzMFOB34!Yb^Z^ zJcCwjIAmK;9|eRco$iXLBheu-BnRB+a^dZ26kcwfuK=Hdb9)BA_r|G^tS(H~^RbJ0 zXUwTJ`0PEZ8CEX(b<&{_FF-d~WCl~Q8L=P#vKo2uHS3Rn+v;7B(Wb3*=7^0U-uT(_`z!tb#&87!-C(4fFSf zn4$z&P)DqYqSJJ4tvX>L!}&e$28H+w;~3fAJwYa?Lx@&}PsgnRCYcCJNL5=@hUxZT zdt`DCXQuGHNfnbai#^=LQFzBN+_?LYwY8-<3877Ri^6a~`3N0Ai z#gYn&7c9(^?m5Nu!CZUTU`f7dRJ<~hk9VawO+*2;C`QQ2pka2d7^>8t`WPuw(`w?7 zWd0Q3-I4ck)}m26O?6l6X#r!3dLIqK9>)@EOxgjUB2AK3qQzg_*8qJI@1Uja`X9tt z{8N*(%|A>fsB;}ATZVbK&4{{D_kOqHwb6Q?F1e10%~v1}X;<+{IPr1`#U)KTzs?=x zzP_ms$IBOzfLo`8*~IvyUT{pl6SNRic!Lm2a40ocv~)Uy0KHmRJ#XnC40| z19kX9x5K+<1m>r zBxif?A;~DsFb@n0yaU7GhRY5gqhLaAp(;2);&i)#9<@od;#kGH1@Z6jPN`Fz|6DPyrn!Op`8DayLG{t%}vuk%9{3Lq;B5UyWK( zE|_KR3%Bm|iImJxl7^aY(AM6bZ+CjxXNexGiQA;arpK@C;>KjQ>@PMjNMwbMgSVV9 zEYxGw=N2_Owb@oCNyI(QbZ^OCdP(8(*%9^;5eCl(`C0I&-(BU8+Z0Nr->ipW6iW^a z_Os5It8PQ+88IpJw$Q)3tKm*7AC1CUixpExXDusMPYcunG?qoP=E&e?> z(eTI_e!>Dxm;Qn+hNad;xIk@Fb?Fl4`FrP2CdtD2QFt!7u&H96Dcm66A1eWu6;w&T z0?;QNjRSLa`8+O{6hA1t=bnzWZ2#TpDX~^NMLS95I3Fu!Sa=xTscfx*P2DCFgY#U* zqo|w1zw*-QU^Ts-gnE@4RUFEe@}g6nq(ZGa$UsyAq`G~f$ zw+ZIX6ff+n5=HfNAkWEht$3viF1P>(&-)v$hN0Ft;DV)J^LrB&*s?(iq8}SIs5cym z=jIL@-AzfE4HGhNYHI337r_c?=TPs1-Dn{RYz>OYU@946GGMRFX1d+PK4|AX2BF+4 zoH$Q?0O$|A=)R7Pe}jcG&bJ0IHEb&^$;imOV`0D-2*n)DMeqCJrc>Lj%#cWCs9nRy zUP~p{AL|oda}8oKtZ!F19UlJsOheP!5muS)k=(`%TNf7hx+NYBN0^tK+H10_+c2t| zQ2lLnq@;pgfabT}$TLASc-p9Q;iYHx*ERlLppU+&la zDv83k2dHH@9;-%?a4_DqV)X@5C$jKIR#&q;aMGORyP~o>JWI||zxW9b=fS!AgN+;O`Xwe5fhmQ4*#Ni_5c9?uyNZ3 z%rBg~A&~PqL8_28g<)MFX`5!+U%reLu1*TCww7bt)tehXnDTm_qf*Om-k#;4u&_3F z#ivgf0WhCT5^o0x40H#_m*3xLh>{Q1RWuhKiWq%vUWWO^AK68MWw8j+3^GB3Q(i~q_eT$789Z{4C(F6Xr8bGgfdyRv2LsCg0L}e;daU(p0@bk* z5Q7r#`1wHJ+*ynGd5dd-qw1YFQrMT`V=tsL0BqYZtRdH_W>mK;>hAR<77{X@KfHe({C%++-PY1o{@Edpuhib(lz%vcAPt={rz`w!agVE4<+^!%x)%&h6}#P3wKx zDZtPh`wfq;*Cd0}G_<-;<+Fwb@GniByAqBC<(J#pYqSOj&zp=kTp!;t!AkAmzMhRg z)YaRZ&@1_^plUx_Rj(DFTANrm3vft(ABjP?`k*0k)qDrN#yzD*6nj=o-T#GQLR11$>`_h<%Y55%364Z#FxG?x0y;B z;0^<0naSQLtb@il!G5D`B{V>1zU)~2K3RRbVwkiGK~b>BOP}TqC{_75mXChmw?dJc zD7#ohsfT&*B5I6)^(ol$iB(xM#C%Io>BYr$I%q|T!&d3s9BGzHOBCCV#fV+0#10ef zEDP2@Y;kA_)y!nQG2rKH-=r8$)fG+TM-&hBEgXbCO2)9~uNirag9q*$6VFUx><9HH zteK-f3+MVD0k+lo^>drLsj)SxS8^r4Yxe11`**>- zcPdB6E%oZQ#RO7bzZ4clnnRtrh?<91RZ-}V!~033&n~faGHUN&BW92w2&+ZkV+k`f zn9r@5X=qO#34Pp#y}YEHJ2*H=9t`5gF9kNMqRZLZCWbbwro?XHxBb{?0k9GFPMQF@ zeN4KpqUQKA7@dM;%aetK1qCe=*q^;Q`2_>Mnw}tu*xI|dq@A5v@l#X!b`16jakE}T z!WLsTE0!3Mx!)~tLz0QZ(3jxq* zbu1`Q7A{w_$g`NqS}zorCp^8_SW&y4Sr$p0dA z!Orq_H~;|*Lildd5-CLCYyIK1(+ABVt<2hI)`+KcoX>YGJ38sA%=RxX5`$+^OGC+% z-H(2he7SwdmGyI6&-qtp-_fsK^);_kG^NU|28zNMx3`XGjmKJpq7?n4yr$_Imb?H6OpUj6 zS~~Q)@(%2_F`Nl)(FIi(x4Ok!JJ zsbJmQ_;1pjC?7Cm?n{`}desirH%G*d=TQ@NurCxjaXq(6w^5I?(XOv(7(vFmIN1&G zd|bB)9XmAUi)0jJIjqi-qJ8BI3^Wc>runA_(w0>kR{2#c$vR=0(?%PjgbcwowNKV+ z9eE5fJm?E@SNDvd;<|*tXj97CKAUOR5xvGJ%wK97R+t<1tbx78RXP~jC1h*d`W_90 zFnArV-Q=`m{QD8|+}POo-e$xV1X$Zf23@qasAsf|>XEFjE?%_@Ivl}^KHpM|&jkk; z_4~G6Zh;i^QtQd5EWGI;?Zu|g)%F8|dc+OSL$l8?vL)7(o|j9s*h>$MV2r4dTzJ%hB z&xHox2BefD;p~pd5t3=ZB4OvF{_lBRl+)Q*-3`BaNsAH!(3BF>-q`;`8+OO%9xeha z#x@_3*QjCapbI;u0&HRGU@m7kyL^fnEzmF^%U;p1Ps5hlEm_PL9{=v{eK1;EJs0C` zU5@B)J4a(lgn0DArKEukd_(q`>z!+gfPpIs+Te0<9((+JN`*Em-1-CXg}k0;13{}| zwow3YOw3;bTmK7U_Wy10!2cx_B$#wT9%WgS@{dm?jD&RnOw;Y;E_^_RILzASU(OWj z&7C&Y?QeXLZ9ssnpc!Yu``E<4ok+}9LsRc!mR=O-NJiveBqv;@9;@pf-@_RiVF47avQ!DYE zhx%|jTN_zU?18Bz6u|E+cNhn(KaB>%$Icj$qx9uN%316He|i`RL&cGue{!%4b1=`- z`k#9lbMdc}x?l{`a7Iyjb9aWT#}3CMXs)i`XB^@sw`62KQ~m+fuaQrjm%-cMzv9f0 zB}DLG{&?4Gi?8*}!v=n*lL*c`-I3kZ6&&VGD}CaXIQZp__Q856fO)~q{lDyv6|OQ9 z?RKRWU%8J+9M5qieFQh~z?bAk7LwFa7Jf0Rg>TO3?=4Lj)yz&Fg_SD^iRV@DWzYYoS zIRxB$zbD_)ebMf4UQ5&=hP}u;)0PVX-|)4RhQ=D#*!r3LzSrtT0vIPPSdKH>zKw?Y z8#bRX`7(oRSLz+EN6?4ocwI0D6xf0uKlRNk>(Bi(He4~j&cx+GQ}z>wR!NDRv= zHA~_=1|h=+(4JtSHEHAu|=z5UUu#ZU66!g8}xV0*=@zi#Ku+(Ay|SK z1Ez?sJL_AneqsMy6{3ubL&}Wev||^1%7q)g=u`-A4W*Pt%7XR!LsP;}IocA$LQ`T= zeii+saD+4d30qBdk85?*N`2dodbWsCas?ZnU1yfTI4mA*vY$-q9xaVwFX)JcgxT8Q zXM+FCE4Ln}HRXn^Ov|I^tFUu#{-djJH4-esPfTSQ0LE;v0+)*7nmF@wJkQSWdi0ch zAYC01in&tI$2e)TT01N4$v8o}{zy{Bi`8c(B}=Q%xK?bi*DJauD$5vQ+;|fD=8}Hv z7au)}A8(vb+Av1-RBDo*RRDyzoBM18u|lAPlFxfbIPHAg8_!@mVCG_r=Me#CO*;!r zV+KOEuMK(c_gkSvW!kc2)%Ll^kGXXo_a1Z?_OLm?llEKhdO4uMU}F~^;GlCg8$lG3 zg0icuWog8fyyx;$@+B}Ci0kO09YQ3mYu2)LEjTWp{<)P|69|m=wht|FI+|Pm{^M4D z-_v!8aX7JIPsHOaX-m(qWdjn6vMaUMA37+EdU@4y3_Z^^edXm7Cg`O(qXN73sy<8Ukxw+)zz$YOD&dxHVj{-0gDrVz`pz2@13&v(Q z533Ad-j%o-$LWwHyT|uHFQgfQEP%vCy88jPB*RD^M%dEjG+L&?d2Rm^2}>2OwOpr* zoJl;th{iD%#@Yj^K}h7@hUf&d3QOEg5b}>8;vc)HM{j^Zhex$5^FfN4yL@Rl_m$PmjZ z+%+k*paPIA)la0&)rSi8m2kgToOL+_s-~k;C-*#nPzbn3ZEQKzh#e3M%_Zo9 z9`pRUfTOek>eDRMQ)aWZwS}{L$tgsP%!Y~>0g?0Aq?ha|=tJ}h4UOs_*IyMy5p~T@ zQmtFClAoQ*%R+r0Rqw^*D*f}9>Me{pix-XGd;|5R!42~|3rf%yHkHjh?KKC9*ZcHk zj@j_j@#S^>^Ph>wlaVRf&bQQT|p7AJPz zJfc@?y)QI(#wnlyxLZ$4t9q9(03*N@9%QAmSg~X4tjI1bfX-R--aKKW0cYZ-0I{I% zURBP(6~OEeIl7El8}2FloJP;x$wS+qMaJH7u@~*BDVyv!yA*l24;Pv2(dSt%K2dTK zGOfI-cRBgX=rDTDKn<49Ge_G4g&6MZ?~5UXzyFlgaDrM7-P6tWSSQy>=< z^w_dTK*EyKuVA2D1n}cX-?R*CffIz;kUU?z$#JK6^LTflFeI=X{7zZJ+quiVvRtw7 zXM?R=7i2%QGo-0+DV9&l@a500BK(M8W9KaxdNzkf1RXK>3j0wZ-lT{p9OYyJ%${4o z{QeAK0GykJMI*9AOAGRS6+wJ>Qt=rAY$NfS8l?hp{2{;seLc`q23Ym7W`s}`P4uyu z_0;Bu2+eVdknnz5R{{+kQT$MNRF_<#smw5Mtxj#^z?6hSvWSfI+!ERN@_x0-IfH)? z@B7-~vo9y9>+#sb)|648eBBKYSIs&<&_JVCg za`#B5^<8I-D>~yLIS4OQNaUL*nwG>fD|0{GnE8CuIO;Vujd1C5K@`25G+O;Y%u}TQ zQV(7=H9v_hHBC^GJ~s(b7VDduO0lyixm#D&mqOFWM+F4=Qnswc{0dfGkK`0oC9xIz z(yN#}Pq~eNY0BVL_Bx>m?#>r>Cmay<0W_4QV4Jnfw=*oG zu&Cv@Mhw8+ysa3^?mjldXyGu*$O z?VYYq_*YAlx0KhzY52Rsv>N8z#akH$M zbtRjSWiubo6tZ)`>|v&;!;k4&#=l%BF6hZyh*gM0Hp$iE;v3eqW*RbgNAD|>mJDhDQ^rjaL z#s{1IddB+5K8GT^YOJ%#!0lF}>qd0heSd(sZsgzih4Pmr#)R7u)03jlfL!J7(?4XW z7O<=y{(?L{Mc)LyKjFTPaQ?^C8Nes~%k=%9@0!%-;eeV%@>sEdVBn|VT~OnT?f%;z z;EHl`ZU5uKr&0dvl+PTViC@B|_j5tP(R!R1^X9d#q-Ao%ybrb`76(MR^Z$%;DX;VS zf}c(L0CcN6^t!Hl`jJ=q8zg(rWAC5fS&d+$yw1uX`KB*DdcjG_1T*7RfQaO@vcB(6 zZqrKIXTH_a?pasdHV3EHf=|(%53|4xTz4Ws!DUcvpl+(VvHT0jdhqmRj^td3zr4CS z+>+$%-R(WPlFKT4_Lz9A>H7;(YSEu!)6aYUO$#vfRqre5Lxs$OpD(Sb_I={4t@U%o zZdwykQ$ag&@27A{6==p)e0BTy&E>~4>`w%tx~17osIqeMW1{HPui{S=p9_58LA=ry zI(fI(eiS*|cK^QQD{lI2ugjLnBUhs%@xATY)FaphDamMxdG3sWn-9<5N`e=Arw^}i zu@m^9-=T6vT>LgUyr(bIZw}g z0id#Fs3M0Y9SVC2o-3saF$-+TrxeRk=2>!I32~XD6(LKtE-|Y;d4#sev}k*> zC70^5#0u(GXdW0}%34A<6y{3~iT>agd&^qc0?r#gB@=kTJ%(p_eKkqZw zKV8~fl8@9A1cADVkV~e}iMC7`{qEW)dHNHRQ)$M4Ics@4RuwWdAV4y5(4YxQTnx%8 zQ^Y+ViZSmIl+Cs4h=_N_H(_N(K^GPplhA4@2sFw1kTZm}#dWu0Erh0r0_aN5uc?y# z^0~EVN@S8dT{M2#!O`tITqLX1!q^@Bro)6xJm4Ljo zp{pcUz84n@6Qk(!cfU6waCeD^+wR~f-s44p5ap~*iLA69;>$XdX?cqw?`rqD2h5KM zq;sH5u_Hg-o^F8Eu$R1Pk%9(Yku#*<7#0XzP)6W_W^cxc_he!uO^2sB!6hYZ3EJms zL;bgYWYu?0oQ-_jWhTA(C@83Tx=NtZMX6(2idZ~_RHEXLyh^T(bLH4Sh~1cWoffg~ zxDzAi^@-F^BayP`0ZDMU5xH@^w$p|o3PBh>EfuE?y%BuUXC{juByad?<6YB`Hk$Vk zs1H$XKaI0{=$$21EU3@K`Y4lMzZ|@E%nF{HwCv~4)#EvM6zW?Y3-A5vZP&9ho^8N8 zsi|Rkxpd==&eMoqFb#*pQ5U44f-@_>sjCKL#X*RUT{-d0~ zYdkV@L>YbXbOIrgyT2T0cf@{hJB@1yV@4(a-mMy9Hjqv_e7*l(62Y@G@R@Ze!?uAP z2%LKO>++P4z3gDHjL6X^sir1-XBWALZF(={v-;G^DK^XUta8i2QSenOgG?O*2X`jK zfQ~03*1KY&TgqKD#H+_88R-23#ATuT`@Vm7y3XEt`j$fqcg*8QLNF5z3rahJ*^m zee<2v12^qNorWyUs^alDGJ6_yLvojWyLdA9TMhFp3eX<0ql+7A)uPxlBYmBWY&3;Y z2BlVuC;bTTnLl_Kj%o9=5N85|(~Z`y>X5)_4k$=bvQUYM0zR(@6b-+-mNYO&%@3RT zl!ETN+1l(s3J(J6`&3Bu^6ImiJ{(?RwN;A771gy(6}ouHbA!5N1W(WKxLtp~tO|vr zO&jN5yIW$n6>{YFL}}_-dp`rSra|On72>SuXIr8bmr(yTJ?l)rc{?@WbLh94-z8g7 zhHkF)N1jtaQ5Q{8%B`vKd?M6*A@=QtFurZ|FV$p-zapZy;%Kd- zDneThPHlVWFJdox7H6)umO^592c1t62spq;NTt_Ak>qZ);vz20H`sJ!L%V!`m>+9g zga;B4hFJq#>w3$`DmCnTkGsN51y-6om(03Erz5#~K+0;f1<(CMSTA2hNGh_H$2rAI zS(ZF%CHB6nL7b~rv)y=BS5c{ZJ=YvJv3=E&#Pq7xCGRbtls^kBCwU^^4W2t~3w0D&6zMqN|mAhZCtpm~99_ANrEu zSt^_3!V^=oWZHF>F4Rx(*J+M7{L7?9PBp^IH=dO;FB!-lIX_Wq`I=%%R24?!iG5dO z6VvQdRIE)Et6)7*n3-G~yOKefefTcbsQly+%%y7Tt0}}=Suk9cM>a6YwWVf>TfqMY zx8;DS2>iD6x=P;)?qs9LkBv93VKPIt&(p;W{T&oupDpBlVT3+dWYV-g$RIMGi%d^h zn)5Zi!?>_9%>21}txF}>WUIvY2m7Ao;+JNSCvGx82@IZ{VPWYGYB;H@nA3|nk^D8} zZc&_`L~sklO~?^`u(j3m6z5)9(3HFVdU(lz{ZVMkyJ5xDjC|vi^i|W+Jf3HA#g!D{ zG|KB%<)JuMp!f<+It#Qd*~p)9D#6)Oz0533Z$&Yp zZ(3Zs7u7Cm!Ezsfwc3*<+eE0Bmi7+^wq8#hjgQ>Tf$Zrz@zXtojmux=g@#3|ar#~wX z%q2o)*24#Qs-f2P=95I)?pqu-E-P7-r37z!Yi2v+*hV#GR$aaX1gIDj#jI{@oS*x3 zL_vSTQdS&=GPY)AC; zibUzr9gq(#z~O8M@N5cozL`3aA$jmUv2M7WJ!E)EqDgk@8r|mx{Zq^0`%f|d@r{2t zF@EF!(}6+v&(ci)g-`fN2tgXw#Gk6>Ip^B{L(M`}pjBu+T-#wn(aNHl7h?jbSqiSz zEG8^N|5CFw693ajAoPRfZ}{vO zZaHH%ZS|7Wo#QHZQ002`I9O=z=>7 zxn-!^3+>|anIKN3PIwKppl}i!)oH z)4EeTGe2EZ^m<2QfNhhsZdMLei6n}xcef+Y8DYL06#V{I*m0ZLMf`p>7jebjTTNF_ z*CuPrK1LFmH&(-65X=XTCXa-*lWK>Uz(t~(a%rgvsAS{w5u|?>r-%$%)mEWnntn5Z z>?a%TbaGatW=J{RSnUXPb9v=C^i=2(3D_Y3$8GFws%8M4DTglfm$0g@q^2$2U zA{V_qAIy5`68W%Gjqte5mmL0bB<9M0k+g;ArUdw*w|hQ$bMKXHplaxDyJJDB*uO*C2*RiZ5B*CHHzb|2u6Z+cDK20(3vnP@1_0L(e z+PROb!%gz;PS+l^lr2lfvgELG%91mXmauaIl}@rR4mxk4;guJ~&~-2IEiM>y0+v*8PxTAP;*O>M%;>uw%>aOhXI7Iyr!O;hnY-Z1GR&PC$ zcCZJrQjUL?+ZAuQ*XwIkS+~&?+7|vP;-LUZ$tHDoM2DztnQ}}w4WY{Ok=$de4m2xi z$3qa4EC92-sF|^hthQ6pv-BU~>0Z_qLGq(|B*FS5{F5dp=_+z~Hz9rnc?Bib*&nfH zzr%+t(+!I}-=v(}D9)wd8V=$+FnZ!WfXt=eEM-vDPmz7Hrg>ZGEd46W*0gyca;z~s zcBILjy!!OA!f8Q`nc9Fa*&AbRHagpiT!?*5VlA$PbzT2*7Oyfv3j(DlM3Dy@R@Nb! zNZ!sr>Mksz!A<^VMXBpecOBjY`TPxp85G#QP#@?$lGoYm7olKSn+YE+9c;+HV5p6X20XYI)gC>-;fiJh<16~Qy%`Qp>*b8`h7eT1`$Upo20ibk&N#*TVF1c6^uQrEi3?A}UV6KSjF=-Hmm_$bIG z&ERox%MoQPt^idC&jeECAL(z4I)i z$Z*yt)MTtq3wGESr5evGGcd`&V7SSXL~Cy^tsiIYjU~}*18452sYgD6?SAEzp%#h{ zW!kK+ijDhJhutjUlU_$q0vYL>5U4J5F1^DMyS>8-ik?3TAo7mI?sGih0!M3EJ@FHs z>_0xsa)V%L3FGLC)YmIjN(VyahnGV3L&xv9s_Vs7RCErcMBM~2$pBOA6F(dMf($mQ zfdQ4k6WwJbM^r(?f`i;qjB!_&nOt)Xp_eoE6o-wp_TTXjAl_(4UN)RsDne2nHe*C_ zSngPvMW>nIhs>=tR?TaH;6f8b5lqx`UEJUK#o6?9+(Gxw2$r=9nd}3ds+YtFUP!7t zZhgXGjlDF1#enL58o|7d*Txp^0L7KGS~NKZ@H?ZPsJVRp2r?~-mRP7N4oRY}G) zNpS0oiNhX!ZDxR|D9eY%>bbFCwq$I7j zu7T0+;Z^U1sp92szYOsfPdzxqKnkbIL*~oH>0;AGBqL^Xd}#tt8;5SxWCsPQadmrk zJEJsYy4SRw7TTkmg$4ma*K5Vb50Z%qZx~hb{K&y7tT#zO!bpL!AVj8qSEilby946Z zw6Atr?5r4e7fEG}v&r4EkVwgESTL7cth(3h7YQ8)xPrGK#61}iuOml}uUC>zRNW~z zu;`Bmj%p`ryh0&7$5G~1Pa6Ty<7U3z4B0m1f4|RDXW9j%SwGa+Oz3@?RzKF93I6is zh6)BImU;uktF~vQqown5Ex+P)5>DxfbYQriEF^6oqu5!&8AB_?=74wAklahIfyH8m zYxUr7I@@!og*33dhbvUh(dJOpL@u>m9N7sfo;Nkryi(^5e$SFq}RMLN+ z_dMiu<@;@8BQ)l`C+;=RRC?_v=B6W&du~KP_OVJ;QofM3*kg5vvhG@Z1S;ze2Y}l3 zUyVM0WL-c()&E8W{JtrU4T8+6A6orZVDRT-yJdl^|D?jc_K+YjAi&6*er020Ap!6w zvtIj?DHJU&m-ku!X_Wl$#N_|(q`9kVHtZ?0u07enCE$lQBmxPsWHqLfl>k6BA;5YNtpo)imz&N|i)?Ii1iS>9ETOnN) z0(BqMEe=3Z$C|5GFwea?Xe4{XQf_U^5$4cFuow~&)P!KG+2)Z%+iJVY7Ouu{R> z4*f~0VW!$xBu)(j)v&~kzky& zOV69-wUr>D-O>?&n^c=^rM56CSuofic!Cb7DhDk+pJPE%^z>`e0(8mue+yH2K!6~yq%e27mZ73UN zJTQ>T$c-NY(K)vsmSJ8hrJB6;t-D5~OeAagu>}n!Vx4ZqA(-WMG(hPd`)Wq9rAtguJvjP2F`?%0KJiLmh7!7TlqVD z`W*=*_2&jW4c_}&s~D58nkCch4B8x<9+>@EYidAwhKGUI24y+!7e)Nse+1gQ;pn2X z>hN6B$m~js^6X$Ea4XvR;H+rz&Stu}r7}-!Yo5+ zxp5NNK4M(v*6%+D8QP4W&70^--Zd!h(xU_;t4xYGXQq858W?!Jen~$jgLkbYFa-VGxs-E!G<=xvII@5>0jyNssr$q^L3}4QD(Kn~3|mlSL+M3A1kS%)1R)LKw2# zvOJW4mLAF?)cTAH$VNLx3)$TGOvcnRM*;COsJ=#e*rsUhRg|jW(zm{_H37Z>7pt1A zSqR*}ZYiR7;UXg0zSBn?w0FnRMPT(fYy48(W1_52vQ$@^L11fIRH-VK&Zh3`V=gey zgP4oH)7$Q{D3{WWmiVu7>7JK6@&MirH$qul9p)99NYq>g$6cs6q}HgX8h;f8@U~JA zk?&f;nsaZYGz}>wJowyS{uuJk6v)!h99XQI%sczW#r&}Pu{}X znmB7xBiEMuqJ zQ?I7(Kj-E}XAf?G_7XL+1Z@o6{Ebr8ZIquFBiqdd7ib9~5fFIJ04Eq=;80~6Kpsg@ z)p~2?J-NF$2}z({6<4=+0RyPfs(C;!yK2$TJxD+OhsUveW9Q@yl8nT$A|%MG#;dwv z+itJqC^#M&cT^Z>HixCM9$JS~>l0lznAZvAVFr+Zz$dFd^>0ui@9$q629Q(2U@9 zKu>|eXmN0;T-Ab?nl!?^PhT!|<)V?%NySmiaX!C~_KKggdUYvd-Q)p@K~jgn>1iq_ z2|%N~Y4zy-3)WDkqGkOwOVDvgztif|%LZ`ggCbwKJY;n@tzcZLDkXy8O&YKgvEG7c z>x*w$%v?bEWm+$KZ;;5mkpJq`;j}ril6)HPXpp=e>`n9I+bz%=JQqPa=))1yd9+fv zYRBtkfyx#B0iT3^Hg zhRVq#VoZOxJwNm1OT{SD%FiXUY80dSk7@vU zIIp~|ZgK4NfD8pv`K+?G#0EE{R+$U4g^e`^WZ@stIpbNoBO+rz^lcGELu^Bgzm`|L zy^;P+^tkY#JCJ8Ew01k*Kzh1-)8tTZW4BuVNM^Io&Qnk?z0z=2#Cdq4|GY}{Aaat| z^U*mf;Kra^|LGT=%dN#Bm^gL4Z_FX!&RPw`<(g&7uo-g5ArA5`EBWS00BH8+iT>eA z2*XUYb@}nySXgiOD28Hup)8zMhWM?Z`Yv~O-nr>^*i{kJJ>=(|{yn8V!WTCNL0t<_IZA5Ohs`3|a zEPi3h51ocGvd?Fxd8fFF1`^2Rwu+DiT!MN4pIXYk({_?Fml${pl!ymuyQ9t=)-c+Y z21e<_$(@nC8*!vkAKL^8I3GoNWQlMWpH1FN-z% zrLx{$RbQZDO76RV;%?tId(_i5#IF9+zU!qW-|KZ406|cP? zz~jG*RtDbs-!s?0Th!B%^|unMl@s_K>UcB@h(HgbQqE!5WxjZOui0W$$S%MD>{8D!3zn>n8v?x0YX3DdSj} z_Wm8w?3_EUVZc(rEG8lYgo%u$J+Y*$dCis&Xpp)n^M$M|v5FUBXR6n+WaSS0R%4ya zwV}p&NGLVFXuKfK7+>tml#LD}#YT7N`=htDc8sXSWRvz<{G(`@8;$sLD|UmxK&N2| z%X{7P@&M_K+Ew-U%$ZN3Fm|}my_tYe?CVjzRQ&yVTq3U`GkZz;tc~>eh>Bnr9XRbf zre$P2^?qX9SwWiQ@sok6>R1bn%%5c&1q;V8KRc!y!-`oWMmu#gy+a9((y64FDG zx|vn6dyLu+mBj4#F=FKh!MK(H&Ii_#KV0F${oV`j&y>auuEdesM|#P3Mt4(gfR+St zlxe2;>mr?+1Y%unX5>scI)ZMDc`n)(+MP=wh(z1Oja7g`*RBLk=?!)BKuwP0Xr<({ ztxJqfli$_;F>B4Rpr)Vx;JG80C`KBKcf%?q8jK zzc|i7HfEo7WCG!g*$N>dD99`iC=?tuwIvx%;C_l6zW!3C*4C9@uF1C{uBl+Xocsdz zNq|wk<>+F6@>&PS?#SF!ea4pou)FB9g9X4mD^56a=KU$=o>HaNO&JDXqe(W;@hiDZ zAmq>6IbNm8;t9F$AIjETJapS(>U3^=k4`aGgPbDk9%-=dBMJ(7@Fu<+-Aavn%1MXo zM*?Z-Im|TOQQh=@%9rampP!6P@b)wFwYjE#+lq|!GyN*p8VeQ>iTxwQ)~sDbf;G|j zxLK|?s%hfMA0jrbeosM-=NikD1XHa<7;=)RM8w1d;wL@8aA0Q7#1m*lw1ru(3V<{C`P|AR>A_g*ta0ZZlJ#=+5!BVj@%yY@MAOrZ)sEy@+V1{9jnRwN zVMZ|cC$Sx`6MhY=+a?TP+1~moJ|6^5>E~{Oq^KbkJ(CG5_x9|< zNYl}S>a|N(r|gV@DDtek^_Ho!ZZ!5AimG?XqcBnxMpgFJ4&x&}?jTU>E-gaTA}Zs# zzbiA3(2|>C*Pg6-I0PU+!h}SsCMjo676=F%l$tTV>Rw(b>CC#hxnI~%4so1)wF##a zGosj$Ejtm{Q;#euX)g&CfczZ`j= zN#FFJ$F#H~f9}*4`CXct{PsVRd9FbLdVk?EzFW#BjyGLtL3o%c3q^7Vs2R`LE@opo z2Vg&LYk?m73yCa0Yj)2ks53W<%EGMq32b;IAg#_Mugzy|Kf-R#Xcf#x_-4t)#O|MUB z_+tKZ$Ipx!o=f`DuH*!mnMf5e$eGH~1+%(#p}T;|Aijpt{7!=-SY{q-UX)00D5BcC z;I)^!J?#gDJ%g)@Hzh5PWY|DGOw@n#4l=W#!4lg23>uj?3tn&Bks9fhwQr?{4 zOw)4r0}q!>V|({X#ov;XxerL98nvk~!K>|9@lY()>6W|-!!@HAZlPT|9Nbn|`6s2Y zUbp1zMT~LP%6;^0#_(+j1xb{u!So)mQUW7zEz#amrlXRh0g{6MV1O0n7KZ~bZi1wx z7i9frK*(PlAFG1CiO)RWuPI(_Pq}5xI9(}lKR~%=(&kJG-i$DIgtO@QxK?Ds4_|1` z^mia7F=>xa_k3*ACp~ArWU#X)oT+{jdMd%8ms%%XYYeBcmOoAI1WFZdA?IQBwjS%Y zLMx8Mu3R)xjf8B0PRqZlM~GRd+YV_Y1}Jv=*H#w+$D?esnYNvT$=76kPeq^s15Li2 zit3TEfqYqxn+Iz_R$U_#?VVrILpVe?r+bi)>afBtE1h?RRpl@S6XB9M;g);K*SiKd zr)L0ZM9S^U`3uL8+*^I*EcNIedtqC+@V2!_tj~sC_Q-h_ltM5ESznR&*5P1BEwi*# z@OEf>(K=7PWzRTt0#mkA5{Qc*8i^|w3jAcZV)P%e#KG^XI|8aEfkHxYFn7O4RbbhW>wX)wFqq%|x~3SkK} zaWkw!SK@Bgw?N8fgMk(R^0D%WQAUhkL=41^(X|ae`@2x2Q^Z}GQlg|>YN|8nSv6l0Jut-5qxLFmRZPe zuUUzPusZn((cz>|ZQG*?+t`e~e3tC5D}ppq z(6ar{LC4=;01DYq36?h`tXcI3uqK9Uv5xTBOu1}Q5D^fd4rTkt$2+(Hb+p#CI+`oC zx3_my`=2F2{;M<+{|}f2sNjDu!!QOyI~Q+#CeHanUS)j?>8h#kykjUd=Q~VNo*^A* zDfi!yF0uu|R%#;SSyA7ePe^(G;9BjM*G}y)U<&}<=QGii;ulmKI$szkLS5W8i9(I( z|0s0l<6RSOe5eT&5^<1T+@f`ySC_TxHaz57<%Zhc+CYt z?3Pb}+?$W|I>)1n#H@eu%6)+|`O0HD2xokKSJ{H+-2egSH@M_oAtrESv&V7T;cOG6 zkzzg2n&Nu4@$3oICATGdwagHpqWP>%LEK6}Y9T3ddQ#I>qhfx7%BDoZ7TVWu>@5WX zku za%?B~wsg+9X4+9dHZs}vaF|-eIpZig2>hbJxY+NV<_46Wc)0RiD(txEz5CwuZpbMw z8i2+6Xhu706)CT->CrHJ|pzc+6^K5;Vh zJ}X@gFO9Z2B4l1V?^7wMB7{B6gY`9F_>4E`Uf=#)-0#cG3q1zh2F7)k9uYJMY-yV} zJ3=-+Js)oEWF2F;L|tYUyT%{WV?$}X!8Qs6#mg(nv#SLWtx=luW{{;aP$D1=a#qr8 zIcy3sk2GI~oeag`7xswux;#-l=pqLX>Y#hJZ5o`k^?N72tIhZxEa%2=&+1<=ccrmg zpF5O1qqOdNbb#umo^U8j-fhvXR6v`-rk8H)ZAo>u?PPy}I{VnI0&!2fsm3~+2rSTcJ@hX+M zBFH*C?3+Eh4eF*dF5!ki7{Oar`QXf+^p6T`4V5@H)-Gom^9&mE$>2Qh`zM6SIV@AbCwADZ-?zTsNpM@ zZA~@pbZ1|NwXf~EDhqVdzZyuX;3QE*ws93laN$KYhTH6b`Wfv2wOfskMhDV*2{8J6 zOCcrE%MXjt6bw1{3r%QiJ@M(8q}n~uFfG-PHuL<>mbEZ89#m&y(S{c!Z)bLulxHk5 zu&b`<(b$npVepC;wsg`)F9WdDZkx#$*z`i*lZ8`e9af74K%C#rcpy_dFz?!Sjlyx9 zJ?g1R;5qKlu~3&R)bk3_U72R%4bNBWoW+1-csd!NOay^zkm<`{UY!8Qihud9B^N&A zpv(FE4Jcx7J|Q*GB%at=45Oc|V&nu0#_OkO)??sF+c^W^o{Iz^g8f+_$fY=T&suy0 zAa!v{FP(OzmE09Q+7ovnPn|}@r6M;1Zd3)yPj-%FU*4K-)Y zKKYS1lpcHCHOxB3O-^Tkrl8aNhkX~VQB;^XkBmPoahl%Opu0Yv$7zZr7s{J3(xO`b z2_1y{E;@p``9bd*o=bo6me`Md%Sz&HiP}G`l^!;BbbR~1AMEIfK@ZP3mW+%z&c@Dn z8#n;NaENSwhdVSv5`f>a@s7(HRaXsNv%33BDUZTL-tV=~2okyZ)Jj-UtV-%ZMTBc> z%jW5WE%2U!-ke@%uxg+Sd%ruS{Hf4}Mh5?z)?FTG5#a;~kiPuH2jptkHL)eA?gDpt}}q2`ucY($dpaREmsk`Pw1XA`=Wen>MEAF1Z20 z3?S~0R2Q&Y)%U7yPlE^7HmFZ0XM8rsK0tysT?4# z;%5u8IlMzQ=G1=^LG`nR-PJlPnH2|~{jV2@B@oK6=^ zoA4I5A>tX84*5`>YW)b^b+rqqbt^p^GuBgU0cWqz06oA+J>BU_kW+J>9Q+k$J)W`RD~rbtS?}rXcAiF;no0V5pnc(yW%C^ z+)}Ky+~vd-9uG~IKFs_pBuwq3!}+cs|J4t~BARI6b64h=9G&*nc|~%mro*})bl7H} zu_ekIZVPC%b<}TvW>-3Qykwg3t_sV<_zKPr(|Wg*1(tuAS!3qHrSNpnJRG@SB z7e26j(%J#?s6{rreD^_#3Hsf%so~Hqm^3;8=;g`7<2o!=J`J`o8juDo9i6pV=$Ub* z(pF1zAZwa*%m!-w=K3!&!F>W$XUo!WB|t1taS_dldOFJPRVf6Rl{{l4`2H})N8lO> z5nAzHFZu2&Guf(*0rHVZpV$FxZBQS5y(^Ybn4ayRkXLL80RWSCN&1o3nRW(WW9bJV zrh)PC0*wMDE0AfyOGDkAr zrlXW4lJ1ZjKm~b*TP|@!M5Q2Z)HN)RH95&~5O0gN+Oj==$d&aKyuo z>;LE_%=4f05*`AK(zpKf62`Y_t_NQB|LG-cICO+Qx*E0UdE4q4<;tXO4KHDL^H)w; z{f^XaXbSj}s^}ik*;mR7W%aVaxN`$dDxfK+!c@(K|5S_Z%Y2gzjVUWd}9d!qe(Hr7Vqe*&Ht zlRoDb*Xk3Xd{8L8=bvM9p+GGr;1R?X&3yg)?|PtYAMp5a4F2zXf<0=Su#sakq&?fi zP~h=jhL1=TUbB)rR$p#&-nj`FhLiYCEG7XtCg^zOsb|D3$fu9Iw8dZrczwXT?zj&q zPlJ;oI^?lTj&*CI@%S=J<(MJR&FsQWWuz(jd0k~yfskLIk~9Mx@ix^rh`v`S;bfYJFp;X|SOJr+yXxv3@2fiv zJy}@5m81rPI-$nT1|>%c+q5um29z2G=RkKA_UtJ}@xfsGDz^8&YyAo8EOA$hTOM6> z>jE(`8V9_{ovuS6#RiIyR4}-HCT{7m%iQaSCu0F!w;d544 zLjl^h$T$BLRxX0)A_eX$2St8w$B*bVp|rb$x5#h&OD{#xX&+X=ipzP7D(!qSIML;| z5ae2D4-LQ6XN|u!t=#1xayNNQblT?;D8{oh_%-;t`9xy1e3~G3)7hKNBjjvp%CjtG zXkBwpIrnX#72Z^!!ORMrg_X>Yq{91)b<>R7!c`qT3#ms*DQiXR>37Ab?PonfbNN>0Yu1O-NDu5~feSWt8t5YZDh1k+LT5BsHz$6~ zW{{#LEls+Al&7(MeIsW6nS_EU!iUr3#p{X7uRd8!TgJrhBt}}=8SS7`u)~8#&x7?sf3@#f1>D> zxw&ALQ|R7F7of3fTUOyhSY3FOm^B|36g0a7?&*WSitHiU=IX0u;-m3CGHGC}AA-J$IjY^=$e3I))k%fl( zON@3%8vk`sRNMA_bJJo4mpW-)x>R`p3lfe=YTkKCx$Y_U>0^U?zK2x~MPzGC=M4qV$$|TOBa}fST z)&IuwbnW3)&;(zfRY$dw^ujM;2NpM*%i7Y@b&(c^BU&ZZRJHq&qk42&r^MQE>D}xm zqd3f3_rVP9@UZ&pDbxPKOarGXS&8kCpmhk9qWG#p4A4KSba}geJ4`Yem1CMvM1Ky= zUKG!S7~ic7q0_eS%k3@o9)})TSm9kJkZpVS;mb&qYCVa2m3tYm z^mES1Z{RdB|x=eEi%8=3b{uIbbnP zX9e3ozX)GOm?Q*_w)N{3)^8O|Zft)M)fM^1B}%Plj>YuAyyetoG|l!5wjyBR;lv4A zexf}1c8%IcM;LL3gPzqnn36QLpRNJ#1UVP-_BRxQ9Cg-1w+=J+l4_0P@&mo!(0 zD{CEeL<}^-ucBZuq|!%{UZcmm_&{!P_NIP(#ZvFo?5l5_)+h8{!a5Wu0xt3C!OLy4 zyQ%EuW|Jd0rFK?ZT?&P?TLz2um=vNYF<8XhK}LZdP54wxgRdAYKkYk(*d|fihr3o3 z$iKEGezb9r{uL;9RbTi?3LFYyhXfxt5A9X%txklXx4xGbC6uPKOH@>$XEsDTn7aJw z4*6ZllvAFt7iQ=KVBLMoSqL9`K80DXIva`>LDmdY8HIYw5(EkxAk(`1M1hm zjceAA<08`@4$l~>A6|abWUd=X@tH`BM9EphSu;$=ZM1Io(yS|` z1j1V{j{E}N<-ID#U%4199Nch~x|^zaD`P6oXE z>5Ak$amX8iZ^2saBr%^L6$%_A;exTFs!vHleeU%&x+2W2ZDLG}K{$ zw)R8tM(c9r2;~-pPXJ$r;rR4f@d`iKspBNj6ef2&vPLXZjWkNqEr3nced>P^_myF7 zwcEC-3swpRihji%3dQZii@R$J6b%7_1+77m0>vGQ2B$bA1ZijPOEh8gZ>V6i_l)re<`KkS_Uv+9;z5QFpxY7Q=vXm@g#+Wl+%EFVI z*M!N0I#w#%A2q!6v{meRcl^4JAG{^0^(bsQc21XtH*HM!@V%nUVlm=qW^#dWPhirp zk^C{{*R<=ygTc5$BMM(h!hpU65;}J~4rIi_5lA$?TUaSQA7Xktm?N79ZKESdbi$#Gu~jUgTouH(w5dsWDL;X1=<$U|2- zvU6<~%lg8na((-1rLVIv?^V96Og$Hb%~x(OH9dgzVeI=MU1JfL&Oq0>bTls>J3lLF zGP-fh)Qz3FIUGFVt^0aa;_ud|{(k2j&WYV35oXO1%T);{SF*G${C*%i+1pKEx`Y1W zVJs|I9pZV`8~!~g#RbvFg;pk76CUTJjf!!NZ$BvMNaV!A6p|RPv`jK)^G>7QsBbC= zkXqUi$;d>P_3eL&XZ^KAFB@oO5-9hA)^G?>|0&L?aad~y#grMPMC#R@+d!>08^S0m zP^4&0Hu94st$Ib6_TJFf`C{3%ImJvVUZ!6cHIWZ4+;xV@lcQq-AH;Qp;zu^fhvxEt zi^_ZSLSE+v1s$3lYdDwYAZWEMyT1+;%)XJgSPhLjeRpstlBurU65$cCg|~)-`Gs+P z_{i&k%OAz#Bvh~8@$h!!?F@c};@>^oHZt`MEx(88F{yU?d4z=5sZbeX+Dyd?eH>-O zoS>lf2GI=yE^OPd`ava*bo0>0!**4Tsd$Lr*!QP<)Kz-A0%tVr6q#|88zJzjf+_b7 z3gUcbUGR9d6x-D(6B}jPchS150P8`$Yjf0ES~EPKXSCSS5CXl&;8|3{>9bHd412uA zq#4_f_(WS`2L3T!#c?=-XS;5KO)g)NOCt0+x3M=HG0gAvbiy>z2=%#9i7uvjrFVWy zdQ~tZadTQ2P3sq}2yyYLP=bNN>BuYQ=lSzz*iVv#iDfO8Ha}1lPu83o7@lK;ks`zt zv9{?n#G-Eb2#o(J6Z82M>Z;XM8X~93)Qgux895vKJFe~^H+Tccd)-(!by2`+F`_th zdC4eDj(O0hH-mSb-_xf`^KK+Ui5i{p>%p{X=|=X-oyM9{`IP{ic$xe3YSST0FD<^( zLPvspMUbjj;urC99NSq`D3RNd0d;Q+dT4anq}ae`_>&Fjfs>`m7k2S>S_1+E z%hv^^ry=Jp{D}EqY@j0dm;s!fo3HFEhkqo`Q3Wm;yvU<(X^Iqmb%#l-K|KYa(?m1RDf!0V&D#>c6j z5LzW+V%Dp+z|SIoF_~=aXd%piYO1YIe?6(nCzI1B(5NZz7_ROl+)nn!j3Bb=-M-MS z-Rcf(=Z%)5tS5b#5_%!Dv#oDIeW%2_c=YOkAk0QpbF(2C8uc#R^(?0;prg0`ygGIV zxtDAj?=)u^lb%`_Sz|%%9`PnPbAXVz{{wzModO*$rPxB=nT}0f{?FYS3MncZ*~GMK zf8GiI2@>MQECeUG&`RAHx&stCW$v2IZySX0;kzAu$F^2~P|%Z+c{P3yR=lzCvyq3H zh9?lNt9Vw32P-Wq_10VTv9}7SK5NgFgd-?I**wzskJXYxY!P2|U~JU&_3fG%@`ql@ ztX=PP^*Eye>tUQ+`0PHz1J$d!qxYP#n>QHotHM5UPT%)v3r<3359BBDYnr~GptqeX zZkb2q*;Uf?yJwS_11+SK*09e@Hw<3M_SiM%fWzI$aDlfP5if?SSn)K)=n|_B$GrQh zetuEf(1#$sO)3-k@X=L#0d1L9#%0%fN&vJ9K|iu_T+dN#ag1BWl549i%^06wCKnVQ zJ3AL|D6NKCJP_8{kg|~QhWm{isZdek`e;ych1MgzuPM5Fv26{OO}1>0dW+b)T1mQn zA4e4a@&+=capp(G%;N|7%zCbmS0+`Rt)^2{CYq&9d9AvfS>O2*f%lw47MtKUZd8r< zJPhNirlzj<){J_gqJ?!_o$9_KxHETM%*0T9(&r-YoMlFTQk^vtE0mX2&d)(Nu)QA= zB$cDq-Pd87lA-m$m}^9*#MbS)R4U`){ZEqUp?ho|cfIN0Z{tsonf+zSf)ul)A*p*hU=n{cT**qs5lAr;?IxrnE*dOT`xCcJ1r}Bl*|9^vc8v&gk|f>%jpHMNyCX$Ynn!qGPv}oF z3CWndOT!&SV$nb;+=B$paBN8H%<)g9jM>D*IN^(o$G_%rTf4!Mk6w)mE63)N<>-|z z?9kbF2HnL6cS}@)S49NGbmHF#$cr6XZkfeT&}iK^+ac0gz0&l{DCDyQ3;b9v`0w`a2axXrbV>1E{+4Bfq*#x; z_qS;F>H_DWRab@J{_eDs}-smWJ<>KJZ^CrM$xi9ESydpKPPWEx6fVk&%$&9#jQue8B^PLQUI8C-UxD ze*~+6B`9t4q^`l|+v$mT>luB|A_;ubJP6R2%n~~rY`rtZ1>WOsLIXeMzwja1;!o2# z3#QQL^%M2*%~AH8pu1*%1&qtsn|Y-yW1)4hSySDWuLS`>i}gb_vh4GVr>&;)>bIFh z)B^B_@lqZg-}jki=5!djsA3uVCX7AKClz0{n;}h%kk8Nv^U2EY8A(KT8{VO%^^;Gm zTWI)-`^ogc%%m^;)7Eveo=IYwYiS1sE$z1Tb(v}`_Fh%Z#wlX#)J~askjCrvk!F^e zOkYi0sk60sQgq3va;p2>$9CTzRT-Dt^V1uLbf#7h#pU*l)=}0|iqGy_5o(D2a5;shRd;t~ z55tl=GY82lhh!`Z&$ z;UB|1T@_ZK2V_sOT@ zWuCqw4?qLk$kY`OL8H4waaCMEN9J%YJD!>}_zbIla^vHWY2$=-)t}miELWS?&SWg( zO7vFx(uffR&;HO2yucEMpKlK#Z%%4AH-Fe+!K+)y47swg{(_?d3>#q z8(vuBxICRy^BP^R`V{d<5PYppYM7$AXO59ppdCaut$bS$1;Fo%P+Lg;LjCLCR&4p2 zm+WQ-noEK3={XdaZX6?+#ZN!Jriu|#du*l8-%%&@91)qzh<}EXCcxGc*FHHCnw`=h zHYnA}FtX>f4qdKtpQLF1;Oj`&ciGJK$xXabz9aeth4=jiQ+JDr3rrYwpJDN`_p_Pe@N=1kcF| z!gJQ>Q2Gp#B5F+Fxdi@UFIE9s$(+R8hpq1$;^?2p`Fs0fe6x%VWb;i744`V$)nGCNC(5?|KpWWMHMS3@2Ma|v^S z>kw4~q{JGl4RJy;o5Yc9ky1H7e_WLvu4dZ&p7ym{Wn)@BpzasdA0>aHk(2BH)_*V1 z`n*PD)d$g0uNQwD%V74~HZbh1BCHV5|GhfE^=K7kw#`tWnHJK8qO}PhQHo7rAV2}y zs!A40jc3>r&aT0rpnUF~*_knu%-`=g6662EM1xC|x}2i>Jcjx33f`$H8k%Zs`(qd9 z{8_3S79Xp*P@MJuWmHJ4wy-h4VW3-iX8vI-?EBs6Fn??Dqp`U8FICEX!1R0nXxl=s z)D$%iu6+}K+c(sd{_79iZst;6gM95nHJs+ZX9v|MuW{Sf*Q84B-uckYW4rG}D!jma z>A2-zT2j(87<4k3HlQZ4^}t?i1{EKFmQ-vth%epKU(E2YYFs?8yzDqgYVt10@ zo2FdwDp4fiw)-<~Syc%3S6 z@+!x#c$$+oT88A^JJt!x^j8MyHCE)*cgT(#9m!gVp54`nOpE^n*#5CRs&u7;};z1r70 z+b&FYoNKA%3zUvzz&-}|fc)UMg^hP%bM&E-E~kJ`t3v`KZKi=uNrAwF{s)}tSl84# z?%~7%ZNp1?LJel|;(-*>NHsh?>jn`%3%T~r-3MWg&W6i+XJ_+v4fV}e-|bfUG^BHF z@$$+0{SW;{S4rSj;+BK*Z?m`GK--M^VE(buiAltcZPve(?ga{{nCSpJ}1}CQI`}bR|q(y1s#_b*CcfH z8t9I3D}|L*a)Kp2Z~pKEa#;N*rA-UE9pZkY%Bml z_;AWmVCETUHm*ekAH>L0GbuLz@?YKl|EJ;Y&)^(POx8%~YATb1kWefBOnQy%O$R#t z`WFp_*a9f4%QX%>ytw4)n>ZN|nbELld+aKv`c}Y}^+Ok(5l)NtI*U^Ka9 zEen~NIFI9mQe0;%TzhFO!?`FO+1W%AT`MO43={g(qLAvTS%Lk<-&PaaR*9v=gugBW z+rmyc2c|dO|6GJGt7hwjcvE;T<~ie#kCo>y`d(=Q>#1SJf82r=7Ov*ksJ56!@7Aai zqE;C5GU5Sn@ArG5i>Cv7!GQ7Q{%0c03V#!AXNpzi*pF*RL$r2L*m{9tv74uGx_q6s z5G~cnY~q}oF{f|I5zB@dovE7n*B#zEPC6^XuGdGxZ%@Y2`u9E7Di`z^C!cwY*_8X! zhNJJmW2y`$uoe^>kYf)fyZkNf&s(HN8++@=fyDJdV>b563iV1c9jA^pMuj8cI`)oW zA3eYY@oYyBl+Yn}K=OV0#;E@Ha)19C*Z)c{mPVMMypH7hfXpBkBY#rpHpxfo7E)ck zpLD#S=C$st-wRc~D<&rP=MkR%c?2&nFFDabO!dt}{Erfre;N%GP7r}Yi#Zx@8TD7| z123#0ilLy{QOTRNzc4aRvN6l-NtJRu6**+FGI06U_>DHfl(xNi3pk4X$lb}kn$q4pqgx~z{q`U=bdG~-g;YG}SgJrX={IKI3nbv_z*uMGdm z9^a0g0zYJ=-42f8Mq|#KYs)Z2@sY{ILiO306rP_i|M0o0Pg0MkLgK6#<^%weS3tTe z>FkV8dV8-*A7^X&)8N7(F*IY`MEy-_Rh6g`$57bPQQI8kr9*9)VgxEm55m#E&o|;u zArOb17G74W7)mpGIeU9~-DTmB4C^`p6(E?g1SLGV>518QkF8rR4@S>29!CL}q40JQ z5O8}JR^UMP%n@ip7S4nF9T@=8Q)m9 z07;cWK$o&*XE*qbspkuz(Proo>mFr{StQ$KVSMUwFGpu5uLwiVPMoz-fqknnprjtx zo=mMrn2*{bH%mLhreAt~{>cU;-H%$Sg>JW$Bq8F^7$ljta$>CA#d4AkjyMoKLPI@M z1x0^AV}v{uWM0aq)(>B#%1a}CdPjd6f}7hW(+cf`If9iM4?HS>qG0`;%!wCMYLsvW z=e4tf)>2=Qf|@N^kM2IRZDHXPPF3&ici1e7hT+o)xAyDv>Tx#3nv12)v9P0?ZmtNe zp%AVC&&{#X8B44tt1_{JA6N>J11`N|bX$6%kJ0kNtY zau_i5yIt{tYd?h*hr$Zu#@UW(wv37T5>rLk4DS;>5E~len4Z3ukyhIl#a^{ppNpxU zKK_{DwRij??>49tnzF}d)TlSfF_8lc2+d8C*q=N@#WIj874)!NduN~R6=YpoOCGQ5 zq@OOz&e%UV7EWSS%C0{fSX9W+A{f^0HAWy#?Bjj3q9o>sB0up-B$f?dT$bMJS3T_^ zh816%m=>L2!Uc#{tdpS<(I;>L>}78L{+{ZAT349I=i_Tp=Q{l!kDeX2kj-EC@?Ppm(_9^8E&87bNxtt9U*HVKs119KU_ zl9jP+p6}03|4~gTT*taLxMOzi>0)Z@eA4<(KPA&^J{Tb|O{3^?qC=VjVd0yhDd0OZ zl%W@txZddv{ngsumxmOc7P_=IN;4KRl93@{_ncMo77*3ICetZ3R=j>e`&9YD&S1bP zr_Y8)^}0Jf-g@Q*ZTW0y1@UqS$x8A)9IeHvTSj0kn1DpD*yxF0N-N9AO#Ze99jK`V znhQ6oEX;+IN!xM_PxAA)fn91)nMjZ2v6y`?3rLtos*Y*;vj(}9zNwJQmrP%e6o!>$ zfrS*oStPI_ol#@0vtuxaODR+c(^JZueePaq#!t-*I~v{p9Z9F^XT0^@|BU1d0Z{=#BH+(sU;I`RzHkt~>&MZ*H<3dm$D`a#`PLYY{XX0DY-KT6w$^ZAIq6~5 zd~|39j|a8O#Z^m^Z0OUHIeg$4l3N)dG0=^AT1BRiw+xJ(Y0k5OV^002-Q#g4=dHB^ zDYUfKMny(Be;pgLWPG*r8)M2OF;M?e2Im$)3$}3lq!Z1`awxAuOfk;^;WJgchXrSR z>m>GbZ2OX)JQ#bP9t0O)1JS|4=~ld^B3m{LkFuk_(TDF>lb zFtEoSYKO4SGrMHJqe*Ogh^Fg^9g#_P)|iR&0f)A;BGa4ZlIDn=F#TGM7O?yhf`lWs zNf+9P6R8WV<*0QQz zAv}4b(Ap5k1sWeaEHSl{l(CoYdrwUvjZdqE3i+%CTj=IK0cEpnX~G2&QFKBnADITD zcHUx3LiPbdHRx^Eq0EsB^YUxADvQ{0Dy{ghNsBkN)-4L)5{l-x|er zU5|sGyyd73O&7Y}{^ZMT(8ErsvBpfkPREBdURvM8A43g@t|Pr1`wI!oM#FjJK9ep3 zQ=t3Z$wH6Tv@Kt<;9$E*X-EUrE7gb{{qFp(eA;PvznqTM^^k|*VyIni&As=JI&4eF zxZ1+x+=dUOp00r@*1sZtGe1KnRcMt5ZpN(JkK4tM7(KZ5oG2e};Px6@`N(%97uolr zV))FkD4?|CHWa1NSFLX^P4S>e3|QvRwn7XpnTo?&&`w&>q*(i*HOIAW>J-R1MS(vT zNSU3!f6sDzg@n}*zuwg{R$O%WU_Mxy%j_)u!FJlbxQoWNsu6i`s>{;+0G)j44r9ov znQ@VzYo6_OLBRO>@A_IjAC=_C9wuIuoAB`p$OQ{+ZZ@Z4WYP>jl|V@-?$O0i#`0)r zNB|2$!NLQm9wGk|umP6i7DtSvwH_QXqHdwUvMu!k3CKD`E4R!{N?&Tgv18=+%K z0h|1>I_@@MW^@OvQZ}lWH`}__In7sdbQoP4>|0gAG5S$2kV5eei0DoyR8&E~a-E`6 z-o7y8>L5}lx1ZSye{%x5==v)}@gM>Yl_F}<&*T>3kNam;3 zTs>FK{Uq1$OGu%}wWr}>7IiSsDkrj<`cVk22J&}3EKEb>7^a@8b5*g1+&tnqPT$63 z&Fwk+nZ+>Eqnc630a6xRC$o<@QEjB-@tz%x;WO&pA#NC)<0TLO0&l`|%QexWu0RO( z%rl(RpPS1beV4#@3OdOTezWld|e zn;lgM#%a(gzckXA4B7Yv>AO-&3E;=|Y9=6Se!9Rp2+7&ec#%CPhanmD0v3IR+f97CzBS0WzEx{KAuD>j{Z&S{s2x^!?X>in#D9Y)nz z0S#jKJG$4XJ)3|VbLJHVmEBHNbcb+S)_g;D* z<`zBIf4r6M9jylm!w+ZxGEat4WM%ETTEOan7~^LN#Q}A7v{4S6l;xAVO*61tAe6ZK z(fSC55P*C8Q-q*JhEV&BwYAecUp?td_er(=_2Q+h=Vf<5wIjZFXPiOrUk(ioWsTT< zkqAs;3XF`ZSM(ECmhY2Tdj2C?bKbBMN|etJ)sCez3;Q7t5$}B0Xr# z(mRtj{6m$Cb{oT3B;l4I1&glu-OXmLj?}O+5I0qvSrX6blOjS5KHQ~7Ku~fMfBV69~69SA|+b~|^ z0__~w$?H%kgoEF}NGnk+q(`vJi9&_c%^A)CAAY$xM`DztzyT=SE~w^+9VUiIVQ463`N4TW9CPlYT}&lG~+{mZB2Y=g@8ACpJ=QZ=+9o>hv>i zD2;zt5B)+Q5JuHn=AVaWJ)5bXJ#4ARZ>hwbf9#(Gw4AWaz{TNCKblbfma-*%|05}g zt<8_AO*vrZy$AXzKZfrWE(Pm~5jlCu#yW4bYj2LwpoD@jIGIw|BueY>lcSKs_4k2T zQxZCT-?sSEuoxVXmn62h>;tB3kwpuHN~UO`_q4`XDFZ5ch+Zc+kFRpY#H(TwMB+l7-GzciMNU{BG8X z-2_RXxQ>-h7Vz)%Rz-fIGp=eUit`&k^dR1I*%Hi;b?oFY7Rx;t6Tly_^O?h13&J!? zHqwZ(%kI~35UO2lWBY8UWg1spSvOtBnZlbosYE4>{{S!SuUlU2%!Cx1J8a$IjaNKJb z(|ShKvem@=Yv&ThmLwj=TxQAoFFB3OXje0l$CXy~C6nx?IZPk;Sez1M555~!d7L_d z04r%O8*X$dndUf#=*e7xjarM8y9xB}`*y(;g~qQr&lPd5@|E0XT)MLkv{#UnNb>IM zHrrD`0W4>8osZxU|Aj^y!C{wK&nuy>MgvN$zp^%phd3!6i@?)ml8)DI8c9<0PA4m; zv5k7qUD!u0b(&Tjd`rs8ie9sBy)#)=?oXqEs86A$_J4_d+QO^qkB98#oU3~Bj*@W2 zm$X@9$M{3m(?bV|=sgEb)iJA$Y|ta3HS#@b$D-+D6h1Z=9C!Lz4RjKe0Kk|9V4>p6 z5y07dZAl2V#u+2EsI9e3*6`yU!HIL98csh08o0RhZ3?~T(S4d)wo$paRwoE5?=`?ecK%bsIq4L=>T_0e1>+_Js;tbpu_C0tfB@ns$DHr;4d6_`TmV z^RTOu@d;gW0;9u^#Jq;Gqj-x&z-C%`9f&~k+R71L6WPxy#@R8ODh=RnVMxA^N7?b4!&<1qDt zS7g-28uuzu_Ki|6J*2l#b-~WX088 z&#&BQP)m$!)8^2>tmDcv&?O2G^L}6mWa^D=wBrMtq`7XH@d93m^}Sk4$23EToz0KK z#czZ~h)za1QPX^BJ^GzE3mQxCG*UbAuhXqqihwm*a=d zAHzI~$8;N|WMo1%3FN4fU&(U~64nkQCF2W1IYIanPmaChjnosb9{INqgg1nxN6jiR zA*s~}P+#%VQE{h_R;JSV>GrYoDua~3%mBo71z%~s+tkAvrjRdu%U%q&b#~d(KJty% zv{|vsQ7H*ZSra@dq3?|^vGB#i_mN`QX;?qxu(I$WviN^#%7hK)bo*jzS1DM7WK-`==5j{@;wqU>iD3qqD=MZ zJuZAgXNRses==q^x3xxpi2BH!Eac_N-+pgI24IlAbUzVhK*iD~KCjty(9T)fKJ7fe zIG3eLxaZI8g07lw^Y?_026A(-tRIl8rOT%Wq-FNaXy?e)6)h!j)@B0(BKjID# z@;S+PU8|jc;<>4$l07xLg^KCu5p>_uG$oFul;5|rfbxP&-)}FCiCbO59D#+RcF6dQdQM8_=Uco z%Kbgr5z73O;5X!3LFvMGC7G7Wd}aQCT%JMK$~t;BHLiI=Lc-pk3<#=fMDCK8*W~Sl zF~Ax7dRKAN_m>EaXinRqb)sm*oG96#1Zwx7y=R>5vzc`_E>lF?yuIb2sDfULlhNUV8 z&qu}8p}(e=g)MsULUJQ{b<|Kub(V!1?3jmRslDFZ~{n6)1p zzXh}J3+cjx3G3L%@2cxe^OeL!SCEZ^e zoGUORKni2OiRTOkxz?{mp5m_GeIHRyR6Y3aC78!HGnX{#HDvPlY|pFcn6{E9UQ}um zmf+r58a1k92ipNLL%a=ga+#FL2d+s+04GQg(meS4FM#dGCtMRakMyJhXZfW#!DmFr zi4FU;Ahy3nYF2{!-Ud0QUD=bE@LH*Xh^BAqWBBuT=G%stZ-joi6N&f10{no>Buzm6 zw3_WN=yw0t7S+0^HV{Z-Loze&+VjV@-dFb^kl>?`nleFat2bHafrb*_(9_SJY+WkR zm1)sC9qt~zIxBGOD{hu${h5vZp6Z?w<`3g zo(3o;A3G_ywFylov99EAtbLmBjz=&NJdn*mF!khmLH(MKc?7<=9q?sxOu8{Sn&%>-%yyb`bU1n?%?P-#E~07H#?2(%+{2 zERjNYYSz&s`l?GbqU(Gdn-A4KP^>E>OUmDvd==^0Y2;R{lq9;h#`BgEhWF~s?M@rm zOJu?rQ6(!aKXcm6A>7_PWSZFDjnj1Z=s!^;RFj(H9HD=hGeoY3@gZ^f%lIW+wToz- z(I2WiQ)yZgq7&oGH^v}XNooUzpCID#`-tIe+w>;3gRiCR5;q~I-?p12_67N}8}SN( zfB_+BO6p%c%T>{<@mRd^EJ4RB7bV@OH>svFhrntXbP!5*kxPR20kK7EG)IRU_v56_ zS4^iTlA0s6YuqcLllUyeQNP0S>D_PtO~%(RksdMY!DqhR{2|aAsJhM=6)_92dED>v zVDtCa^sb>M818eTgt;3ws;T338d><;B%Z!dzZ=X}dsLS8?+fz!540JfqXpa@1fr4s z2g{1w^X^FzI%wnKAv`=h-2D%d6@a79_sD?#_~zUHw#c-$!U_&u`_P@X(uK+upl)v; zzP~zLOaQ%2`SwfccoIe7bHEMxvP5*s0K~mFX*rsjW_v8f_mo_GLJF-290+MEA%1YCx|m*rgykOZ3UhBB{B{AutK zXqR7Jg21$XLm86?RLgoa&rd1raSgy<3MlqUH>>M93vO?C4jmrZ(jiMe(#fW zq1KK8F~ewrpXJ;FTv#*Jr=WH%H*=Bv4l@Lb-)wFRImaOo!8;3&)dzfM$~a%-5<|oKf6iA)xc@+9Ex!IGi z20Z%iF}!d-_KhgwrLgwr!I(V;c9VYF{^_Zwr%$rpjTwcBPQK;vTv8G+)k|?SuIe!@ zyS7n}d!M<(9 zy4NQPN=&AlC$>nS>UIQFVk10~{52ixr9Y~A55(PBuaxg8v}U?m>&>0^W=j{;vt-kc z`Kw`>29hV1{I-kjB*n0g`gE(}7;opYKU$(UjR6G0Rf3e13WR=si(#X^p%Py|E$*1+ zqHT)`quoi_cEIRp+;DG}&0l;!{H`q%M=}i$x#{0qf|jxRUhK^-5tIBh1h$2dAO zw225{RaCnItQBAnT6UR|Gx!oh}mGHPwuMyQZ-Y>p4SCM;fbUebN zAzf@ET;f*^;2~r99BmX*)_|Fs{NMD95im7+y$BW7a6Z!l-p{k5T|QyJ<+mx&wm!Tb zotGE_yrVYJhm3yFeA{1usrdQa^9M21*Vp~J5;h%}=tv4;Bm=r2sRbQFdSACcjwRjT~Rx*70VU-EqM{ymL1Z>O$oNl z)RD&M@cH8wmZyqoSJ0hMVT-uT8Pk!&1YdLC9d8*<>ij}c9;b-&!!J?$OKuUAoHIsx z&e^KO!4(qN>*tNtuD1KGgc|H;g%`3Wd>lpsl{XAYzt2mN^TJTlp0_DXAoI%q8&mVh zOE|s8gDDwDYQXvIBbUOP8%W{9F)D=wAcY6QP;A=ROl-*TTQagJ`)Y0j1~Q8cC*08P{^W-I**UEA!-Fg@cuL7(ZQIrxIX8;)`rlMC9P`>u`NvkP+t5LN`5fV}zE^%!8LZd|OPE%niRUWWUIJnrj0vTrM z9;@vVAu$Q%znPQI8Sj$+yy^4k-Vv0nYE{|q3q{EQ-?=89U_D}-j9M}(Ou~$g^Mi;fY@N|wVSVv=4Y7^ zS3>Ms1uZJ4XVx}?>jKWYhrb6?eUMYS39E)1SvG&eDky7*QhFV1eRoE@?YJW&<1D{F zn6j87M7t6`?9*7#>g)s1D~hl7w(qq;IJo_kKJM_v`d=rSaJf?)L_u~3Zh>mV;i$Kb zWCG+P8bde=*)?Dr?M109?M=Hr)lPDrsZ+!139F;g=Ejt2hia~`)W>z^DkzO?D7>Tm zs<7bZDELGFlzGHWXc+#;#nduh{8d-C{Xt?@c&pC)oui2}9_iipkCqk$khfMBM2?na z6I0^|f!u4P5tmmsCu*`?q$Dhu>#ZGCV_Zn>yvVMUCA`Pb$v?CHZ1QqPp5J(L3QZoI z^ND%c-?>Z*pKl9m66}DOw=ZAz+c;O*2`aVfMnJ&gP9@k?V8CO6I4{vF<>ngnC3L1< zHe`}W2Yp=&#Lg``gt|eM09SfO{->U!Hw@h}aj~BzVkkzU-ePPvONt$Za$8PJ|D^>G zX#w^Kk_luEvYNZ5ao2MoE+qA($RiURvrs+(>;&fsn5(0Anm4-hGsv6_5IqqdP4&|& z4wca8bfV+?E<&M@tI3@t)wI~xIxbzLjfwE{G?d-1x>E7|*t)?}3h!u4Rcd;ZLJkV*N1%{NRO#C=#v|znu$Q% zqGsK?-q`Y}vkbPxfy3n}tGZ|Rbe{{dwlGDp)4oLCrfNvu4&tcPtqkf|mI4TUFVsnr z$IU9b-Or0Hm_ z1+HP|O{-p>u#O)_M+@CD*ZvPH`af|tbI9AEsi=}QsulZclF{Sv>7Y7xYvw0`tRWfe z^UQkEfD+`!A{@rLHBHrhD&cy$!xHU)bs-w6C7Yq`G>lY zXxt`>3Hm=|u1GyKju^&`8ZZ#|k+cPnPgEX^B_-ZOW2Sgj4J%=g`z zFNpq1!LnjFX|HQiU;mn`B=>+;OQexQBx~+%{!pJTJQvX>H>Sb*uwv#mQ%u+xVPdu0 zBkQDXu-wd(PV*yf6QUTn%LPPoZbmKV@q% z{}g;O|1*7t`lwE7YAO*-ocOVduHFrN0mai5>x#I1D1?8m!shoJPoe?O9c2u=Ur7eII+Zo<@`9FIe%nzz-wjOx0x*Xs1_ z`}57Fv49m^E`3ARX?^#vrhE;7dZX4~>JX1vaTZaW95xw~?~Q|h)r_`kFIGKo8)gKV zXTDC;%l^@ywh$-z%PIc-r15Gu`@SPz%ayO4QXO09Oyn(4$Y6r8=}=SXn{=^u6gNM8 znEbmPx;aB{)yr=Ihx|3&uZ)w#miZwxX34;Q`PU8Ts2zr2coHn!+kaYiRk{PhRomBT zyx*Fak0x@FfQs^~6jd??%wI!AmhhT*2clbz8sx|kj{f64pQw$HGUPd8uk;L ze=liC6boUfQ=`k*n?I(ogQbd20Qg19%DQo9i&Q4oQvaxlaRZHn1PA#LiqEsaj(cZ? z6l!5GcfatpxX)?2K8eyCV8j?<0UKAo_>>E00fN&?A(zj?!f>#N<#gy4NDtvuEM|>W zH{$vfuzc&B|9qdj=D3Mw9|3f{VT- zZKu&4A^u?8(#r9j*yvKdhWc~oy19UlORQ@TYiT$SeRF#~^UMQ;z4m+K?Ykb6Cx^N_ z^0@}|6R?GP(C192Z=59e6QB&|{0==sE2gSt_ z@61FUXZ0P%0#h>t^s<+h*4Bgk6~T&b!w<;xuKb`pfgU0vA1#66JtrX~R8Z@#-B_Bs z2<3Zkd7Pq&qKR70Vap(KizvV@Nsu&Q6Cz*oy*sD9fj|BeoJ-h=ao_$`d8C5s}KS-%g*1+d}qYl5#A+i`Dj{aA27=H-#13;mnpcOIe~Et+<->?q~oBSSln(Fbg7okUdfx>m1mOGd=>mlCm|-A1ctR-{iwhzU*`yu>T_3x(QsOye6*0eBrGAv8?7jes{}PW{~o;s1++k{}r)E ze5Kwq7uz9j(?(*_5U)E?l~)ix6N|&h3E%Xhb;KlLUjC!b!6^nbo?Zqkc!_lcd4#Dc z*PEIYOYzsVxNh$X|Kh$`uU5E9a|hJ)ByPg^lf|2CXMgoZVOZXNWSkZ)%XB)f5eifM zOOG1ZjLx+JiynZ!gQ8ZJ6dMN|h4oiYx$erSgqk-uy)`raCw9)=d{^%SamD~G{N9t$ag1iT zl#^`Rgr%I>YRu@es_L$l#xWUC8k+IzB5Yidd(6);(>Eh?|1`??Wlg4QgFyU&{NfOQfrUec- zYFy{yzIXgAizgV~#9yx=J~Xi}Ol*Apk>d@a?M+LlCvES&nF$r|WS?Jk2PN?6xw*Tm zE}p70XOHkO@iX2iq1i?}+iGvY@e)Jot0RfbYe&uuCxhe!o5FUCz8EsFo)~NxMQ78VR z;&4`pUfO>b9As?x_8zF^6PJp|gFmO6-amsg{s&L4|9aGJ6aX1{gGFf`2QU`0-8ABT z_l-cju4#k_LMJ2yn~&|e3kLs@xU)UApak_;0`Ico-cC%gJ-lsUg{QakQ{5HnA`S9G7rdCw~uk22Q zl!2%hi#}dInTv2AwTd9meGcmBTutj-L(Vh_l!w|l8(wj`tPZ-b5xjLr$iI=@dDIn4 z3~>nT+Umc^I?%+-5g4h?2RY5==R>c7GF)0So@Ln>@+ToT*lZ6V|ymgKfJt z8;e5twY_g2Y)_in&HQ+0Fj3A&v6&-*5#-W0@TC`?Hn|6yjgr0KI=3nwVNJUbQ}Kno zLT%fQ8Wh`Kwu<36$|jLt2&bwh$+}+6mo*vzxsHVP2aP{fg=n3D%pbp8dETh{iu!9G zY9Z-3OP<1;i&5dweD+hlYnvjd$%;i&Z`qdL5lXIQ<(Hf@_OkI6mwVQLR=u7z2QT>w zNA%EXYxtrjT*J4`42AYY=c-ps#jf;-taoq~8dW>DtRrhmzP78cP~QSEl6LYs%F-6o zuFUvf`Lwk8qdbLKhc=cuL9e`7liZRO!wzI*z^;z= z71}gn7Ae;VdHz_=Xr73c620fLNylG-Al>JLgtq(oAxpumg_7eEk3ifc^!+FN7o|Te zOaR5(-;@e{F1knI_6J{8;WF#^xD(NdcEyUZyngMb3vH}b!+1rq0{(~3yIz}AnOSo% z033$TU$C~~mTVa9j<3_%M-4G+1mJyc%D%bD<);#S!7sWs`NN4*jLGGi53a_@ZN)ey z4uNARx?MAMD%G5>xOb4!8)x;$*Pfu;P1?XZ;TRcw#-_7F<+G43fO)e{ZFX(Eaq{Nq zbTiYs0c9?Xybn~?ku^-VYL=_YHY_YC@-0OR?Xy|tL2Zirn#*>32JZACkdBlEA9#yj zL@sWtxGOoKr7e!HAc25Dvk=4&BT+g z9k!a=vLN2w)czNz%NuC@#s+f)5|HG2${MOg*v4)$SG}UP8J(_j7?ZZII*=FauP#-a zNNP7F1B3-YS7x4{Eyo`8pLo>yX<|S0Xj0%PZOznykAv6C;l@iCA{V6Fm+mBC4}|y4 zHB*JWz8h3_5-F#tR6XlO#CD&JW~z=VLXEQ7V#3Qlj3t{0vQUF^@e9EVJ@IAsgQtzbJ+C90(Up$9OYQW-%8Po0W@sljKRVxEV zYRg{(cTJ9kv-(6KmG!OW4VT0_3VrIZR+-GZ%kdZzB_ z?Ti?7-={ehcUoBeD+@q4%-jEa&yI?Ymgjm9SzXQlpO6sn?gk`12TanN4gLQ>RsU_2 z^Iy-3f5Ec<_5~0H6%|n0{x4D)o$LRQ5xQiL*vWG`9T8W4NKj{P@wf-7rG43Ut4WzZ z?)0_pKOpbFslnXfpH=P$C4bN0h$F{MDX6=%#F2IBen+@Ep4mXhS(%7U-y}8EYiQzx zzM1}B2!Oo8rg!}>cUS>z78FET==|U)_uM-jnvCQ7YuI*T`-oE~y9PKNDA$lJK+9$4oQ65_u3PI(Vd7uVELtwEby| zsCbF%yxW7uu2Jwg)osvsnoqqOJoya9M)M>_%|9Y}HY<{$?p&<^5RfKay3%{-5kj#d9RcZ0Is^z(LkFezUPFk~K!8MAD1l@S-ZFRAnmg~T zHSgT_%X>aiPoA8dv!A_xW$$MURgE=Hv}NH z)K&h1oa96ma^GKZdblyUS;YuU1+lCxpWP~wp8p?8J>D32o^m)7boAU1&VTnUR4@MP z4rJz{iN@@wi~!M}&nmSZhc}vB^C)jB_p@7>U&?%%d2kK`H`vrbrOdyO$UGrtRb zGS!haNZ~oZ7m6SDBNuq-cw8x78v})q8j#ol-8~T2&VJS%q8Mu5%%GX0oT%)~8LG;* zW*1+aJo_E7=@KdZ+Mg!dvBH?z(vs=iGQFX9QRY)ACy}Svn&d)D=V#-o%zHC`?Yb4N0 z_v!K9lbCzl_PQBQRtR2_S4NSmw06z9>OZTBYv3UlK(+oh1QbT{VNCvaQYXJN!P?hc zv}A{q?;m_Lmkfn|2vIqPO{l#n8Pd}ev%U$mnF~>A@H4C1FxS|0?M)QBIms-4)OIWQ zvx8c5?4#IhEiK^?73gW!!x4GC<+a)SaWz<{Da@*$CP|3bPopZUVv(i-E2Q6a@}26Q5gJ2pp`J? zJmym>-ne=o{z+p=I^`dbpd|2Ka*qxd3b~gy$^jcVn|K-8sM93fBTZk!nVpBdsU-|-rOtJZ~bg>#)?gIRZTxulN`navi=5~ zhzBD@Z|zi-{}@ttsbv+0V5Kx-rEF9Uf)_4YJW*ulCJS8zVp;#|wyoU=5gZLLWH;;J z4Z(GvYBdQ$V_01_><@Fg>}t{FIQO(^E9TWh(Gq0#knae>m1_)`Dm4MTQ$^2Rw)jma z2fB4;(etk18_S)X{g>H-oI^u$_vY%}ik*b2)IWc4g9XYM^tNa%Z}`_Wc$YZV3bWYz zS%E{KUGvI#?p$_k6W>DksPvZaT+>2P+zdI#+U(abFius_eIfYt=_xi_pLo^cTGBCi zmTL2{;k?LeSfvxmbJ#?d$K+D83CHhw+(ycuo3ykV1~m?lH>xfv;V58v)y*O(<|nN6 z9DVvD0WGrQl?4?`DyO8Y7QE(fk+JcYj@mb5M;nk8OHH%lLq!I>W-{>Gzp~<(vzt6M zAe%SW?IpZwiMYkT|4yVns6ihNlGZ+VTm?5T1F6}&H{-Wb25b+6Lis{OQQ*hcHmO+d zfSABMpn!(+MlyM(ZZ-dGsk-Eo+)&2oY@X;+lut%I%S;M8RxQVEqIrtnz@I zRcp1RJ5VL)ErRD@^LP_VUu;a!Z+^QLZsM|$@M5%sb(*kJ7w++Zv0|!Y9=2nk;#%!e z@3~jk?Q{c9J7cjsx+pN3n2V~AP<7-cH>k1nt0a#F?(l&JS`-y0^mXDhn${=Va0MPi zBra&W=ERPs&B{-KJ(DR0+tB{H)w?mLWi5?|;Z+>#v$?b;z*KMhQ-ZHgY2&r2gxU^+ zW<5o!jT*gGAS!OOAS*XsXYs9kgk5z41gy}9oL!AUf25FZrA9v2iKt%D&~Q57;V2@)sX>UD_(}cEv=iaZ@WN z%IoRP6CV%7u;+qb1r;-q^+U%33eCWLT&9S_@aIFqni%2uNY6=Eq)|pH_YRT9q~4ed z?~u21kOID)(C`=-_&b&7GW|UM#zLcTlgMQ^aD%&&USTB7QF4 z6m{=r-SbujAzq*RpN4wzTKamp@iXUp0f;E%Wf0dj3XmTFlU+UQFz}+|4kbu<1~|e0 zcbT2p#LSFj3`QYq*xLJVYY8{WQOD{B^tFDAF6^9~T8**E-%Cp)&*WZ8mJ#RQB?IH> zT*e=l{7WB-e+Tyew=>B9^Ar?7>faSjEtlUUPPrD(rrjk%>~)KTb!Aaaz$dVfLUhR475)!OIMg!7nG!Ky%ce?W00R+zCe~r5M=Mrzu2b$}fvk zybs*VjdqHJtzsYVu=JScOBtEz7$CjGU@0w+iIl04vvuW;nk~C0SIbUtAB8bFY_Rr= z>#L=y!u0*O)>{CA<6Z4f;DrqNW9|GyPihWFP^|3y0~N;2DTgzZ;3l1o<2P~poSI9C zRtF{)(E69&o(cQq-|X8M9XQMu(FLH#%K|lrlxE}mk`y5^)F8Mz`_NmD zowc89bJC>xQ+q2YzJooq8M^q9b&l3Va1YX#IIvYO1jSXe1y##5IZ5g1U9Gyh{N3~> zEh=D$wAkD%I%M=`qOAL8)UGyd{7w)6x3%5b`E-B(M6!wX&N>i307&OSj65*NE~sU6 zpVTUyHL1msAftbNz7>YuwQ!r9s3gwU-;pIdn5^YYPOj!#MYc$9mxokk-dfn_0v0TM zd|4sF3%Kjqd^;IYKk!UW49a{l5VbH!3u|atzp5T*{#rtrDmk0*o86lhNV&U!Pce}` z){g0~3gG0o-nazV^6KZo<}K0;F%z9^Snr)zUz|TVMLnhYjGh7%LV0%jx}(uGB|&{X zHL`2o3+hQ+r0Hg}mypiJ4}X05?AQ`)EoV#v82Syf6TE$yS>g|-X9G|@jD-W&kYBvt zw=+%>;(P*!XDuEn2i=)_OHNr{TR#tO@)7)I?{7Kq!F|GW*D$f@1T0THoYP>`Et6%H z)G<88Ws-){Ml#QXp1c7HYcCHvK~WI7T1gc*z#jTIC>XJSEj` zW9Bhg8_W5C8D#1T2WAGRb?;`qd<3A76@H#JPEJlsXHhfe4$wO0A@JQ85O@;bWCDOI z&@|@1bA9ub@5KI13jknm!14dcGydNTNB{mV>?`X3R^zoy4%M?US50Lvy4-ts^UB}- zL?yx_GgM$1yyrZU7mO zzh#bmMM41fvZYAhh^xd+N!;&ln=`&L7q_c^M*3y5L0;s!d{f>x=`}M-5%L0N_#}5e zzG5mX3T(6>Ve`!CB1C+H`g!3+A%t&(*5gWIrzY))bzP$o8{4I_q65cvJ47A*_5&`E z>BCnp0KlIAq}62*sLaI>QyYAbFQO!EA?Wyu_hz=cKAG0HeGzx_OM#&k9fBAJLx3Av zD8fq{u<{g1>~w6JRHSQ_jhS!$GZCMt$LcCcuWy!E!9JGKAjId8pmKnH(3MfuI>rGe zWj&DMw3+yLQPOCZfKJ$ai*xG(*opnri_ykouE5C6@U6%RX`TZXnrdYwz024R1{2nr z`3&|O#K@y>)o$LuXTmzKR#qQKtKBAS7}UZA!Bah-(J1ZOr>TMy=*z%9e;r=B7h2Tq zBpecQ$9aC|CR8(PhBH}dMO=S%lRB*XyBP}wqV8qV#D#Y}=X!*3{)ZoUJfJ?fAhmxo z#~e8thmsMy2WJ(he&YE2CUj<_U(%I_N6f*tBaC(SC?`PGA=RTL=lF2HHxVK&6;;4Q zW0u*}k>Q2=dQf*4L#_?9Td%+QpBJvp#WTIkF;zrQ=BdxfYU3lsJjsj6Q@(k_T4z$s z62OgP_e+wt>Rx;J>iQ&K-MHeZm@EE`;I6JyvxY(rG~Z8LJqP0F0mxjsrZ=dlu1N>G z&=5tM#M=Li+2jVWQo}MH2&$Nt)+qLRO)WMkC~gV!A1Ky?b3sOlJ9(W78reaG-6P(( zXS1*}v&_^D$)m0xYgUHYs;kTdVm;y_g!TTkd%xMATmWo%QFG^vo>INOJ<~vQ<+00w zAHv5%B=ssK6K&P_Yhy>jJmRJpMAhZ4G9^W;P2@5|P;-qUQZ$q6f8acW{+07&Av(N* z+W8%*$Z#&)rB$_vnM|kEbv0t!DL1`Y_eTG{oqmgf&h5L3ccq)x>b?>X=e2Ue0+)IG zejXg9Qy&-rm+dv%8CNMl&}u53+hD%KHt{fVioKlvZA!yn+186J6he{xN1y4dDSX{; zpUN`KdEFe)^)8@9=4EoFU6)us+Rl0pA&rmnmoG~~2_+Dw^@nVw3x8_>;gQnTX-@ELq*XV{|*6bugqnyR{3MS_Un_=ahsZwz~|epZocN* z&3k=2I|a;jXyaIkSp^1L-Cn*8XCu|EviPQxkxxWGhtDD5GtGJYZFwDc2>?Elb|dUy zRq@4o_(>?b*W4X^5dAZAe41Qdv6RIujc2Uo^SrPy+(SJwU-vw7yh#L+voO3+zW?(N zYAynj9xq>Pw7)DhP%^>_ur=&IpBB4(lw3sx$Zr@Pkfb-EBf#UQz~2mL!Jh-Qu*ScZ zS{BPI7b+|9s-Yx@7W~wH7Nfcn`i}DEP1*sz@VMOkotB2>pAp|Aw>Z%|lP7A5dO7ls z*kZpXoSs%4+wrIo_#rkPZs&oucUI4ejn>LP$|q7bgD-;IX5Li0_^0Lx-Aa@e<4q1| ztXS?EOmC6nU$2SHob3!4FPS&isde3^kIb-38?@tQ#FU_FDrLm=mk(HLA{N$jq0XtU z@xKM;_O}vu0Ibl>0ieb|S{e^hYk_J{{yl^LY9QTwgkbn<&B(jEbcY^ZjoGA*GJs*6 zkpRK@mYd)jF9)VzjsYT(Rq#zv{xnc|oI$kjxI}hL#EGRfqSKA@@F0S3G4RlP{L6Ns zcn0xAzWVU#GRW}J|6iv3FB6M<%>ZNhiXakcz`Y20#Y-Jz-JNQ8LLJ@~WXlx!9Lp3{ zpTz@Ark$G@LjilC-~&Z0)6uPg@}Lc|cq!orENbN~8~N@g@uJ@C%JrE#5H$C$NO(wr z*z2mh&mHO=qVwM31rH|AY94O3*phh8UFOk=c9m$VF%wYhKfqlK@3G>d-e<7?LRaLu zY-rylayp9$Un0Rm2K}$R9o?6RYF-vI$uDkd#yM*rPyY^VATP zRx4kf8hs<8Y<6XWRHWk>*Thi=t&&<2D7F`q(~h55?G74^lbijMSYHQo+GDqXQV$v&iE?6r>^LjjNDb9#Vq zbT{F>o^eL#&T_&^F42DUG%3!TjxoiGz?2k$hPurK(1a?U zvb%UR2DO6Zz??AX8p8Xu7K;Q4r_FeAZ+zi4y~)YhCBhsukk?1BvJ>D;i2%Zf5J$K% zqVxD8Wuh7S0C%-IvQ&G*)a?2EgJ3HYh-vS4YEY|$sOaVdNP|59B{Sb3U1=IJnv#eMfW6`>|2GDKCU;rLv~H@ounQC z80h=;SUVX>qR&2~9o>{GvRu*|9+F#Xy6U-1*$`M6`7dNLbSF8|7*IZ$)Yx`7Mavi% z1z2mC*E>32W9L^fAsh+OCYPz1Byh6@#A0ST(dmc4__^VE(Z&2ybq&Aem|mJ^nPILO zBINpZa^2uDUBPxA8(SZ)c3{`OJQEn$_0l|-k9{C3$1ZIWMvJhxTVlpzbN*WS15cW7 z#?&Re-nLT3kD+R!fXblndwM3C{B-IQH|Pli`;f#9*_m;6Y$RGG9T}i>N)Cjs2&h@E z|502zD_G$U@_tq22QloSEL8qq6Xh;b-UlWvAU1G;hO0pw`pauaSJ_7W4^g{2WPj*D zVgr6aW8ir599e*Ko);)|)@E?p&g&_W{Rlk(tv;xqu?$DoPD(7dVf$q^e)Xmpk{ z-y9$RJyj~&Yu@6MC#pAsDVg1#MUEjUf^oq8aRFGN2f3R( zeRPl+ggt#99Wd@^@DTq`^Hq$AJoR&9E!L}Php3o`w30~v*ps89A?u%fSC2JIVY+*4 zS*lL-AU6)RY6E?n2}xiZ@M+Sw3ET|GnCL-)^=Dq$Xk2@HqQEIz?cOx9Yh5khwBH(+ zLAq*}x=VCE5|PukX&M1I_u6vaI=?c0$$=ye${og(67d=W%NJxG5Rei$pHt;E>R$vs zr0EeJ9B6u&HB>Cbobmi9n;Vqx=<*b=H}0-CC**nG$)wS7zh zspDafisyl zcl=&66TTudM4N!d4u_*&5Kz+%x(T*{QoCc*`r+9f3_MkJS20CiBH(G!WNOfV?i<~@u26kNx*=vh-g>RyKe>Q@+7+R0L&!w zp2Coc1RoI|^_#5~@_fScmuuEAI-f6~i?7C}$X1^gW8uSNB8822ELms|GEwf3LE z5-_A|i^4769KzZWjwc2(Z@<=D=hg8do(Ul5i4nd*aPL>m2i=SXoH^Sng-4D4Hb-~O zET=w)V;JZ0uBKjn_zWI0nGsB`BmU}`{Mf?0p7sO;x)f4HV3ioGidy3A2RQl>4)i0B zGdV=kJecs9jV+_`m4O~(`Xt5W$}{TvQkQm&Z)c=a2f3mpC?(>MIbpFWYf|_|k>^eP zgm)QFn4)oB9UEF$Pv;^iB5a~&dwDjV#vg$j3ColV6x(R7wuq;jV6ni9 zF=)My2OPDUM!zj>8SX&TDRA|1rBf?^;2R>#Wp^?GwfXbOP9581V3q;woSXAoGn+kq z^nfm>w~+cR@2!E(`N;3s@qxk7qo@;3=AK61i=fVE$-iia-08IO{`%}rfoaA8+=%#g zFeL+8Io|n8hX`>^4alzFZ5L0FCMWPN|aqWc9-@3^qMx9J7@(RDkqewYXWkk^QBm^xhUV932wUZ{m}vd2&s|j3bYz z^7&oYPA*zv?c~09z9({a6?X*q0VIH07&7iax<4 z_Tqtt6-J`$ZWoQ=Myp-DTs7m*mTZA2^6It%>xzSgaeOR(fwurZL@a0L;>k~DlgvyT zK0jxTsYg(uQMa|KwaNZW(b7`@Ct_h!rV(SDlAgF!1gikL)XUsXuO0_Ru?xG2SZ=H%UuEzPHIuBB^#C6z0`>3k2L}Lv8-U@?fI==T$dDp>MV0&q;XSE_O7S3= z8Ip!H0i?Dbyk$s7mfazNxzW@EqH@}nqUxiT7NFJ@XYNi3(33{Te+9Pg`)Z~a-H8`? zK9ot8e=yhLhclhX8`ODzHxpvmc=|JWS6iE7zQ)6f@X@KNT@&=~A3#20TT{-iWq>p{ zvMpLQFCLGnJTLzJ40URqcB}a>)$0KwmH%8=s5^Yg@>$mPGfE?@{a+}J)dxmr;0*}$ z@_(5z1Ap-U4wlz?^J?vYZ6%7Hg#;%~+j|2n9zgjdr2r6>Ep$t;lme80;Y^OBUepSI zmKkyZC218I)hn?ohEEwJP`rL#cg8BLUw7C$sYmT)3X9OeIDi5dpwV!THA+}OtyDMQ z)%26=F0P5H%z#JW%76}_^;i5C&IskW#&>1`z`e%XH4UVrEP3|!i%N$#H$10obReRO zm6*K%9Yyvet9jHZzMl;bG2TQ5u-%w;6#NJD#GQR8`OzO(<*Jt0m=^><%a)itfvOFQ z_?9}(mMv7*$OZ6HtGZ$c9vine)jcbb*9-uxXgD$1MTfC{quSfhW_~{2m}9XLNjUJ; z8QaYbY5%YWkj?Ot42u`%T`Q#vFPj2N05`@VgWW3{7n7*eo2BmNP? zzOcG7b0nE>aziouOGZHJzWMW!aIv-$+y{E<_*bS2Byt-CDCz#MYQnTL=C}5fvw~Ii zbt1Hz@_d8G+*93{sa&A1Mx3Pmpr<$95xKzZnTjBOn!XIujap`~0RF8J^|X$|YU}|I zToTevJn0)`^}cz^OW57|5--i>aDb75Uqv`od))usBLJ67jNN|y^Gfw6#>QJV7b6Fh zq!D*-C>onr(4TN;pLXWYd1?Ft%oONG(-z`()F+QFSycxbi3$sMgJ5BgmX>GfvFvOM zh%39Kb?ecs4QCpDO)1Ezq1n<&*SjsUXR<4kLbQAd?|jTRpCI@WSWbS=@iTE`iEq#Y zd1E3B`dAOYDeXUJ`)XESaQ1DXIaM9x@$mUp^>_#4s)ixkK39d#ktCc(mh4y(1;Tea zAfwod;|#J3h85%GhQ3R8%`tjuAe(CP6lBkVl4Q;}n1z=so=@wLIA3ceKtVDK<4Bof zJ;FxYFs_EEi1akJ1!jsF)U1d?24+?+l8awYc(bv^HaqT5y(rPDI|y*X)PMV(g+RtV zMr=(xz67)bd8O)HN5ELpj94sSAW$*kHdIs^Gj+$x>cKdyR z4?>T%_i*9LL}5S_Y$_3F8dM1^A^p-oTV1@srU~Y;LqZ8@)w@}ohSFKhij27KB4a9` z<~bJo@BpZzO<6>Y_{%QLc{h`U1b&Or_ns^Sexnkfq*Q8m3GYyB8rZ6ctQi{nF|mP? zD$K{Vh5eHZ5;Xe{8Wf%ze(<@*K)VS)+88Uqnh{jI)lBPJ0**-?W1pU$)~!{DXXnG8 zs=YM}3p^d-nK~%-jq=%kR)k**38SKlYXO%;KP)-iAan-Lr!4!0HhZ2d(-=ks&Y^WY zI|oqYjQ9#}1(T!j)5sv9WY=M|uhugS)I#g+k8cvX>)MF(w-i{;e1JXy)K{bcr%&Ry zh1+8=V&JZ`Z!a-;7C#Wu2lb$>rnCrlqX| zlqhO_Me@~E7tTlGS*1uZAyo(nYD0H~lQrCn$#2lt{xw~JF^Mf$8v+e9LW!$8x|;J= z$e)z4iH8I#J^!@u6d3E0U7N>5p6c0hF`t zW}X8U;UV3n5L;8jO1#Q&jYwX3v$m^%N`q@f3J7FM8wD6{=Edf;;EuXJ`3)8KoqI<= z$y4|Ka*mt@dfv=Hs<%K*6yDPm`~XfW!4-54^xFA<6s|n@D_nVQ*V9_LTBcR6y=?J; z&+^XVMf)vcAYn6W2+#j$$Ruyw*c7?5^YeXWj*x2T-I(LJ0qr=yJ&kmQkhHDq>qab0 zq_td?u!lkf)fR$DN(#D>z7ae^dQgEaU%A|-4?HNUmYBIt66(}-D2pK>^$KF@LPY{A zoNkPuJr84J%imhz66hTKwSV_g^D^*(rUSQ_BEq_^7lB87sYvv3+254VX(9ijFQ#{- zyrp5Z9r>*n(>VVie-7Dj&a5jYy@vUV!OdDv%%^i~3{HNQ1>LL%c(S5(A(yiLY?wam z_;?E4Z{Dm)2R+~0;Wj`g8Ba#m=Xjxh2UAMvG~na(H!KT&`&@8zd{!X>QH3aQK~i)A z_eV)s!t)7k=qv{Z01w^bB;1V`GO8cUAL0@rDuQ_|U?aTDtEJqhEb9$R!qWj#BQGC! zjRC!x+5u3wC+*e@%{mRo?8@&2cxyF+^Df;gm3&KK5o#wyFl;hmw8&;qWSfE*(xGs zC8(j@&8kFOYhFI1KTz-i$K6@-YTtg4`eT=&JF-4u-PdUGZGd0J-dqS{W#O%{Wanq1 z`5f;$_^qm19Lh~T`hgw%GPWA=67U>#UI9obqG5bPjbD?(+(Z&f`4*z?<5gY$^-@zn zr10+TQ$X6E!fSXG886M_k7I3NN{_Sd_S$@FpS1g$j;dz##+K);c<`22Ge2xYBwUzT zi6+m%Hk7@T`|Zx|&SlaD3#GGGuS>e|;9LcM>pTiBhC-)!m-TXSC{(d~Ssnd|JtM=bra2Z zF4Y%^6EmJb`(5S(VdQ@6Ru}$n09mJVdGj&-WO9At_?i3@{rv?|cpu)v>~$UYBn?Q= z;;eadK%N;dM>`Vyf&}mH63-IPkWR0bo+jC@#s>7n^nHbZXyzMDrT#@K?S@8EoT_1G zj>FC=wqh5Gd**@|NpF4x-tk*z0%em}X^ZFk6l`0;2O^eS>!xEda}E@uoQMQ6!X)*6 zUrRQs)Ig(T*n|Zn^_p36Pt##mETpPIzBV4CEd5=GoLwJ2^`q zpC~S?{Y6WGocC4~faw6o|HYK@KWBHh#Q#SEn?lFQOS^%v;rAk-bBKM3C0NaHfL3uk8 zzE<~32DvTx%C46I*b|`)WuKPFt*<|cgYjzluPPZyyx2EEESEq}ER9CWkb2nu&GdKb08}i6j{Wu-K`%1t1@{2PEEU1Q?Yy>RtNy^ROLQmgj!c!hxxbU+dwrAB+i2~Rue1nBs$j2 zXxQqYg{A-N-ApHwHb4}h;ZH^Boo)`Ekp!Nr zWmU^AgPXXmj@^O-92Yb%YrnD(J9~sE4Y-HFCvptxYyy%u^}1IC#_Q5n_CbpVfJ z*!h_+dz4|jRKuNPoQu{<`?xBD$C|sC$QH)FqC4FSFlE;f|55xA`x?v%QU~DnW`OvJ zHV_H-(eNQLPo+W0k+3OKhiO(-RRR?Lglh(LZkGm z>T)+@d;^QTpQB07>UbSnX_*vD(0c!eGCRy1JcBs1jzIfwy;fQ{`lLfdh4ukCyeJ&o zosve0PZF2cR%C183-mgm3{|TvNho_5Ncd?|HeMe%ZG9R#cDNE#pA!3K=!iz^2s{CR z=f^Eus36mEn|b_pbTZx5*=tCtn=fym9&FKK7P=$Dvt8#FsjqDXZ#g8(8gv=4UYoc3 z46Ur+e*5VQ&$3i;4CUtBGel$qAK!RF(o=O~(g${l5Xx;CMORLZdkpvwrLO}bd}V@K zTLr0FK9!wo&IlUt#~cT?O#K;3JTRTwuX`4Boo#W?e)wd5GNOp)VabcDbvo7Lfg621 ziS+)yqqHu5gZJ#z!U?#ZuTT;n#|w@{32Wc`_=pyq(3mdG5h9c5h9@SBkL7PM_=y68 z;~vJX9RH9l>Xgm+($qP^4_C^P)epgzc2Z3F^0TzT{dlk0xNw3Z?gAZ9>U8w?Y;$;x z5j@`S%R)lme)5ab)aBYi3`@pHc~5DOU&`-> zmI{!wHvs8fYzK5o-r|p@{$?3{;U!!NnHQBtMBlnRsfexTrt%e8YlNvGGfH-E(VE#~ z)-h<9BlMwN@l!swdda{j{h5h^p%;3eD(kzA#XUO`661c=H;3^1EX-ppcppj8rrr?k zKBWNBg-Xd)zQmSNIv-#A{Lp1+!LL|I?ZYJ)X{oT({wA$c*a-KiDAxY&q}0&!DK56r zbX8`X^`ZgQ0PZ`$j4QUk&6m8Yb#D>7&!ICO9F)EF9lAmrBSlM#YRiJtFmd*!a#&}i zm6mQf%w_E)uJ-CieR@3*##~nB)>5IhwrQj@GO~Vio66J9ktePBYV(wV$=D=R@JU*i zX6ETW;PT3RK)+^+wobvLLl2)1K~BL7ba%znxZ$B8Y49SqWB#Oh0~3=m4C$7)oo@Ca z83b~*bG>x|ThhsQLuS}|Dw!qkQltKzD_6!gdn%sSVdme98tX=~R0efPSag0?eKba%_@~Db`y-qV-$IJ)hF~1YscB8 zPDNrhl*7$L!Y59B)ZNPjMY>DOXtkX*xQaK6OiHxdW}beVsR0R20-Z8Kc4z<5de!Xy z-AEzIY6h5}D4E74M{*=z2bzG6PsF}2?nPr^m)qtXt^xGlxIR+R>h2onRPu4|%4GK4 zFLLHv_O9QC+4uWH=F10~IX(m{FlSoAR7&B(N>p~!KuVr}_8P||!FVReqi4C|7bZ;% zZNyJxtTuR~YbZzufV;ps;U59U@71imLDg8K5|^Zt z+Reu*#giz6mEPaYf%sCIoWysMr-*yCq=ky)LWD<=m#ezzu0RbCtxvL=3$ zI>}0@J|92thM)lDJO##yu%yuCRWM7L#^-LCV`qFT7N_I!3H?{LrbOQUtoWV%;S`@a z&N;MUu0G@Y80_2tn7c-qFTdvz~ZXT#=9h?Y-t)4!5uCJ}_agU2Tt07@i zRJkXAJex-gJfAR3?zGYn1;2^F#)X}-a`Fk*K9?1U&n4#*%Xe3}nC&M2{3fEjB4K9k@q^Gnsll^K>=m!{=0;{QZv+@}DD|&- zr9I-2@>!5Z&~`NV`{!-9#kOG!zhD&SklthB=7$;zqXJeR(=dJVb0%*NrobWBm|-nr zr}^PbJiZXZM7N~WkoL@i&VZINgSpG;($ylnxY&dXk^%|HFrL96ix&5puLqPM^>frF zevZECnyc7n;Iz@K>qr#Y*z0v-p5jXJ zWIH@?y`?xBu7U8@a-85bVFrA0HGLkB0+(0~mGM8cUcs7PKfsY>j>H z<}~<3hA)@S&62HV_f1gO0x?C70nek3(;MZPAN7`cg+&Lg`HvaI$$7020W&>?vRck3 zS;^m>+%-&2OCC+6Ckfk6&`%0QeIsFPi%m797_%+5H|AO_KfeOR;&i@gOJINq2DwG} z{{4G7c3^pObo3Yc3P_Oa8lC}jciyY)iHV)4Yxx16mmyfxwkP;moBCitEm?h;K2e)@a1JLOF4a4#%X6E?DQ&EDkstJ34LDvU9c1qM37*YFbEU2( zsWy45!Q8bnbIg>2=lZBaJHO@Js&nR%`klf4K>hRQ{E;~eXdC?+ogZac*ags^FrlGT zyX;6`>g}Mc53Q34WvZGSMB+)Xy^gwr4x-@AQQI!9BM# z&%S?{EbZz|dG-}3j_H55wafpp;ylIU^mue3HJs1ze9?&Js&8{r{!f_}6Jpd>U%%JPyo_+9>$@S*i^$pmzqYapKJDh@en* zNRe!LbAj`Y7=3Crs_gu=7LjFeFMnjko$>SLk|#4VYR`WEgL8W`%z z*Tv&mk_BF#;;1L|2&HxG#7wAY+|2IHFH46tD6Dp-PCit+q#nOeH|zH+rD^G7a9Icb z{aSocPjJftojVJ9``b!f?Ld&26BO>b^0sDVRBBXI5@-xCXeDafGE;MQeU;~CDIb;y zvueO)940Tt=eux=I&%{$#yt-;S2({S~H@MPqG;m20V5z(EZ)bU0YR%(aEOue~3M>YVG%d7D$?AGGSzD z5^}hbCx7Gmk=}7H&fRP&JS9F-q7Fz}& z0K^-snes>~S?gLBg@lNBHT@$FHpiZp)SHDe*v!khSzuM6GWD4LcTLINuN za)q6=S5i{r@auPO)wuyCGGxYw-dgVwSa6fC=ndDv4$E3CMYabytn)`&$?z`kwrvF$ zifu*&d<3Ql{M_nUMP@mZtfw~1$fdzZsQMdcY)L?V~_R+PkhoH z2L<@e$MA6YG2)Xts8$~s0~pTDUj*445s>27^xpejBz)uav>r=+q-{AD01pm~35~wU z;$OL;aTrH7{*z0z@&CmV_%g}|xE*Cimy57Dnk}ElkdBTpC{3V6nzB}g5xs20V$kl5 zB^I})jJp*g{3XBlABbAqr8@W|;MWeeFtR~a8gJ>vl=0B8(79Xz5NcQH06Qe1>~u*I z=`-x)t(C%T@P6*_{aqmbUjlBjo!2T~kqt%f@6&|sqEn5PW}CmZP7_g9*6*Zphl-}s zm@UN88-~ZnUmEIqpNwPJMkiN|va_nIRdbhW_w$xAAkD+$4`;JJE;czHh`pzg;q}Pf zmsiBa{Q2x2hz}SRU8q@VkGUIaO0NV+FsQQm<%M#_w*sCYd@~Vp<_`2<8zbHp;ofC3 z;s`(2I-t0dc8L4KgxGxSl43EmG1-<7LH2H(;98`+e#b57t-9&nM1V47{qH+dW=V3V zP&T%mHYIlmUixkJPZ@#SRr|<(3wqy!Box5IX}?W&LH_n-Z-ibem^3wY#`(>FYh281 zKFZXN632Q)5eDpYY2a<+m_k=W%g$?oKx3ZBd%jW98sw3A=^IBjV|C4}H8r7oGEd8@ z#R47%UZ%MiV$m8f>bIS(`^-`{+6G-%R0N9AkUK%K4lN|c#wjZc3uyji-D0 zq;`re3$78Ef-;J$onU^~(2$SfW6m^l_G|)|N{m8~l~EsAC%tOttC;5@!|U{jd#3E{ z9;)w{cu2p)GlISIY9?`0^qbynSFNA`cHP1%x%2sLPFREyEH|@EiH@}1txLT zG#iX*k0jS7zXT9BAA=W6r>1SY*%Z2`D5Gzl;_pt3evWA?Gz7*&nVzHLO=a!Z(p2a1 z4hgABxcMzOl@+hM!#Vt#%ZHEX%oiZp^0Vn@W7j~YO>TTuSk9`7!eMmIG3U^ek9oDV z5c{h8=(M%?gJZy_&>^@g3I8NueESC&9B2y{7V`9uh;Xf=3yskJcNZ2D_g|Hh2^cue&y5UN?`&I8{2}ss`=f; zM*{=>e&h)CYa-Swd1OmmmF~qE0UO*&A6MvOyB5nyYEMV!@!3+RXM;Dl`ukCk)r`E2 ziUuFwb=n&YjEi0`yhI)Vn|}k=>=PH8PCb_paFpgwsP*~UB1Y8ctAEC_dMsC8Y7^-C z!A=3N<+^Z-7P*w&Eg$Hs=|9igT%kFqCh7fJb9z!E;%rWQs%oS*g;cWhq$YE{5YUJ3 z&JKeiqEGbagb8!QycX({e5#%5*No#TS!DShTA_mo=MH!PrymD+0-?ugxoyrSbBa?b zQL}eX7K4<4>;M_*qv5`t!gw_PnoDdCEHh3^Z;L$F3UCVTg1)Y>)hztr?^Ay>L|NgE zY1_}7%rB|p!8FrUz`m4?V>O0eV=@3Nr}um(^nZXW`zvbeH| z)yCx9`Ff72+sQ?llE33ci#;AMP2{Xux+PiX-R;w;OFm8pN=R%gY9h&_Y5xL95SW3L zyYfg)3q`jIq{7oHv*KaM{h`jNRd+tNodI7YZuU32B;-165#ny8bD#KaILk2!h{WK0 z0A@my-A-Mt5~%im{D}yfyqTk~sJO>?h0b_X_dp~p#9m$U^XI1MA0%2stKOb*n$w6> zhBv*u>cEQyl$p0k{enUo$}HrTJ3t^7m5i^)2fQ4asg3d$%D=SBk;V))?o@sk0IsHR zKUp$1gQuwJe8hf3Ce|yB&q12Z8qP z`98Z(oB!+CSSb#$jmt3DUvUB|%gh7UUE7KJJE|JxmmnGoMU}S9!>NI**BNF+n3a>A z-i_~e*1(Z@5o;cxcQL^DLY{pCtAwVZ$F~pzcW=zyg*g8qXIX)8&2&6_3Rpo7U}~EQpi#1`F&2AW}+tq%7@FCxfmp#{?4HYYkE3 zhRnSwsUgn(G8i@F~0+%>bls~B};P_bdS3iR`ecwIH*)58+g zsIQf*&GGTX0L0k5h6QU1HTezyVYrc)a6&HeWi5&`SO4eqX^2Xk z-4q&`BDDYWlfJ`!Ll~jO$kKOZ=YxQjRJO(t!!j^?W?q)TW2hxhv1s|lDWd?Xc{%m_ zE34iQ$%_)@Ew87JXFVA!4VACUQTzs)V^FvX%_=J9mT!FStP*%LnjHytFe~!xBybehitlX zE^XLTzg2lPaSREf^g%SH{+}39PvtI*-vwGRXsGCwm0pk;R1DinPAk1s9kRB1C~070 zm?_7jO*=qY!Vwht!dH~T_PHUYWkUaeS!J8wBht#J-{nMwb0F84&NED$rR#X0CX#mh zPT{7sA{Sd!g@;2`zE2_(pzPm6cCbatR);7miiGF!bcu0lA5eo_fwqqA*6 z(^OizMfJ2i*wwW}-e`AyJsil{aYorc7wm7Zm-tzk#ADKdUnc%T9@z_+6^TB8)N7!d zbXTyg7iqbAPzHNF1(foj*|Fx}ba;e+ zRQDA=C1>TsA-3(LV~T9#do;2fG15NjVgWyTyjRw z)FisBb4~uZ=6X~q1#|QM6q0k)Xm9!aSh&b|$Tc09K|kkSEDeG{P?8E#0wUE7^U~aX z!~}1=%$~MO!G;F0JXS#yJsmV0a$)24Q6DFf#uV%DioEbt`CwycXe#`~-a%{gW_eGHX)Ls(z~?BqXP#J70)nkKw)EhVWIhJ~?IpYRrM2clogHZ{U}#z(18B z?s!|7TkL7UNQ$FZ+@cG;4lqagEUUK9X5AK;0i){sj>Zbt(HYYgFQqj+!I`(yzgQTd zGk#beIZK*Z^U2~H{FjE>loX$_niR{Y?ROsUYjkGv*EXCEXNJR?J<@kuozr`L?7RHX z`l__TQp}vaVNqs>gDxt&{HzuZCqI^dNMRQwX?Nocf(=c`htIGxxw#xq2g6rt7J-U$ z3T%2?${Jrl)S#C%*uiZU$9Q^Gy8h9+-q@c@zSmddJz#f9ca$l9$;-Fr=PaH@q%>(L zpBp5|pjg7sdy>qD(uW$f-1lrfd}V0qG7jeTvH)dI7Nqp*zHqh#kMn9WxIr`os$G;< z69i-^-l_gK=H3G+s;*fZMPC&Iihu+`Ku402v*cIFIfG=$aTszQMn%a%at0;C07D)! zl5-9N3^3#jBRMnw=Kbz>?x}n0-l|jepHu&?np!Zk!`geV)vNpIr@I3-5j15?J&U4-mfR7RBZ$ zq5h=UH_BGEgL@IOQ)a=58}CYbP0rHmIhj- zPKlg6r1IB(LIYIAvFfta2Q(fnR8Hy~P<30(HB%=x`Z;^m;aG9XbUC$rx`>9CQoON7 zE*v=QaH7W*mh~S1^8ui|W&4!cqJV@LffW@M-@bo;Jm(KMhybOZ2>$4iHl{20yzc`P z*C9^5r-asHcK@cr^W6>)@0N+I#CwhNZES{4tT>>vM}h!-8;G4e7;?9C03c&x0P8ot ze3>pi<6vwmz^l6PO;Xt{Hd!i?cm>92YC0IXS49QjXNzcOGI-2C`InBwIB zQ~e%h0NA_0cCQnN+Xc4&h6L#UM#)_R6cV{4a}*Mt;6ndAhlH$avAr{M12YcMuA6Ji zN-9YdfB5uOMgFfl|D*r}zI%nYPO|JZHjIaN^8skqcpi4_U~@BTV|Ht>v86dTn}fY& zkcyJ@&mjEP9}e#p{w!QbM_pgL zzW+i-a{`MqL&%3pX>=hvi2?8y>NP!&7FQ3a?f$n!@G#HB?J;loTHwRKO-de7Vs&>=ta?cmOr~muvixGM5qX5)je4R8%fPy<(IU?vl zjY>bFIY6HH^)QCFq#twp@Xvd_!R)Jb4qin7wWWZ-+~O~-W*YAW6m7U@FrtQQ{ zbsL#Om!-qg5K7lbyLqv(v+x+j22%Y)Wv!jeJ<^-mX!yl0@<%u{!zS zu>TzCY1W+TmYr*jB!p`=(kv}|XMzCtE62Y#{Gh*$U(-KIYW1Wq16|t50fcF_gdZB;joKVrJpFlhJr`j`exIO~(uM zjQ3QRV^iA#Tewq+teFQVUve12T#U9>^oK4~q0oklE=EN*&V-zqLS+SodQEipBlyyu zKW*K~=gi%m90ugNC4E9udKTgAg#e;Fr?_-{+yyj!SOiJN%5JYDp6a_E)#(`&^;^0y zw1)mMaBoyYp$};s#&!pg@)1$p47`}%QT>Lt2$$e3ixIn5xFtJGM89X6SPu(D#p`)QvW^&$KmQp#M zN(isO7&UA#b~qF~s_wxFAQm%~*2Irk*;(Z_(geKS+2&{BkZyH#(xek3pz?{eu1cxt z$?Sn+1CRt6sYWq}Kjg9~;}XN~QHL^T%d4;v5{XW;6vq>75~qY>LHSwb}o%eDHCg%b7G<2chRD z@x%?rkQSV75eu7^2k+ppKP_)Wx;Fehfpe-!D6O`kD*({f?EIV|9grx_2_G9feGl*B z4h~Flq$N0c^jra>5t6c*w>BEw;_3@SeOyB5=>3_h5XY~TEdP0;iQYPi$=Z}?Giv(v zTDE{kS20HBH&$dyr0=L`wBs}Rpt;eJg1DLO{Ytl%NhPR`pHP(e&aqHhl%Gut@V-r5o7R!x9N4btKp>7QCMi9 z_tEC7*(%lKs8rQ>&Fi49y@Dh5Ib+yIT^yyL>A72q+<@m6%xFeX3?pdkpnc`yE}5A7 znk&t!=z`}^ZfCZs{rJ6f^G`Il1^~7Lweghw61lB8W`7kFJP4Ng<0o#&X(PEDdN6xM zP5<@6fQEBZVtHvIXXw`(cZ#|q6R#2WJ)QOlh7H8Y1kP7;Pw&?c5*KO*>)oEI!*Yoo zoU4#;swJ9Mx4P}XEksN+H!`}v?j&F|aDg#f5)-lfv5-S+= zs2zIo8k9K>a?1JTVn8QbaJb6o95-96o_bJsGWm#q{DS@&5j>Qt4&t(aQ;V+6dG}h0 z@&_wX5w^qyM&Oqd4o1UxgP>gS)^$pmJC~eE+VbhX3+uV^mhC;1;-$ zfL>Np;e%9x#mT`F_aQyxtMbOTyjyG5IZW>6iA6TBb?-aCs?|AxV=-3ovmkw*t#^5# zA#ERP)YfF$V37Kee7djo6ITkDsf>*G1^JXEeuMofPR=1&((lmw$}9a%l=FWmVRwN=W1;FYft(_O0O;S?e7^I2Bu_M>b8in?&5i zEK{=QOhm&B#U+gwTB;tzNpFX1L8@?Kq6SaNj@_=nQE}<;K&$1x{Nn*d45#vZiWYSb z6{VlGiryWsO(W}I7h8r^`##zGmiJ=abTd{g{qlc>;LfmJwZAOGJuZorUS?`c3rGR$ zvThOakyvQ>Guk4WTrFt^&U=(wo9N{IkPllgDg(Qi!mf8yT9$STbUVz3T&0V_ zU9IFe^Tcf6U}MK)!mTpHhwSzR7pli5eo_)Vm)P?rH>nz5B)ha7vGJ_t28++S$U;TFGG(q1va>x%A&u3g9@lz$T(JsI zyePL)EDwX+`x7{Qe*$S+fCW3JxoB1JHJjm!BM=baPAhMcQhi-3#027>wdT{D7JU%N zBOn&lhHjrFll!`P3OVYE@_#4pZ5XKLe)!gxv3V>_*2HC0@`L7`!SCS;>6}XXjFJ+U zyx-%HkAvjn6R_(QPgHQ>LYQm1OSROfD2HKjrrbdeS;go;nIZE*-7;q-n`y%6T14t- zfM2AcUgYVwVrt{sQ=v-s?+iKjbP3PehgOaiFk{Fjnxb&B2j69PQd4i&9j{tPGBP?T zN$4iyhy_Sr??QLt<9=(mumiPp0s-o;e|x^)^FIP|*)%9`q&dn&*V$KA?dAMMUjDC| z?lV-5g)+NA^Lr!pcK?hCv@8FX;yFdwF4@kcYUcQ+p#^sw4(>c3a{R&k(ot(9t)(_R zC13BIG$SY|LhQIWJ5Q9UxoIjGu1I|~H@iU$E9*Pl_~qZRdA=!SiF)5ZM<`soa(Bls z`id<8I!dUo!N>pU>;bc_uW<@hnRo5OUopNZI> zS{doMcCbR9biWWj@_|?Kp^uR&DfhjOHDk8nC1KoIqKWB5C>X(`ls}S&;iIA0iCpsW zNTQXQm-rZ|6BMThgTq_3u#>Q;7XEwMD?GFFT0E38Lk6lJHP%E{PVRcuJdf2qDY|1C zgD_4Xg-J<#y;e>=8dr)`Vy+LDXD!ns$dnjxxg@W5u!*MUF1_ZD3}4W(4*CUqwE3;i zh>q_%N0e#N%RUyYo6lQ(q4!r9y+HQS9NR6m?BwX$Wk48tLbVd*2i}3<;M%Z>WD(aD z^Qu}UW=YRuKF?h_%C9gtV4VK`!`%gC7{3?&{utm8&#pc>zr^~!1r-Q2nLlkn(YY#u zz7Rg~QVs_{E|T6)t$r@ff2JtXYlCdpZurEE8J#O7J=}iN{UA^7fCPX2*CjSwwJi5` zt^`}Hty9cI{e-=b_eD+_${y)YP-N<5)A3=0R*hQ6=z9G?>ymMyv7BNv!MDiM~> zMsz@iJBOTz7CrGZqUTU|rH$6B_8IwRhe2ZT%q8Y~v*g}M!l1Wd7TZh+TS%-eL=&;n zsWjB%2zhCxU||0aO_}1TT`e|vA!}RRmO^X6N^52LbPttkCAvUHr0Oo)b8GF>lK<6#${2+T&xKpT)gXz6u<3oRa#0k$eYJ2A1W~gGqm_}_Y5Bsa7ofK^{Y%J(!aRPV$>WvWp{1Ytv`F1uZ4c0MICXb^} zQ4M>aHF${yv#MZ)NnA=fInv&G9ox~_PqChJ&s=JT`faD)d!h&RHRT%t{=4v4w_2ih zpW@o{S>K{5p8%yQC$dsrh!S-b83P?3ZIE}ou*BSR&X3;3>9&$uiOihX;Zi6{mV!u zzJkTt`@O;65^Y$f5}w(#1S>8ZT;2FoMcp3G!tO1XZRdvN44vYyTebLh@Q1q53g@3} z4aRBQ2RBp9<$c%c_+6W+J0Kf8iznO8+oF^;QGE3dxo$l!vEPod_ccUPX#-LDN}Ibr zGj^x`0!vhgfK|P7+X-EG3?jV^d%C| z(LN0n+W1xRjbdlgF;~fRrf%yk6{LH%(d2h{ZLx0$u$2{68xf)Y_Iu$9&3)^d;)z*N5Mp&^&@#mM1&FNQunWtp9 z(gTPB1uwzI@J-?^id6Gg3R>mH`qk8eisuh z+ssy}1@v5$=5~aOoqwnAW>j3#+caw%c9ljW35oJ9y8=fZ7XxwZG2zTNl~t%-o4+o03Ts+n<&h*+_FX$1KA7A>b(B6BUCR4wmu7|k-qXa ziYQDZp(Te``~tXF`LA)DdezM&eQ<5FJ_r2GgBQLVe3QHxYm=+0f(Ij6vylA$H>+9i zicV7y@#ZVva<*U<=5S9jqWdQv{@;R zyT)p~%&!bLTQ@BA>r0`7eoR*ceq#Y^mq%4^y4nLrtUB|j<7*!vB`oExWVJeW{AOq* zij34Wylg$Yoi!EHifx^gM*Z(q+wAtd5sr&T&Qc2$jljhCu?xebyt97|Od>WlMqK?K z#ZEiK(;qC*K|4DbJ3@Uz07{K#PJ@ECUZ|E{{>ItjBBl1)k%h(*!HLD%$5jGH0#wek z*g3$LE}6}p-GTA>68oRje*CC=@pO`HI+_-?+Xscnctx>+cg%(lX|-m@t#Jv>kN9FQ zTUH4$wH+y`#u_1Q=4P`Eb$|Llzh!9lsgwG;>o4M~SsfxY?>Rc>Y*+4Os1*cIcJ;Im zL&6#JYk7H3(phpI5Zlf8<~eULnMzgF7>Bj8FG5%buJgHV!CIgLM&QvojMwa5o*ih{ zKK6597$R!OxHlkvFKZW{~c&Git_+i76$se<7eRkBQiHX3?MA*)||9PlmvK#u!h1^Xd^dHuHA6FTH0R)fcdH@f=UrC`Oo zI}MFr{P*9wPOD{l#RPg#*Cg_3N4OXC-9;Bk5y4DljjbE%Mqlb{#>fq{wPjOOf}AGM zhg#A6OrVUKrY;(t^)9_ss$G(_9|;#*Dc`Q+gZ|NsU)~jo)>a#P+Fo?M^*no%@%dXe zh73xS(c~s>`zcicJ_Xl0qXVY~CXis1*DT9WB?`zaeNwb4RwPngp$`1x`k^BN4YM+O zU+_q=C-s*CoRfn0%O5=B@gmt?8hyJo*Ou#u8qM*vfiPatdeM{XaC=>_-1Yh2%>}g^ zaF{Kx;h`_jjqv2)`OrcqRUgjQId?esC10`I2%6Pp&S!M`2g9_qh>5ddIOGR;P4i>N z_}mEWHMbUtiAVbmUT0SF2Fd$=WW*)MI6~@0>%aZrE2D@F%&S1=>S~)M)DoI$ZpA+X z27Lf{7UZ&uV8m5S_ zbT>2h?t^{=&i`^VNhSRA*qQ$4+80iS()PN##jWVUss4dp^gr*I!sOeH=7jgzgkOK- zo<6i6(?uqeUg2iC zQ=Hw8j-Of|-ejKrr>Fm1$+}*OdG59J*VHFx!n6jZt2bTvt#ad|P*(^d$+{j#HLSJZ z-^PFO#0~#uAaU%MCT-DYEBErDib^flXmsL|IF6e(dvFcSux#`{=OvFw>z0=n>DAq@ z;1!)LF&8)P4u9<*;7mqU?2>$Q{`rg>Z_(MceD$n-gCWdQm-})LkORM0nscAvwMrwJ zBG>;lz5WN^^FKZRe_hXQ_UvHog8gRtDXZUf9j`U|X8JArH`jwlvSj0ba=soZHSPRo zAangQke4P)O+^T~`u?E?{+AtJ|20RM-y*zQUKxpW5t}hlRz?aTB>eF7Rd2@TXLvAz zf&FTVCJ2JZdVE+vJ&2!o+Ry+l?NzgI6T0;5%lfWXS8UmJ$04?EL5~0C&ctn^MBRF) zU340bB6n*L%IP6(Ra5*E18fT68}QKb>AAT2S`H}*A6`#pWQD7UK^082xrn0J>vml}QU>K0cBZ!oNWOJP&d+SL3h_6&I}cnT4L0I#q;0#kvJpyJ4PCUrmR%n%4v<$^|7#BFQ&8nBB%!Q zz9-o5IQ`-s{-=+x6~gZrZF{=)3Z3T`yKn>J$04TP3vQkx!_+>Ndp!PXihk*6qLK-u zR>#(0%NKU|ToArvGF8nam2!OOYNEpz!;kmr8|Y?g=->6J^km)vN7Z`_iR)c#>xQnc zbK8|7;EKLBwxOps%r@o=n^TKb$SLg{^hKff+`QhCPgx)ZL*m@oIzuK5K%OCauPTY* zgIITnKRPu1;Cye!z(3waz-jUKBl^MJ^FIfp@5d7oChx|P685J}a{6S04ZOe?+7U)H zbCpN!U~fI86e7*TKF<10lZKhNRUvNKS~CXSA*jp3QkrT`vxtcpKgap2oXO^DQlF<){&P zl!;8Cxw^5_!o>2Ux}G)Z*@XxYh}c#~Ks~AI4dv>zG+Z$0WcHCQ#b@SV4uL}@p&fxO z8)fB`)Uw4iL~j73Uf-a$gJg!|cg6nC(X?`3ZH3FLICJ&Prppqqi|~w2<>kq;H6@)N zb;4HcXwq^z{uQz?B?%?uq%&$FEva_CbIO_Vp4d!Hrq@Bi$&+F>Uo(q$JG`;Q(_aNG|g%hG}y_a>j*NOJs5)}zrIf_8&eDnNLbySUu=FzO{(Rs@r6sBd;S^D4c4qhjCpLEKqMkkauoILVZ~qa7TUG^ec^}VMC;L`;YA-D; zUz~fR11@ZoG5ab5nQu5jpmIy)$k@Ae`bEt(E9&{i1S9DoKgy>&)uokja3w zHwtG-fn9c^U$J&Dp9fFz`v1)Z7-v2<2)XG#Q6xLV9JzqEUJRBteG2WQZr>d|Wh&9e zbL6tMgq{NnIAWGLFRG?eNw7vp<9tI2359ZUx^0ik?tSnDx!Is9P$SJDju+$9`J0n# z`EY8gM%i+J2B>jli6Kjk2SeO>j51UkQ}3F%#D-Ry}`ZN=n!VrIQH2DY>;I8cD>2 zqV6*)r@nI1_zDV0I=g}C;(Q@m(we4?1$50tN&sjZ@Tn zbP*JJrQ{WAMf;gDjdhAOo`<(N9LJJ*ejvm8Yoe^hdN zDdMGdi@@|-_pjrP(g;a1g-r;bH-Z7vuz2m?LcL;(c|)#wIEKDXU&be63EWvB{EfTB z#uH~I&(QlxDyOiFES`k41qSBT;w&`{FneBy>qEG6A8ART)=mp#Zo~Jxa(LR0N9VjW z`L%HM+}oh@ZUcMsFPz%>>?%BbLgAU`MQf{NlxarHY{m!E z&H~99X)*G|8Q<+03^Y9`!Q>PURH6ND8xfL@S~Vx+u&CT3e%F{8K<_p;k9*>-r{1ZZ zY#EWtuk*y6WmK0+rrQrEt%VNU0!gAalp?<6ePUOFes6b1$&+@QW^ID^`~{JRVNJoceMS|?s# zCQr{y3#bu0`ds|lc=7OdBd1{c;JpUfx(+T#ZYyz<%9D`DVQ|GIfAy z(gCB<&OevSiEJN?=|@~`{Ox36Hod&jG`4-I#*4C|sD%R-aM)IEZ)yA79Ov^@p$Ufb zc5=!&Q5beG5_!UHS!U3e(NYw0o?qOa)~FSuOmy3!orob|X8A55eN&Y^T1;f6S0 zwDokBKC&F{?p+Hdip(oDl{|ju=5w{ZjaE=Mg(XDKR3CpgD&D_5ZTvIw65nSS;Kb!> zPpFLV$a521Y{Ps^Rs!VX2hyJj@2^ewGz4@qA{xCnheRXS&$N1r8G&?^qOecaa#prK z_z6Rr_vhW&R_+_(;SG_mHR{S5&Y}#dp&PaM-D;UHiYS6Re0;}POEC@BOa-?cJb@dW zqsYwmm>nbULB>L6NHxL|FTuU%IDSu?m_Ql3^Ya;J`fQvv<}mK@zo;Xs%nIBaRVFa7QA0?D)W~e{_Rk_&T#6{t-6SBSvO>Y`L`UC0@17& zHm335`rmX@7ide}s)1)joVr?Ac|z9T(U%&Cy%O{XQ9LO=FNW9}DQ^ZLgz(%W`jAjS zJ~h`!i2+t`+`HioqIj#P-OGeV%{JSPtQhqjP&{`|1*;LHUe5zcOGM>fiI(#N+Te zoNn*p(7x&4=l`%V|2z8!*a=8MesH<^LUKw~g?<2Js2v(UQ&BNvgJ^+EyeP?jQ~Tnx zaS#W9dpNiz3eT!UBUqHrB?#Ei_d4fCexXX6SGhhqt5x_F&eaI8wz>T+Q6CO-@5&%> z4*h!XHif@^^~mGjFH;^>+sY;7EVG5zjj#e%WGlepn5LA*=GyF!+SJl=v#_&n^4{v8 zC=%lmnwTtjl2BBB-js!kOty9o3S{N(pRoNGHI5Ao>{?V9s(J0VJ+f0A(Kt5s_^N|`0DT?)x4;%!mZA}TCXhrQBXy$3f}8GHw4D{ zw@-IDG=`QeOXA3mk{-PF3D>vHrJ$(&c6e0m5ViffN9sjhSxqgz#)AO8VMR(i^eqB> zz!C@jQBA!%+dsE}sc0lsw}l3<$|4KIo6HE^o*Ry=1j3rGkjY!R&@Vsbig@XC%2{&~ z!e4=kd9A~b5j4uRTZS`ghS>KBqbcpKA~Gv(^1t3nVU7W__2YGJ(NGp9!lI zeXy~J!javV+90Ow=~fuNz_1wNd@|Rv@|qkW10)MAAmY<5)!Nefz39JHvL~Rub~=&6 zz7K)fIKX0Sp6x>EHSHZ?RP9%qH{!FP?KC~IPyOrC^LN}aww5h&1Yl83n|WHB=W&6#XDHLRN1j?0sN*SVe%Tcw+cia9C&xpM+|V%D;iMrT++ zw{mw%eLCaMvjUunO}-W(v^Bsz);7#cI>rRK4N!Ukh_wQtIct!h+L7A#qL)L$HB%y@ zuMcGV^E-N25oD{@a&o(e^0|V`n+=K=MMJk#qfvw9q~6TsN0X*#aL}Z`LfvtlR4Su!NqWo%7Q=f zYG&mWE#x*#XXdFL6)an~#v`?RnS1tc_t#pSoQAH{Bt<`t9n>bh?mdkP%NHcVQk_jT zLB?m&Y@k;Dt7dRhJ)Cm|f7siDX2Z%w6ZeZZTS-DIqpFB^qI@Z5Z6qJHnU(9xtN+75(RE-YC=}>3Em!MsZq|ck(5x#(W7&AHQ2&$ z{)Rrv(K)vwnnfw*09DP3!II%i_j+lA)gZ(~oc*$L9&eZ}>xy>0>47^U5}=7D6QCkr zG1yP`T1yeutCD2}IUjx@EbGBIo?}t@RJ~w)6EZP_C`UMu`<;^>iUirN#O*_61@?eC zS`U(Z4Xske96|{mr0}kQ`?&HYfi8|N>w+P;@#KQh^AlbkBgn@pKK4s~3#AOz=-4Bl zt>z_@`?&GF&a5~xs1d+t%{|T`ABQtKy{-N%~1?#thVENct9KX6BF&Oge5>*7_c$cV?7c9l|RWsouPmoEEm( zN+bIR;;BDF9=>J182BPO*gQa*eaI)lH`Da+)3;ZE+PpM?6eDWgmzd4#0`T^Mi919@ z8<6k2d%CG(8unA1tV@QOY;wyJp(91l8%SLmuC)GM&7DQ(vn#As9_Lj zbT=>}MKixMSf)i-osMYp5c6zLMy0I*A)2Q|u?4Z2M&&;zE)*L|BB4Ex{uFp)@dOAw z*olv%m~|oQBtisgIctYs6|>!S9SsF3e&MEecj!#%GKyn5nk?4bun!{<0If-gS``o$ zkX$!oDiHbdAs8EbD9;ym?pt`Mj084Q?aDWjv2T?0bgdNfn{D7Mn~YMm=lbE5B(13p zG*2YkZdn=xzcVVWk;r1 z3Y0E_!k?rcdWnF(+`DMvb7^Ynq-oMu;h~znsx?S?;2~;%b*M34@;_qlOu({N+wOW;ejWC z^7r&vaxZQRi@1R{UWdEs#*9yWB(YIzPCYtHtWnc7JLVH?`^4KWj{%9Rv1Vmi;x^r_DlzT8`jjY_m6f%r zVP+l|Rpsto#W*f`_io6GNKI$2m5NFuxi&q6-KT!d^TfkRA#(J{>W$Ca#Y6{`2TNJwBP;jLT%#dy#(94P5Z6lN!vPav~|enASdbWuV9PmP9p9MIzii zQSv3IAelf`jEC+@r46I99|G!xD?TqLuFL60gwinHz|I+4>nVp9!k}~6;97CsB#KCp zqFrtaa7>w=Mo(qY&&5pZkPt0%ik6VNdnaV^CzDd1e(ev*1`RFI#r5js%7rJbkjgbWOv(AQWl8mJ5s$lS7snvNlG z))7sO{vGIi^;`01*PSJ5^)^jCtN^*dzV+2^(_K^hVfYGjW~c1@5D{!S)E&FqHEnAs z{l&aHsrFc%O9{TwAV1>JX<##@es-Qq9WaB?7L+tS&&lA(=jxZ&kcF;LrJlbOE9z0y zi>hob%1XQCNmzTEYbQKQCMw4HOGih?qdXaNIT;PvD>%X%oxURg(X^kAiq#ZHn*gq) zmwtfM4fskU^wmRzEwR`~D;zYp=@ihM6g_hGb}q*&o+TJd^gJxT_p#cjhjD8hp8gxa z=^$V*qTCm2+vA+}ht2!tdn%W>c+DEdgh#s*!B*I6J@v{~t?D-kWMao-jXkW2nU5D@ zohpD_xq5tPEz%dV2A{@)QD;(;SKmWU8v?)K5 zdgZJsGPKTRGrB08TC*QVPdz?x4Jzwfd~ok?4O*YdgX3+&kZj`j>|X)B#~d19t|;Ob#-;`tVDQ+xm*lH4?N zR!?0BtkI{}zZOuYF2XB4zU$D^gG@Y1-eG4T@^dAmP5C2jv&k2>;N8J#x&u4$RsT2g8v zQI2FoZN}axi7fR&LE}VLam^#AE+E!`SO7sJ3FAkk3IBmh7H6rHp~ zFDUXgKfx;a#$vq__B`@GEY@4;f_Mb9fE~K!`NO#QW^cUq`_cactyO96+PJT1LKNWG zcpvwl{4eBP+R;cSdGvg5CmZ@>HB(MJ$^Y$w+1+tjW413t21!a}0hmfvRfI{mGPsfg zAH#XMl5N03g@0~P7=vJdtdN!3y;Vqi zmvsb`Gc>k-nl4!TXB^11cQI?9{YB(CJlcB^?)zLra!|h-d2d?*V3axfR8pZY==2JZ6_u=qK~EXJ*iswskDPj-5h0nDtOI?i4x6b3 zP8aG}+FrC(jUv6%c`Bxe#h2gf_=H71S33Q=-W&xVAK%iJU04k;5yuMGE^YXX$HWBq z?zsw_c7%&*l3&?e`eU*bc6A#NtJ+P)0((c&X*5i-{?t%c=yjg;o97Ww15ux)mCeng z?@Ro4GKnm}MHC~*uoq(G>T#@B=V7@}EOvS!k4=~LdooQhHL2H@k(@R*I4w2u3>w>6 z3hs>iI*L{H#g$m(uavGwW9yIAqz`-`#n6oH)^(jXafb+L*x3RVyEeJVw8@#P@jl9b zzXljb%&!<~9BkKP5f*yjLi43h492&sr->NY!{*yAVC4(f$&wNlFiVTRf=(oOHdZa+ zh4W%Vlh4aiF~d|Un&({JhBK#~w6KL%KhdDaz_aC9B|{{LNC7?w2vs~V9ZY-I-b4$r z)-IuIj)PcfF=g8u8+wzGooHI7qu|~AXk?B-v zkBpP})elaWR%mOReoX!$RaUs1>-gXt8rTK4!IUjF6xGha9%=I)9bQC0Aa-XU^Zf+( zDiI9V-j^e)IEBZvsO>Y%Z0Y9Semq9!&p}N=h*t~{@-}%|?=}j|B)RYn_cy4gWG;7$ zy#On}^|awGzqDaQk}#xs3=F$G@HV1jj7X1f@HC8%iiRY<*`M1e-@(6eIdFlrOc*vK zZ6cs=i62BWCT*YT=`xtxsqm>b0~K0Ff})Q=mC{fU=kP%}{~)$Vz;c>UA*@Nn=~o`7 zX`L3Y4lFrPdLXEx5y}6~Vpr@GW4rG@mK`~tb|Q9prr%f#I3S`Nrbkh(k6ggaqdOu! zMT(fI>)O$;g5cx1hwda7v*9S#V>|C;I`&j15I3tHQn!{2?8yh+S@>l%MDx2uGNGQQ zf<%Z=ENu9>#PMl($hXy}X^+ybw@p!&X|4UNSpHpGBBCZEI^h^iSE$%g)z0Jy11J{* z-kasuX@+bLXI=<-uO1G+X2T4(;-_G7=CF{!ls_TgTK}w5NgWxCA1x?JV=QSRN3k*F z4WmF#vtf2K25x{@RsAf~;CAYbs2a|mb-T4;Yx@*4%%}5iDDG7%`8<)er`zXZ89Wqa z%d$DQn_Wy`iapv;<+NwvXW(W>!g^3NM6cr0>cn(hvsOm1&SCF3x0}eGLJf4#-D!=` zro{}Vgaqs9Rku>>K4cQK=mB>hSlXin)>mDKdT9~>4DNknW`o_4qbdUfxxM0(2D_VQ zGO#?Z+&%3o?n8w4n*3&3Ut)75r}5*?h1nvzIfp^T@vx(w1w9%jpG*AG;a@aO+*rG5 z!BfPUy{v5Fb8b$CR-kUsaf?vSc8%#hUuCiB>m_ZW8RU%7>FLO%1KVRh`{}B39RCqW zP*BPY8-VZEO_KQX0g%XlLCEW)$=YM5nW&5w&`24?a(}ZZE^**iK>O`#|3m&PV)EU; z`-=xb2xX)OZli=^ZO$$8^a<2MH>ZP9Dk`gM;|eyFTYa3coX!^Zcz5=)^F+x=gBiM8 zHR>dP`SnH*%{^(ztQPT8co3&={%Dh z`B^1_eHC_ZWH`Mys9j#96{St+ zbfmE+diVRSpM*CPF-GUlkr??^sS64a-W=@Snyd9gZXux_Z%DD;;%2&QAd35F+?`GnC`1 zmUAECPkBz3A+*Sfb8?A(OaA{r>CG?2Tq}f=8{I6^lLe2KRJJV z6F^#Z;_SBogs7j){Tx7*kS3b4T~gu|-)~v|aRXn2og$muyx})`xkB-(QRUk0-K40T zH#H$k#V+!I5+aa-nAE>#s}vuBzxq`UUMfGYsbcYOF2EZA*>iSB^4kx%Qxs-1hw2i^ zz9~?s`4+~5$gddKTuK>?w4I&p6u@hxG$wBC*qhBZe>{rP-vCa)5%rGBR-!E~(Sn4C z^P@bBry2=X>J{U;gMrrdaEu;uBaJw{lnb!G1btRh znymF?&ju`zVoVuooqaO8dkHIUVKP=xt?#!+6V){J0i^q7-iF8tdPJIyhk3|OkcIL;A#HjSzX$6`NgCijpA}U;e5pO-yyM*+(3E$uKIU|De zbrw3zt)t|rn&xZ=Nj<$KFaG)$)n$L=eh16k$1;!Lz`%_sOSr+gt4>}h#v2E7trB=* zhi~ssS^_diN<(zr%~oSADxzXzDeRo=Z;{&Rt0ypompn#C8`8{sgl1Y46-rNrx4|DL zoBDYb`Rl5w?c`}`z0Gt`n~CI7=l{aDXJZUr*iWX3K+!IoM09m768>?-HwS2*QeR&k#eHeAlw?;9 zEArTN7{&LxB9C92ijR25ql(L>d(8JoQeyV);`Tc6^ZU`WVO5OB)tOD& zf>V1B7MkUR_uTx9Vv}lJ@+3LWe~qls5=Yvvl|C6xiX)u+{*4WNdC5g&T~6*p*IV91 z#A*BIp6L;M@g(*g=5(uo7uj|9Zqs`_yg!KspZc-_J#72FS7yvUeFY*i&2>5w=x0C| zy-p(GzmzeipQ(H7uls$CW9)8%7SQ>Q`0>`dbg3Dqx-MfZj_5(Cukaccik&6FrXE*R zW3I*h^dv+tRkE5im5*v(qQGcmuA+ojL`?%clQh(gwyACCNrVxZ6k&VIt6U+aU?10d z&^0!&uzf2C( zr)*nec{2A*;EgGx9K|c&%+}JBkTXd40Maus><8cPUEezPvG<>A z?d3llAj~}T#C@OF8P}zdiV&jhS26izpoub& zNNGtbeeS5yX8sL|g|G6QKQG-k`()x(zA&xXe38~3=|->{x8S6o84wx3l;2VDBroX* zUPBfvnFbxF-W617cJy8=B-gu8e{g;b+Hv<_^4kq;X+WhK30`zd-MvS#vp(uqXI0=- zjt{&aH5nZ6MvR~u`Lh*HBC4W-I|2xRu@IAF=Fj&a8n1nxzO2r5WQQMk(USCi;RDyd zh*Ww-?YQ$cWh7N7rY$e+{kQ^jRX(cP$s2RuJcQH~ICx_k==ftV=xGs9H0Deg8Er>> zQiemxb~ahOn2xX%#C0k;HGARLJ9Q#|tyY> z(>x+df>ebDd*tWb-2TJpTmPnI*pdICHLb&<^$({m%ZT6A)VG;J8E+{`0l;(-F4-Nq zuYwfhNb#N4(?TDVp<>f$xIiX#5{50e}8ish(t-@xrcWeNWt{aiJ-Mr}2Fpa2W71 zSCEnlQGY(lj8}nM*~pA;#hvC_r7TDj4j@54$SSF&Q2u2zr%Ez2b-%l>aXM*#^7Gbf zds9Y_n&yyVMVx4K2;c52380XDy{Oy}DvXxOw}X}~vsAw!VB0srsS?~?$`!QGoB3aiBKo66rt*Ilq}NLCpU0X|v{Jn8 z%i+^OHw<4`EJ=U#F#}+B@wC?Q*p=TjZ~K;%Dm{!kk>ww^TIN53gD#=#2j@>cc93|s zgFJZRJ<7|UNRnIsHzhFsI_?AM=l49gRJAVOnn))fm@}$ofXL{#i;9X$_{KM?uA@V> z1Nb~@?|J|Q%;DO`22Dd0lGs`M-iQ`d|TXd=MY|KThvO z{u!sVqzr?7<_EsNI*~M=qQ9MFsqrl0i5f*M{=R?)?m5Z~XUr z+agIv0e4pNJ)~V!7c3FPrq<7t7Lr$r{ZW_)DgL>|SBP3|vU%fmU3(V{!Hchk9g}8} zBm1uL3Pu-mHip+kWOt~w4L2*??Vv++atXw){1+^CzmsJXQ}f2!CC32%|E;aBkW0go z4kCkR;MBg@FpC$%Q95J|k$N$#c24S)<);*oMMDxH*{Wmk)qwsqsbT0ZU6`K=oLF#V zPfyGI=L}IXCWp?vg{`FrQTzkmumn1B%p#T6WL9igNfo>Ko9jdCc7<%k@9Ct_t2&>h zIZ+agk_=9W;Na9vF}K~R=s7`mzbzf~qbl3w_Nh6AyD3cV4RwUl1^l%eWc$4?(KaN8 zSi@p;?fIc*pG&0elA-GUPH&N)|Cwf_i8KY@PBq1*aH;Z5+M*qne8UC>Ho~v<3_8l= zaR&|UEH9Kt4MioP&1cf^&_N5mry*e@qxsB!;PzrRm>5R2CJ!dayxweyf9$ZiKNO+R z)3297IeM-y?<8Zf+D(>al(gSY2$abg(x|D)D)Munn?33W4F#K6202o*Ew5VLh&(>g zdZq@mUOIyrDgFFCVS_(XN+`K|6n=-ORSP+uUWcxLBrqv+f;OIq#|l>?BH^^v6M`pJ zur4ii3|AIuRPAA0+-7%ODzf@%4I#ZvvaEUf^RAUIJ2 zR(HM`(;6lVuzmLv&JR{7y1MBPGH%szN&{Sxq;=_fh;dY0N(tp$Spr*cwLr$Sx}`@SZ&X61O9igwW&zflqymv&R}EN^e#pxsNQx%`3&jCEQZ z{aioqsakP%(Yza`QS|69(&v}zA(i_#GMt??%fGl-{gZdlnuce zAuSbM$=vbLRmlVcj|z?!E)HIHJiR8}VA1*V3@$>JPKqMk?96ErIP9~$F5J>=nrg0W z$U)tQysOi1-$%U7Ii0F9gxyezv&Ny{s zezy;+7um!WqTfXnHI})xqP`$|QZ?DGP!G`|Im6!x+OTXz>6#oV{p#iy=0r=D1*05s zb{4{T!)tZPZVe04OHBy(C~xTwBa6!?v?sc?|MD`N-I}^^P+E@^NfTTalz^>l`3W#t z#s|wSppTic)4Gi{*iGPg(1Hp&=tosp>gw&sxa}7oJpuO^CqI^pDGhfca3cvtZ*%fb2c$w)8ctU# zTW@%o_b$|>2=Dl==BNq~)9=9`8{DF-dk6ysAxRCjMO64!?}#Ul+<9R0Jqcy#lZ#a5 z;$O3K)`_uXRL!0)onq-EGNW^$ll(g=4IExT&zY=ubM*^2^5GT#0hPO?Q5}iRizyjU z+jAa?jXT>d>`sTaDC~4HBAp2o5^{{uI_x0Fv#13P=Q8F>`(mTEZ$!52+d9vF?2y?v zc@Q$f$Taf&7EvPhZROi8?%|M4+Zfe^Jjy84%lNxKEe+cr{jAZ+C)1DVm9J7#AAqPyFDtxMf1$Gd}L5xG|5D0{({(bGqCVFRygPLGRANO6{ z9@?40nYXkw1zOdoCBbK-7-d7`bQK1%v7{7m{Rb=~v&ZYLn_uJVGqc{r&&Gfb-Jn%8 zi$PY!zYj@7QBqr&RP=F#4q>Y89&6 z&IR)B+F@K0kPFB}+30$4pq7~uD`=zO8iQZSH6qiu?^w{;tTn>*;ZA#?tcbC@LYg>H z)sT`cXo7>I>w2~32E?6?&d<4_DMx5HTF5CiwcGU`(OU*3V=u`$R#K;U-L!1?1J~1> z{JzD6Ym1x%OZ#r22Xr&|v9e)r!t@jagXCs*yq}SV+0M?oS7X^AeVkMG_mz4VLi6#( z$dO-nVU0ngut0UF9IQs}_lM_)vu0Gu6cpJ}^~V<|;dNY}<)6u^=D|_N=0Ock>>{*z zoDC#_2JI8$A+>&E4+dx{?6qEml$;=?XamE3-YSU0*boxV7_ z#kEP;$Dr63eVp-Pw`SK9w7rumDu(sU{=|f#TlL=`h;K%9wfhZB!~>t9dQRf>N8vRR zeRmyAg8dM}NM>cLQpV(wlX*VUX0q5NEq|J62|mxDPZWrfsy(_mU-BFJI3ACVi)-;h zSWZNASB%QWNy%rlNJ{(Ar4i<5yd<|ChNvC;n}yd#JwdLTD_kKmO&<9NHUEw!&o-xt zeK%&m^|5&K3ht;)5<#x9=^UOM82-v{?{J)Q5*>&HFwr$c+sXhxq9`!g8#POQcALoh z(T}BEVJSUf6CduDG4V0aN~GuUG5yp#_Y&15l#HS#p?)Ib9(D^{=zqTDZ%<`Q7N1*? zLulOz5`5ikqVe_g=L&It7bRJIC1`kV@@xht>OZTKaCC!Xu3_guzJFvn`Fns$x-Yb8 z>cv81bG=T`#!wd7wHo{jUx5d)Yt?Qi=9;38?R9OC$i#$43GW&!d9YFa!rMZm z$eNh&_vKku9p&PFWy6Ezmt$La#nqR|;;Y3{S*{VHL_~S)CN>Qn($|{t<56WGMAyqD zxUjaizUzojrLXOi3DcEzj<~LnNN_1@f*G;PLYRU1Hun*WtjXxG`+!8qUdXYnp;lG% zEd-HiUS`Us)q^VYQtZp9K3pJdbi%5m(5F<^{(kk@>PNTYm^adlB8v^lU4IrDTS^Ci z&E;(r6;H#qq^i0OJk-+qevSxD`yc9J#i*%|-{Ms1-9$E22gaBEIjvoVbx7-Y_tO9I z?`aba8B%%t6S83dy%UpMl<}|+rY%h{8WL;qFI?H?=gXSnm0l)Hk&BJ!Aj6JY+`cW0 zYdmA$Z^_ltym&fRRuj|{P_#WH*VPpDjJ{>RHz0YDK8(XZ+S;x;F1wg}8b28yQKEIO z7$}f&Yt+&6>04>@1Vo~N#{O(Xc?AjM+(8e3DUzYTl*)q!Qh$knkQ0sXXY%FYWK^Gw zP5_{c;3^HjAyZ@Zlo<24keWt_l`PnkYHLw6Dj&?p+U&;1RK%ZsPr7@Snb zxLv%F2?79;QyJ4c0K!YK$Hd1yVg^-=)&DTsn2S5dnQF-gnpg*Q&YI1djdh06&%chJ z%>Z#80(+I;5O#E4H0|^%GrgZsBd#zGfrPG-TT1Az!T#bb+Y3VF&sUtbnP8Ga{ z1Yt@oBo#03nh>d)e>Ok}j7GJ%Dx5KDA3Q?d zr)bzX%erk)$+sE;&6WNPSX)O*(2)3y1Ue4x!jwx$O22bb4_%FnFkXuWfu6~eAW)Ke z`#$pfEwr!;c!U73Sz2Ef7t18pox?7O>$qBLL+Q$WxBELQi!R&yk6gkTNYpktD5JE! z^Ndj28yN=AB+&&uXyXSWZ8;=F*0GnC8v3)Fk=^9f)SjO9E{B^N8w;26MnW57x+qZd z%x1GTaM(59vN51jPM}}w6UB;)Ue+t%gD5`dX9_hE6+bQRrasd3aW;KDapiI$Mhw$l zQGyy78I_flWebrp$2|iQxF7l!f2h)3{^8OM+O-#P`WXYWe(!)rED#-2nO>9)e@&l9 zrqf4ilPgLlpL$qdCO#g#tRJ3O7SW=u@Lt43rYrM+A!*!VmZv9C-cbBd=VH}`_0^Gy zf50uT%OXME!elXw+jJE@4gQ}23{x9Ddo}nWx)>&au2%lLH0fIDIX*ImM4sS=z*fo(#sq97@4reJEQ>h}sFCE`mB@Iw;QhPI<)X1Vw}`Ed1= zyJ)v!C=pLH(EIt?CF`XMd0vqx8&*-#X+7yRVp*{Cu#=Mx{JcJkg zut@Op)^PW7So@7hE?+465)sLGu%knORjt9UsVD|;k9OslW`-oG}u^4vMb(;q6Wpp7}7&kzu;c7(~2qLxmgKhr@9FzI~AbC0zWVNKc%|Cw})LTodW8+yfxbip^f zzVV=pc?hMh@wy<@ZN|?*!H6W(LO!=G`ls zr%x*&3`q9nLH3b<;s=@=0a}A7kxVjw%98e`BW^hGk%7aPQkCs5jYBB1M^NV%N&yk& zeSIbC3j#K@(_bhq?=89#)o%G=3>7QsEp6HQe?Au6J@Ptq3v2wd`$Az=*EIQ=l1g2* z@J4<6=pUFvm`(_w$K*;=NtsJHFI3LbbD@LSj$lFgj_jC6^lTu-c$OyHK?2EeXt3Nd zm|~p%(`F523fXHJ#&vAY2IrLHxft=8e5Ah8@%8B^Vnr8q^>~ChJ~BRNkc?Em{^r0CV?cRV3V#``v`NphUdn4jd-uFz>mW#}v}Yx8Lo%1ttN4wS_)FtP-gT^>8Nvhyt=bxAs4)CB~$r7a^22v#GhN zk0wRf7icfO&l1LVMe3{IRm9$NV9_(35S6dwP{Dgx?72_v*&zvJu4s*0MjAf4*SGPR z#GgS@pQ*yUg0Owc0km7ECFQJ&_;Y@zqM4Ll!eEJA&niw&<3i|iA$uv2wPP<`KOTjx zrUsZ{X=!k|NXaX6%M{KTp1t2)e$)88tYjinYuL^SOknaJcc z7)X0Hf~MEz={GA@zsxZjlSW}789#O2ZfW|mifc0K?)GdR2LFV2##6~|uVHsXIaCHb z*WS17AN{!A(0@PDD7EOq-M&cZwRBcXdPQEd=^Xc+xszPrfu=%^NyR1?S@i>s#nI{S zgNW&SRuKm`?aHW?0=~ac*~~b0P03Lf*xB3#tJq&nC#@HqUP5s^;rsw50-hmHlL|`0 z!abykrMrjpiI1bg#)xWhq>_inTI#P`$33g7{kQZ{9dGWuuA1ZYBg|l`CnCoh-GSL3 z$8kc~V!0XZdR|EZ&6LA~eJ}y7#In!M4J&!!8uHlnK45VuUGm)cV(@*{&kQjiP+$f2L^UJ* zn~}OD#N(6Ps2E-J1Bu~hS)srD9K(;m;3dOj+LlSn(ozTxa`q=hT3S;WtkF`cd|oYg zOq(lJDQe=-tDvg_B;QR%sl(vFa)!L6kniEDa)P7)ve95BskR|>q4X;GdBJ;tJ^s)eGew?ctCI-GQbujE;!e_h`d zBRa>dCT?fbLiy6d{-TTp>vu#tSAHyM-Z4qnIgp=1geE9*j2Hd7>1cm6`kB;?*=69? zke+XcLx@~We8INVg^b&}>QUj3#TK>NLYTq&dTU(;=wL<>SP+4QI1gyzb3GKPSpjsJ`OlKH#PVp0=9PEEr<1?&_O zg{Cy=A&0`^5f)nlQUJujU)6e;d5^r-J{%t+-FN9{zWcy3S-ZyZJ)aIKEKs8%bE|?y ze%%D+T;9!=LQUD~`VtUU8fh=p+~5C#pQ?=iT|&wK-U91?wr~RAU?6$@7kTG8b!mOI zfYN*9>eci`=RNUQcA;2$qD{^Pq|8Y3|6d<*&$v_(s1~{4Ds(4eUq}EzjgYuhFVJh@m+HmQ zb z-KpR7Gj2SNO!Fnnk{_5#je8^n{{1PB%{zDVWL>g_jnTdgJAX(W;u2)E6QhAJVxsV0 zI~ckT$J1-R_cSj? zb*p~1DY-D4WC_2)ma46IGMGjp9TJSJ{$2Lx=&MX|c;sB3sLR&NWxvfx{cx$OwdPs> z+OG!9X z%0MnHIlyzU=IwN>6iHPdi9et~Y1ptsTL^wGPNoTrc{v?%;`-`)4HoQAl(nyMxvl1* z>w2DnqGLTKIGJcO3JaVznF)|Jab4q47n?z>tj23=0P10Up$mxcPVdcTf~IKTGvI;( zJw=3`jM)loZ-bHpXYORV>y0qG>HAYng>;r8OH!k6UroG!X-WB*t9U(`QVSqvmk_xj z#GHX@yftvwP?MaUZHv;ZK{?gO_5zK(Oq_>PUaKjbn=vuKEHCYi=o`mhIOseVa8v3mj#l08m>00|XR+raYCXSa=zun){T@bt)>mdqVe} zPp&flEx>hX^rG$pNQdTj-Ln&^nST^DfciX%$u@BQ1v$W_+cuv&I$iQFEEY%hAZW8` zl;nhDf;E~envn=-8>i>;dNsHbmQI=^Rk;UkR*7mDbCJQ2N2!<$eW&dF7t?t3eq37T zE{O(Q07!{E8X^L!N$YyRit>=s^=dlG=1$nf1C|9^PlbG0^MtUOkRHdOSt=2p^$29K z(KK=hHtZXvoppo$tmPUHV54%kf*>uiBBP3tzwFh|_PmgNc{aQ{xGs=@FHt)C`G z0NN}y>|r>vkAY0Yqq?koygvmJVep1o!zO)o8zgyWt% zOhKTlBsO4{D$Ds|D}-*nSm!N%4iJzw3ctpk&W&8JGan1BswbA=+9Ux6Tqcm_|EYRX zC^Gpc;|{8nSspmcw@#8bX9QVA$iK8E7Rax>xug^=FY_dThw!#WzFvB|juq1NlCA=D zPjsEo#r#2SrabKbL^EAe{rqgNYauJKi9+iJ%mDmX*o=!@MJg|7&;izlE^ni4P+5!= z=3fd_kQ8S@ws}s|C<|!da637+M?x;uNsI0wnzFw3>O|;&=7Ffs62Y?np}@yVxP>K$ z*;x54<9=rj0 zA~h@juJ``r%3Utcny1+kx@y4=SHnmoMV-lR{99q4czXB}SE-q2v|dk?m@Wy+Wxu3D zh!Xw&TjE;(iNN{y`~A-*a@sx8tOM)1@JW$ZKA8S{&m9Z>1r?$bvYN?yocBpSeE}e7 z(inv8gk$wa8NNXGP>B`Cl}5i6>}DR*F0z>D5RC#!2cV0?A_q9s&u4&9QufkW(!-lE z2AueqMYrS%NAjhH>e4T2r#v1bqfolL8JF;BxAumevX%C^Gzk|L{pH6U%}1^MKwavE zndoyktbur+DNI~;I-%_ndUh0~M9p#%ZfoQKa2L0h+SmHjHHi3cTU@3Rt-ss~dQ}gj zz1x5eXki#By&u$W#&0K6N!xpAms^N`OLX&Nd=Kji#_@RxMO5|cK$ilR5M+w{iNRgvEx=Yvg+wz|U}Z5iB~J*96_4G+l!fP@JQpnhY95r==^Y)D(bP)bx(~ z%V`ecCt$X_QoH==q2b>0XQDP?;udF1jAFUw(71SvY_v&kVY|dei_y4UFkFHXZ&!*6&RN@ ze7-k*G!zwW=60Z0qz$bmy=YA zs;oKFXbHdyI4?Fk?mb;etAv~W(Uy(?VZZ2?YO_0nrl)`Oa6bU7nfEX(LVnqSg@ys( z8=Nr-litcf7i`0~oEJ*-+8hCGGogjhwrxOB+Wb)vxDNbZChA5}@zn##Pq@|SzLc)m z8W@|(j$&Wuqcr0Yk-8uj<sZCZ0=k=x7|GfG@fkR zJ9#TynDfC0>d!#7&$H z^8=5k$X$af;G~-t4VYND-L1OvHpifJ!R-k(e=~2}lH3Dm_*7E-^1Hq@rsp!Wbe?U| zje~QdRkXcw(L_M>uxH?2g zQxud?T~<;B}C^jiIEf#Cir*(~bkw+tBo|JTOAtuzMbTHGmv@{T)PI^WNPo-q8Z4=0W< zR#rxeZO{BELHgD6Slp8b8q@e_1BV>5kxr9Zvo4q7?m6=5+536R{mf(6nI)3zJZMtp zd_W-xLY*}=o~M|@x5FV(zy8r!A5BpgL~|$Ta)|YjxJmmgW+)`i0@Kue+%dqy?YwD| zM&Fz}4Y=B%J-b0M!E2vK+^1(U_*Yf2bxhyId(S) zk0~!crUAG)E}g2&3ThF78D+N9BNeo6Pj}M6J`%K6zuL}x$nYb7rh2>({Z7a^yMueY z5B2&@X|SzwO81?Z#qg0a$a9O4SHGuU{dG;H`;aOMuVp86$QCTpty6j418ztSFdOZR zjs3yXeqJsQ0H0w0FEw8q&|J8?%#JO`ar#nV>bd8XClMYzZF?xDd1z_sO$Qes)UbMuxJdH+k_vvhjUr% z-ULJ++bz#4^=G}kwTkKnMEv*6oJC(uz&3tkS57^Psf^Z>0pMLMms-YW!dIi{Z|hJ+ za$Z{Du--enst`F*I8zK)p6SBiKa-hhP$4fAj#5puq90 zxD1Tgv>uR4U3cdHh@9%u*j9kr_2B+7@?Mx63H$k!Lo5*GQ3K(X;nl(!12rxG#%}JS?=q~^dSIQ7FaJm;OE5@w$U3as zO&Q=E&|)^Yv!Vx8)}Nggr#n2~WYbK;`HZsqkOEyHKfCic*!+#O=B8b=HO-t@lSq(F zQq0mhEh!3No-lO)chNgsOd>-Sdc0hlAg^HPA^0(&tU~p*K%q!V1zEdwh}<{g?FyzA z@YdNRvYyv|xHqVxWxS>DuRNAgv5cb%1&ac9y6ny=#n;Tui>={Xy4*Ju*fzz6ihfX* z_TL{fiKVLixr#GsIBsz(S}iH~VIKcT2w_4^&R2Y)(ENWWS7jJ?-+G40Y%b?U7fHDv zooboEwXLP1a#W<#tP7RyG}2)9++tr&Xp=^5Cs}l>-WPZNXK_=U z3A8Pn;!{6=g`!n3kVoVYH+$3w(wS@QI0!dsQO0;K!vw7i#LmRHd2Y7tRIhFqXmA@j z8d8xT?THBv?bJZ9Jr&E0bLBr8+n{qA`F=lBo1cp7OXKvnSGEzV=Gs2OES~8XX@PjK zyVS4`UyFyYq5m|P&3obSdq@A)4I9{)c*`8Ya&GVEV*U?))CJF0OcybQN->kq>fntm zX&*OKcdyDPz>s#bTWTi3Vls6REqGkJxBfb$wd9n{MCb0bbrbfO1*2~rFen^#o{mJf^ce8srI9ul$# z0&QP3Ode)hZ~v<>XJjs|-8>yoZ8SwH&P>s#T$b#u7?}#+NO6rhuZlWX3-jP$#?FH@ zz!%w#O23iynx=RQ>sbtUx9$M66ZM5qE4;9jvDzUjG?fYH$+X9kcsm?s^5X6F17AMq z(+MVKW^RrtUBkVzGKxrMc-F_k+S}7so#dxravVweXv5xAy!ITi+D5vlfhYd(I0a68 z3<_aobz+K)*F3{chRVihfk3{5lYl1q5IBVGCnwZaBIZf1E!QQUl&l(5FQh%HZ?P%q zs_o0tfLBVUOx0Qf-b=Gfb^KAytV`vZ?LKu{d6G9#|IJT5g-2%KcDvyc#Sogcc-Ch< zBFjA>&^<9oN*$Kt!2#CQ0#yJQ9^Lk1?b(s?lf+xL*iJ!q1Wvp>J`5|RG=*w1_u zDQW8@n5Up})Ai_prlPMRAm@pZjsWRL6fO;N`6n_M$D;qRlWE`En`oHp(IZ=%%+eDG zx!&`t2+!vlSan<8*eRoku)7C)qD;_KdnNp(SWErFz}xU-gK5~TNbebIihmpk_}ox> zFooM&uZ4GM5G8p<-)hXMbsui2)j)hpMTU-=ePP2(^%GK|BSqG`9Xsp|90FBe+W|cKsGgdfjE)C8R6y5fZL%hs?@nf3FMzDDdNY0;n9MzPD;O zHX(%YYcFpx$Cuq!``pQaE5f!>unR2ae7m@ilA?5TjRhh$-#r1(78(s$B1y;B{I$ow z>v=Heonb_$3(Fxq=^aGWD-`b-B)xF^gD&W|9Zt7hYMxK6kTWF_WGk-FS^KDmEI(# z+OKx_JF$GR$)vTQG2!GAyrPZ zFmwVfk*|;OIX`wg?B3i`9oMoASEbtM5}^ioOmXXx3D-)a?BOt}JSW>pOK+7t-z-J? z*>q3)RPH?#)%G@xg~~U22cLSi7z3@8C$fu-@52FovT98(JUG9PWiK!zUjpGjh^B8U z^mr2-?CQ5$LpXXvdivdE?2l3rH(2|T0Q+5#M0f8KZg-Is{soPVy)|5bTyy_Jz}n@mtU!=BoB_|) zM-e|Y*iO=l%BEq&8?bhl2-P9M2Unj#@JE5?1As9l3spKi1y?YXr%Hr8XubO;zqL?E z7_#nT=U>&lKie9Ayct=2x;hYfE9&y#*YS$7L#J8qV_ zNcm0A3mSYj-`aK@B$Vd0oU46HvC&8^QIm;7QBD3lV2%V#ZJW3dttC z?g7x~gi%M$+B&aE>#BsB8?~Ji;NG8*ocM`&>C~kFhol4Rh~7J~>X>)M5-z6Rjb$U| zVJX7S&?rUil}Ne#y{@yk?IR-u>*mxyrlQ}hoO@+Tb&JK`X&y?|oRn)b6`z-CEeqza zZ2Z~LffpoT=(Sy1n=NWC0+?JRJvU#wuYpVSjwcTufMPQ}z|+nkmUo@_p*&saOb5(DO|%99`3D^d@NOR|c@_{uB8 zk4z-u@hWct(-vV=)+hp};o^2`0}&G;TDcdS?2^`0n0PPaAEUHDblUu{5%9UiM{m_iNXQ ze%lM1_gnfW==?=s+o9x9C$5Xlv(eKXQ4B2jRWxsWSlukOn^#B~Ba3i_pTiBEjAGLU zMb}e{>*`&lLlahzAzvZ;Gv0V2YtWCSu{$BclvJHtr3FQkT9=N0wB799oEvY2jI=K@=)3?=9T0E%*ga>|}F?D4f*6YRv{|pZy zku321lUo!WUlZ2yeQl+Sx>U^k5`^ig!!AJ>yUV~_y_ka2x8z(D1y=n6u{Cj{Sb^q@ zPmE*b{^I>?u9d8qsovC&w43hn2FDjVa${-jT)73`rkvh_{U)&{4Uer3ZDasPSZ;F0 zpu%0Bn8HyG)uG~Yo%$`+?c?ItSy;oAi}zl$v+z0ms5a>ng6 zp0J~8gxIrHK}a~8R*_tKsF>J;lz)rPidX4hMlm)klIoI%*jh{f`j@op ze;R%?8)y-o6Wl=yE8SnBq>zr+Wn&K#D!z2Olbdj2boE3Ykh1I-?}?}7@(pW!ZIBq{ zSD_=i)KuAA!mE|8i?%DtS#b2M^=4WDO^6F!!-45FwQR$DA@Hi_n{^V@fPIU8p|I8= z?y~H7Pw`aAoXooLHAM581ZYrK&#qCa>hFInmkk0u!+*ixo&UYT)W5&~+i2>qE6&BU z2+*s5Ad+ZjS69Te^Lb~Q`@kO$@xPKF-~T5GGQX_{`s4ur9x`0Ao&VKem0*9ZT1kKU zy#5k_V#^cPc=!$d|I(%(hB{z}Yv6x-0Sq+e0b>-IbO#Vx6z!IH?wDd>an`yAn3xqrr;kM;U z#-uqK)DFZxU2sXR5oO{O{UN;Z06H2awEaa(fd6Wuv#U!Jqt}JcPeNZP0~Cgrp=kE- zL>-3}n%trTX1fJ*qM=j%)%ahxOpqoNG?~hR%a3BNw(vpRLIImbpvJ+uuZrZK$2d37 zPEy#hp4#VbZhw!oJ#bkjh#39q&Q=eWZm4ngD9VJQ$p;--et4&WM53adU@eRMWIy^R z{lr-PgoE^!>o-nzg#FsdPh>r-ms7Hn#@h=nXgH8AFZDEldicq@1%1jV6u6F#ykpw= zP~o5>({AE@Ui542B2O67uYk+?DJ#nn`4Hw)Q@NG7*2d6uX)*J!>1pN^G+YAco&+gw zU#l%&K+!3iy;lWT+6pL0NlObIvL#=4u!9_fQhdCc^m8t0oH=W{QI09=KB39Cj-y;H z2U^#80s-fUF%<4Ns%?W5wbP0qxQon}6mg-Qr%mj~iv!b^p=FNK?$1G1;dXBvPGnh% z{40ja3un%X8?ElB-|_ohbH4Dd19nH7^KJ$=s0lI?c_)p&JI{|Bnl$adu~*+KiW!UnIez}qnj?gLh4`EuxclEHtT2cfwb?b!32=h>7#-*4Y~t z!jg%*tb_V%heWvpM|t^MAdsV$_UaA&#TLE4mas}jw<)O5vIJD@U|>WmAowU?n&&%g z&td0{DxDKI>-S~G&!In~CoxivMK4yc#&mSk@65nzNY8qKO?D8doRRe~-8aR#kDW$i zKfXv>x+CMDpwkuk<2mdoJoKXbviE}L9R9+;3iVjA{)ug*8HIx&r*e(?m*w9t*-;c! zG}TF1mxrP&Nl7MwGoMDMkAAuRI3ZiHr9Z|UQ|A|A#LDr{E%$*d0+ zQ@5|Aa0)_y8;iTJCE0`^kXq7XJ!a%H$_?7N#*rq%p>#MlCyA-csIv&hL>5zVP524!OI`KXkXLWC*fn zpdkI^^Npk$*P80;e=ZuGQ%+Jyp4>{;6_%9`w9JsI7Q&D7L$Oa@Y&RI!DW5@~h=Q^d zCu%s128*=UQL`nTJ0?4gK7?=-TZt@4#(UL!8Klf;?JI|jN_T8Z zFoWE3r3z`)OB(uSU?u=R&janlx|2?&T1<0*0tSoA(zde{l?9k-w`JV0cj3kz=b=qT zHhNSyQzdnpJ25T2mfvrb1mD$%lM!(Nb_&d3$i>3#BDblbmc}hj@BMV#3SDWCF~Zij zZdzB|1Tbd$)4TIb^?$E zPgY=)?u`>eSs83ZNc^W54bfBgpG$hmY}Bbt2dG|gb-GnBmf%V)WqickwCL#y86l%104sX-&9nF zJGf?Z9F?9)by8ed6MEbc@+zuoW`Z>B-h$}l<}zI?UvgA~1)pU$xpbHVr%@V%^NH!PlzL=aEWpeXELXWF4@YGF z(p-u@SorGqy$!??`9*}3D2&?7xe<-X@XxOl7J{YUfryMZ;-$`$8!GKjfn!k^DkDd? zNnj)z0@IWl5$5}UvhoN<&R|!~6J~kzSm{`p?ffihS%?0_3)zUs;&Y|K>v7Lv&YmBGi4c!K|Hx6WQ z&2715tR~@c8Y-&|#CvtC=+Ld@DGL0TYxck#jqc4};UuNJRPrg6{L$#&h?&RMTJjcu zb|a)Ps1VJ3N0opDINmHxgD=HpNCcId^Zwg)AoLF=dh!eFlb&jiEInEA~u{&QKXUZ?E znW&R)a?OSO4#XFAp3J<~DVy5Ar+D-@?)VqB{tIddTg{=U4nI4MF8T+cWqKTiDHNhc zsU6&0p=_=pWiP&GxtSK)r{%tIgPBFy?J7(J9J08@v*2qy#Aal!ZYnYBrVg^hNQjuZ ze=MD7u;{X-Ply^9A-pnskm}ujQ|k3y1!>HnEWEp2TOAd<`=sLBJDCAb#tWObJ3}~> zYp6<1ToL=0K}wNv!9HBU*QR{=^zotu8)=jQc>?zYg;=rT-1%HQr_kcIS06lg+P@eG zkxl~xOx19*=^VPvJlcDcy{yAs(YIZf_Q6)eGX94?ZsJFuql# zb_YQHQ!-tf@{8~q$(HZ0!el6YO^GZU)^JyIhLe_hYnBp)j*RnP)i6)7C)lStX(rpmk`@Xd_N76E(@CEYF`>a<7^&RYSDQyH{3E;kEWS4zC7 z=d*6Ec!iYVh91qy2eW9Yd&b}7D^wHriE8hEK7R{RVr##gLx~9MI~beCSh9%=Ex2Nd z9%xTO8SCrJ?_NI-a;_bwybAmZd8pq#2GEr-k{^s+rh~m3{sT{}F2?%mD47Ac|KV0J zPY7>fmik;#{dC-A0l*XR{lBSXDf^F;vf8Wpuh}EKc2(2Q3?MX$Wz_uEhF^M>6oB&3 zhXyc|-M%bXI)=x`1$`LM|Bt4JqFt-lKfo8k96w!x>-z0~{bM|&Z&JZVu%7_JFotH1 z5hc-GyA2Ed%i8S+dkwKOQB|44yAI)c+|6G;HnMHwX!uF!TMz#l`FMId`vv=l@6Hs3 zB)L;;T>Xs$ya+i0*TLcQ_BuczrgYP!p9k4^=J?6WMLGPm+~iv8(yPQqaTWT>`a*NmIe#}WvUw~F`*xcRY2bu$rCf9bZ(3d27r`*NwEv0%o+pi(OQ{ z!=a5imCfqFXfX5wTFjmy@&0T|y`q`>S-Ov##eD1(HT%BB5Y~Tt;;@=ZbqK%qjeF|s zlN!cl9D-zvow;BVmS<|h_tA4Zo^IArv-9tq8zOgh5!(o_8LzTH8k`(O@qir!Fp1lXm-RPb)twS4v5Nwo$Qd$X!5QzED&z1}38o+!H z>%txZ(+$oYAcTDp7Y1odYzd}awYjkcztbl~BM9O<_N#(g+4apIGqMttHpPOVVSQZv zJG7!1wNE8CdRU6*_I)^<7GESj0S??&q)>A>~=17w_DI1OnOe!Mv@*E^zP z)(K$Nq&$;^6KVzcfGD8z&zS1J4i92LBDP2O1c`d3%D_8~ml0h~{poneS(x*Y&q`~1 zw@pGmhKO1C$CAhXX#_mDcy@)Rd{HSul@X{sROlMP8_Lhn+EDd-7|-hCr4aYIp2ZvJ zpgGSPW$8gzc>m*7eSqST-}*tmd)I670ri=H^WyKINEZS|%J&x`e{eBq`u+~sjvREv3~&HF#A*fD5Gq>iLQzXwVmF&dn`AQc1%mzHGy@Y4Z;Bn+^6B0J?FB+xJ5tG z@l}DSQ46f9$zzkzpY1n3e7_m9$jPS8;QaeM#`-*$K#W|J@~cO?Ok|^2_!mLM250zQ za8P70u zN~V$2O>97NXmV_F&Y7m6n=l98d%wB&pTBBqYUaB&T}2%lh2DFgefC=GS>HEmRRi zLIKrftz?SQ!z%vqJ<-#|It_7QuEjq=k`|R{sc!2kMv27UAU=?|uYHF#>Z=6FXb>L2 z#M|nn+oDnb@FtV#Ip31s?S8tHy1mHn7-Z)6ZsTzC^U-9qA9@NSndf$CBFA%mTP0>7rY!!W4MM_9pq%^=mh>18S$6T z4|6UDn3ZZ0sv$cg`c{*ZJj}rpnYU5{NsO0C! zUqyIk88cfx1$`Jk!*2g7FLJHJ#%D4HC9}{oikgeLF~*|h7TYsrb?mO3ZnAY~#@LSM zaMcb6mQM_(MwTlbRJWUTi8-#`+1in@5p57~pmWf!Td1bd)+1H^J;us!Qd_)ImtH9M0D z$mD;g6hTcv1*6lx86{D>%ouSc(!wr6NfMug8&yJzXN&l=2v>2TfS1 zc>|)voAZ^qna0-EY&cyRc`67$g#$`7qAt!Z7iBwYTf0Pz0(r|am`IG*CMv`KHy#sQV5s_-y%zRfkI3m$=L(ye%fQuuUC+G zinvr3O}DNO*p)Su7kGK}{Z^5rn~S@b)J>ogZ=|^{S1Fz3P@3N&v$11pV`KY#KLk5J z+u*mQ1{}kq5h_ z%NsPQcY_6R|K7BllU1oApmdtss52=w6?ZVAo|%8A2jOZTsbi8ddwAZRky%o7>4^f> zX$zW;1ON=vFur>(#%bleWI0U%Ms))8$k#;MRbK?H5KMiRD#RK(y7s47Iq zxiR&f0;O{|rA6Ieqo$DM%)=gFQL3a>1U0W=ARaSA3=TEUIE<>)?KT8&^Ok(uk@fIm ztsxgo$1vY&Gs16KW~G~18i+%ka!j+@r`~8m1m9hDL6)*^OdGkPuLa1z)5Wl;vLs;(^|-9NEk`}xR%>&n{16qk$Il??fjM)pK^eKRd7E#<|tb!X0lq zbIuCNpIJ}$eul_SB@~lr8&+7oi>Zz`9dn7SrqQNiU^<;&ux4?0c``O`lE&W2HW}-Z zB@^y(9XH-oA8suzha?uq>d7c58Vc|9Cubp{Ch>Zw(l->?1G~C5ra$joRjwWD2dDAh zj~UKQFP!wNVgopbOqtLGY3*|HZwEdEw>{O7DE?KC7>_Lsq&W6V5+Il=4PJIJer@Nk zYbIlmASvA$_@S*-$9_V4Xi=aeddCAN?)C>KC(H!E%otycXbYtz&Wz2%0~Ym$Er-Zb z?+U=-vXhz3xZ7iep90rESaouKZD;TqVEps*&KQ;O$o{z4udeAu`cFJ*OSQIYhi&38 z-30n7IIhl*g(-?m^_{Bo;5lXVQJ2HUhpSf-t2mgwE($}Ego5o$yVJZ=zr46 zgTaM|<%O;LHj@#}c@meaWByo#$X@y`pq&6RXG|U|ew+E2xZGVHl@X*Zw5#X&%p9aS#^W4uFJJRXhJ&3QL{b+hlv&Nutkm% zIQB9LLj>r}UF)f5RIqV}jTyYZ$I;SVs;P6~3Z2~MGgN0A-Xeag_TKe~bH1X5BV#dt zlQ(9Un_^Ljy5$AxBitAj_qX1ivvH-5M2`+Pw292uM1O>y9-l(SVS5Fv+vH;wnBY#=upCxGi}nebTdS&+z$|k zy+fhT;HQ4F=EOr^nPTbzuK!u;L3|tBfn)vaHPpqiFkcZd& z=!RNTLx8OddFk%(_#1(?uWfLRFO7NtjRp|IQ{v12Asc&g*bA)O=1g!IB4>E4oUiXU zn9|*fPH)38u(z*J&Dh`e>peqd98&V@F=ifwnmH<1uo-`6ng|+2=P3c$#3=MaGTc+i zk9|qN<{+&Ry~Nr7m08)XlE%h&ZT~*;hB!Sa(=B{jg3Tpx<$IELgb#qf#|{Bc1}|_z z)h3`g2zcp#_W^0|=3lRQf%6GwYl%-cn@h!;`0_23pUJgB|2=xgGgp4xT(i?FHW;bQI-D9Tzh17 ztjXF-y^$`G)9~KD0CF2C7znd+->s8@+$L6 z0Jd#t4JazaU-qXDagGl(RX`>o z$F?)!OFMj}Ln-r^y^9)C>fqjxL*I8E`ONm)0R`KVaN*|NOjeIS9JVcx6>D}D3(=D5 z+P^1}N2-u}vu$~vU*4YHT(AK;s$Bxrpuyck1@;o6-9~{<=iG*ym7d9S zVb%pm%*fJCax_QAg2d%X)Q-1kOt3k5KV@S0oadgN`Vu5lg0zg6@6x#e?oMSjhneRZ z{^Ctfo?1cWuXRyju4FD+yKEq&w`H+Oxnl$D%`YOpL-fd>-@t1klf;76A9yDMT;3UM zy3e z^?ISY+8S{X;P_fu=f=k`Ory1jCLmZk*`6mgA3kgPDcSQM07p`sxOZM{ug2MCSGE0$ zI3;gaB-4z}NpB8X*}90MVp70Xf?aNv;FplYGYPi zVp8ol!y9pry;E)Cn50s2vQmWf*&zg?mjIQPqH!J@`c^QM;URc->xS z(@OD13Y0^eQG}o+cWv-V@fHD1v&K7|xa;C5slc&sSiMf9{01Jco{azE zTf5kVgp2e1YbieW*Lvf;McQ1py5(=(+LL=)l#VH{CszH;hmGaa{cvtiv5kq^RdWtJ zS}t8j|GD576Z1FDKjF8diyrl zsWd4#%{LMJUVwJ1*EyiaC3 zs@mP#x#+2haaWEENfJ1m9rX38A1t%P)^+r!Jsw^AxNCT5dvui|9}7_6ZvyyB(#t== zal9XGIPT>acIt9PD|M1@!k>00w@|q2d{5 zW;W~1>fGy!a2&`DJMS2IFj8|F>y>;- z((gQA$Ld6J4H-EW00QCFhxL&2H;H}kE%~IedH`Az_ef+MsNn;E5d6z{^fkC(N9R#m zp(Z|-th)R_NH?qCnMo<)35~~&^NQ~FGe#*el7q>6zpAXW=GesVLqJG1$NfZ1;7y}N zdIcqoSs3e%_b#U&#_DhVsO_$z(1}}mn_UDMapd4?L{;ho#SZp(=)}TZ8S{xW3J}Tp z*F)p>^;?d@9L=i953pbIJ+_XVQzYL4y|wck=S%wI?I#;L?f9&|=mLmX>J)%O*isBG z`N!cf(f(zYF{}dVKAQpUHrBQb7$jhef?;E z4|i_wA23dmOIRS&OONZjM#JbvCfTp6O(dNUGmlr8toaPGiV!t#7}S^OJa#Gb@t{%n zShf9#6kyhMd+MKk7U&vapm=CoDHOQ~wI|daumv#4;qY{dK~Mma>T8t(C*}I8aCuYQ zeL0fqSs-g;*#8=f1ZhSyIa)#v#Dx|MONu;B0vogUbT20wCw+)aN-tuN*ia3&#Tk_( zY`;u4t(KLxqu~g%j9!)N*j^1s<8O++hZ{gSl-Lx!vlYPKcI&D-yz?!mid@J1AEnNS z4!`?-;=lb^B)h`DQVlD}C)MiT8Dm|t1?RI}iF-b{IHRknexO#Am;Wc0J6Cj4?J{Ee zEM!H-Y$LzOZ!%@-!}F^G9$|sWeCLT&-3E$_Mo_x9yXWXeI8ghEqwui(xNheeE_uKo zrruBUI6ar`?E!AXA;wJPp|bOIi&-+qcr<*IaG{PD-}EB^&~yo?xu^QzH0>&I(LL&G z?$#FG^Dz&QTK-rLby1fZrj0&O0d%x>AZD1_^b zp~0GmsJfUGn89%&yOq2bYRFH~lMqb7!84th=^&b%O&0UB^?Myahf*JjVM@-<98lL| z)+oHPx;vII_L*;*=~9r0##2=4YCyO{GN6w}M3-v_>FhQkrChap`R*g>a%Uax+D47g zTk-RTDVR&^TYbv(yNbDQLTL)jH=ESNT5g-WnZEIu_mT#JsDJoQ?Jta)yf*`7`)3o2y}#}X zAbouTzWadOoNX7k(8HG;@V&19ToPvj}c zs8JM`t7`5A9#IJ`xc`1|e7NcYZGW6kmrL!#!7x5nV^(254*iPDM{NpE{vXaW)sAxQB!ydUx0l&(iJAz02XQ|y2M~X$q z%UuoSbXE{a{NcNgZT)DPO#x}F-`sJiFh{aD1lXh&yS|)*+R}FRy#jU+;GRZO+MCx+ zUue0w{CS0EVj(#G><+K_`eIx_sg2;{s2&cSq({I9+nN-hy)tTWwe-$&8oh_v^xAi@c zhu|A^?(h`N&?isG@G$2l*DP6noUjmwx(#B_t$*8Qv!7WLaYoy)$2dXyY9Qbe495U| z=g3PAo|R|uw*AlvRk1Qd#hU6$0CM82Sbr_=6Y=&+F}&}+h1ElVT-U&)Bk^bGX+T(D zMxEG8Pvw`!#kha9-lp4feaF|?3k}fU-B$!vvoCfx5w6!PAR?Kb-`vlK-lM>vC0dQc=^9_b>eJ1#XCHrb-*rjoE$IFAKM6J zHfU9Vd`)8+Toe`It6qTB%429Pj7#9czHyu>mDeTGqL$#7zRiX4s;N>^vqJbrpXX1c zy=XTKnJ|?&w?oTQ?MQ5#D2FSayB*ZZpt7E+#ea)sMJp%Oxrphez^vf(C|1G!EFQ_ta&G@EmfJ{ z#Jn!z5@;sXg|gt ztE|?zj@qxk!%6b_Pc4#v*VXQ&|K<6*jE86jn<}7YaGk6CIcoLQrpA)J&8#=ck%E=) zxvQ(|!GForYHE(}NB&JT;^46Suj*v~miN_60643yeVYItg9ZfEU7~>4M_ZTEEL2R^t(Ua+r zl>x#p;9Yz%)hBtNBCt|iY_@vkRqs-?0meS4)OG8GFF5ThKfqOH=`12~t{LUN7%Bn^ zA0YSuv@K_>=WoQ;75gf~#@Qskvx48uw=?S+*nReyvri9N%w{iX+&THS+%0&!itM(1K>3! zK@UD`@=UK$pXY4<*&GJ^ zgP#ESXAVP=O2VxUsWkE5uBt12S>!b8R|7$X^~Ht2^0?Yj6+Wbr54t2!dv3@Hog8j|7Rr*ANQQQt%_N16hk}7s1 z&yO2u8Vg`zvu2mcqx+r!c)1dt2t7wlN5liX6Uex`$GDqjgKdLWk7jG`%G!B!&LM%~ z>M%vcC6fmD{3}e{v`B)q?xl!*hO`gXUswNZ8&LdANI~VScJ(6=KDFa#dL?_;aQLvX zxZrt+JL~vfSXyfO5rKMMk(;-=r2(Yyilw=p%L`a2PETkr4N=UDsn?YIwvoxxT+MdR@=!F`bmgmYMjZ%t1pt7 zi~KA64~SM#P`LAHd-e98bGYG`*4qav%HrA=8EeL&b=JEVe1^oKq4H@|Tp%YWbM=el zM#Ric&(=j2h*T%I_ZW}r5k1orCYPNaU%9mRdzYX%~< zJsoUE~G(un=#+f6hMahtE6Duq`|fl1a71OjgD7JK9y-<`>8 zW8`aqt`tuUfo_m_P}?rnn4}o5WWsd0XVbStc`6pEsi@_$RNPEx)IGJ;0|X^8ojYz2fI&FVfG^058{Jzaz7wHZ>u7jwSsPV`yH6(3= zELmt73||5*vchVD)7Aj$+Hx#V$C;XoKgsPnkBVfyEeIGorcd8uz5&0-X!qG{qMR;^ zbU$K9UjzK&pvVc)ar73-5NT>E57f?$1Dzo}M40_dZ%bcB?e64rl-Z&G5+mvP-DmB! zo*33u*#0D?$Y`idSCGCcy9S|Ub>(wflVt!``i0sk?Mqv31vCJ}xg|^I&{=$@77ggr zvcUITg*odYHQI*B@Ba;Pb+;p45-TSvA79KZm{a?dWwUmvJJ3^f{P-@l-w#=}pVG@sSY`xf@Q$p3c+MPP7OKzRs_2v6*(ebSN>kZO55-CcgVk#b6$aOXb1O&C19IZ1AwQZk9!ohMxLiNVx6Y>T7bI*k6`()!PGE-)rAirDp59d2rI(LDs)d=kMKdB9yV|-=ayGJpR_zf~R}wA7mJ38v7Rlg z0f27wV!6O-W>Nn6%-ErCc34{c_k-wuu2cICbk7vP!NVklwAzaoVl6LvR_ECNSZkS&VF$&fUvo1@WPJY)@1t|;_O@9R%iqCQs_N5ZBd8r+ zzqKD061I>?E(I62H&bx=sZSg~2Q8R8)AYI@R(BTv4to3|?Pe1D|LKxl6StF*3O@fL zZa?`C*O#*X8t(4ER%C`8bBNc#+o`$!GNu^;-xo+%2DjtseeAMOJ*)(teTpZ>6t#=L z{`vv8jjbZ_la0xmz$2rhzpnkfpFl}2juCIFU8mk6OBcb$XI7H50A?2rS|C+G#+ZN&nBWw-m8v_z*Z-9{46dbpN~JTQTonVNAifw z7@U4#8#IfcJ?Iq}XK7eI9Q)(Py-#vs+(KnEm8oG-Q5*8-q|rs?{3jcx z7(AMn!uGy?eP$|{ifb@9Y#l$9&-l~~HlxNOMb99d$u{?q=>Crr>NtHcIHIlZSNfUI zXI~&FQZhfzzkQA0`UXk0YAx$|@d8B~;OT@wc^`%w-1i?cl@kAV{8qt%G6%tV#?@K- z`HmcHrjl#YaxfgG3cltu^3)f+2O9&ZB(A+L#HVLhD(mW#xP_pt9bMVWPu7GV{%%UV zaU&McdlM%DFS?-*>T%VwPEG=CcWUcv1s~TAamf3E5(l`R4{#(f+}G0t9{s+p?*6iV zLW*zP7U5HNtfK#gu9&?lS}ri2HgPorsD9hBmiXmW$czZ9epn#Cn_l}D#GN{UdV8OP zhO;Z>dd7f=d35m_8GaaZ@+PjxpB>zfg>;v1`qG`8s&7tkQ6Q|#N$u&j#C%q5UF)?l z82^*blCrMkEvKQX&F4ckzB|aokpS-|H#_Vs($fF3pL0y1F32Y(h z6CR|h&^tk9ViFC}mM-1KTSJ$t{oY$);Y4kOkFXB9m#U+1?;(vj<{W%R;W8Tl%IK2>nN$OGrAGuaVbc@DPSaLjT@5ws5@23sK)SfVj5 zm@l&`;$VI5y%U{%S>LZ+nDle8XLy887jKF@(&wf+D`@6v06U8Npgy%cNzm=`2-YaS^LOwUVv^p>;! zHP$*}Q-ndyR(7a*%@#wjEZtgaR&wtE3gmfft+_K&ikxK>URr>4Tf&fp`=tQz?0c*2 z5&NlGQKvWWQ5B?X(~qB%6v@9G3GbY27`<8?W9KS4P0#>?Nl58*DtAJw)T_LQX_Zy< ztH1am=G4{LqaOp6yrVLu`q-__++SWfOr~;Q8nSCfQwP!gJ$=54v%15pb0WK$z=8Je z=L{{$CI)|NwN@6)AnY=q1JH2a-Eq&eqK&52WrTV<}=))oFJ6}fc zA3^WZV^1EdAMFtW$Z6Ty58d5P0j7Mcn_{TnGF3s;TK#AD+Lidxp1bMNRD!y*=g$4w zF_r;b`~MYrjf90>AtYsJl_^@>8)hp_en`D=TOipfrKy|S5y+KcZs% z93!BTkNM-`Y)e-wH7-cY+dMR9>Z&EEiH5t?V9WO7)^CYag{=cQq~D|`07v^zcs(vo z+(UqKxu3p4eBVtI+`es#EvlyvwDx{ZA*e&Z)kDT2|x%plmExpZMSlOJX8 z)6X3WMaQR+Vn?l1VuOadZxU_+8Sr5S&Y{qs!M#7dfLvSb>!l}m-JMa_nKXFaONRHm z@@_gLV4rjuDVRn3Z~0p~^g#ATsR3Yp=bbst5`O9eWYuiO}{nGy#DdfLUV(#O^&=H{Uzkx5fEstUa@h8JR*x(^sW@G z!AK^5(AI(Q;u-(bD%`4+sEvTCJg04l0|8OcM zvWe(@bY0&D@dc8rKvKzWN|$QtOs?3`Z=1#Z+C2wX4r)wWcJuJxrNnQ5_`7dtXcDF{ zz9!|}iRxFct$je9S+8GxwxIs-CxP=*jD|9n!Y0;W5--2 z@W_!S#AO932m#vQ@U@55jTxZ*{PEL0=Wtoasi3Y_@+WEev~#l<bi`wn=_NyMMs&G%7&x7-5TK~XBRBSD##~*8VdMq(`nol@`ABIsUBXk zJ3~9ON%s>Kot>7D#A}FJ+)FukH)Djfm z;d^5}n3sDW8)r|MoBn1kUg;ybYaAEk^tVEWWi!i_N;9ueBERS~6j7$!Q2CSF`(&Pe zXk42PQ*2o=sx!H)T>c$yF?cuSA{R_0-;FnvBUY-R<^Rzheirj(FAtT;kLrp{2%@x? z3_>wOyM^a`i{xn}{J`?6UQn8MKJ5}8q=0rO*X``IZ%5#n%i-LsUN}EH%DL|PT!}2>x6r@Kc{c1Yr5FS` zUR*F-jO%)hJu~)-2LLmzPcnpo)ba---qCq4+68p*fcCaP&T)SyQo?v{Kj_sT zE&|?{Rl&_RKsnL#Z9$S5y)3o#v4M--@^ej=U?u19vzI&ps{CuaQl0oy${X~g6#gor~Q9@rNG6-jf36$+5*dabUods zKPFW=!%@>>={-(PPOCqXqzW1vGynGSCO8Eg>xK2bJv#4imj5iy%zrG-zxOKtUcp&p zM#tt*`t{z3ZLE%RwpK0aq|YdgL}XGb?A|lWl=XZN;2g5TDzpQ&}iKi z`d($V#Cl|#woUXyzd%)2j!A!ZD|OLGUD}PR!JH)HlscryhZ=z@$NIN8>{@|cK|5){ z^O-Tmbx`E1bEMrSa*s0etvtpZIwX!5K)>U)BWbF9odBG_DMQ?}c4HGuETFGdFY_42)ZR#K)`B=Yiu z!aDLIrr43YZntx{@tghtDIiHOE@IYS$J%^u@K@hzg54Hm(j7>%lKr%48)n#*E}*5k zgYT6tX6#PvlZEatztaQ-I7@M6razXt^v;*ZH^K$r)2!xJFt}!{8fI`q2Yrk+kNTL zzg%dD+^NOJ+?XCkGJ|;)J)`X>4$EWBzZ+Fl>{f;ZZl)nSbwWI}tS^nN`!x>&n=Q`Z zhac60Eo=??-m+*R+_HLzYCkDcOfDrBN(&aT7#l) zLsq{hwVCNNzhui-@m2kHOigVwC!iSZ(ikUd?31n@Cc88 zrKU$SjA4k<$H_w`uWNU@p64k0$|KcX`P`@P48HPMy^&jg%X4j_;76n1&wYYfzr@TV&XC(6Yi7~35jMU37lP*z%EZCkHU{G zpZc`)FyEi;FPzPm6fLcNDbHR^ezP=CV7glF)G;U+d^6qFcqu0G`OLCdEL-~c;Kh)p{i9Yu+%jeyh6iY36Z!O*?M0&`u=tPRokUAuVaB>_??* z=Khjw`YI)0X!RM5qZDAJSqClOYsv>tAdZ6bWy_QGs9An-S7HCTj_?9!;YSaQ?1-7x zUPBm7Ek8}hvV}S@xJi8kX~-WAxwix`8E>u|foONGcuCF*1y8ln$^C%;aAxI|6yfKq z0`x&C&JwxkTj*qbo`m=#C5a)5Sbz+Uqo?`MK#kBRZOU2DhlzPVA>LDqhv~k_c!h0Im)NXM&T!R!lvFz)>1~_~DTF_sB!0HRdyW1ev7NyG4+FSF;{-{vB&l`owsWmdoiCjoS?EVNk}OsU73k%UW#&h{#ue%MZ3zN zs8VUzf;DKQmF}D`%}kr{0{YF3vMiHF72=M6KmL9fG;yMSQI_&p1ULxfZ4XC=M=T-0 zDPPp4llthn_t@#kn;0zyc4+L^W3nbyhR=+fkb=}#nZ?CeF#Mj39brSXKjpf@%p?BG z=DGg%uXB2v`~FGX5bq(T;4jQ!1cr@AyLl~ZcG4o3NWSUak8?sX*|9MU&jqoymoadO zzNamlRfGYz&hv6w_&X8#b2~m8{Qh&>jd05(G=O7jz3mOl8$&KS)mG()$f{w(&5GES zDVTdTMBxh*k~}2^jNhk!%*$9+&z7_?VB|DAH9lrmgi2+RCGv$9nWlYJyQu|!l3c$M zaYk6Tpn7%bCD}%#*+srrm0oLBCfCi?Q$%yu8uI<>G+CX*#`XYh`n*b_EHuP%Cp?vQ zW>@U@Qg;Pah9~$7bN%JMEWUn?Rn=?k{5)ZfPKcSfi zO!Jf7?ZSS|*dVt#+JNJ9n0ifSJT8TTSd$p0U1=FW>iILk+`Kb z(+zgF2!&a%T-VW3P2pW^^wmB*K*l>_rOsVr`4^O>$gQ+)aByhA;pbBO(&p@)DkBH! zZQhDe`=`ZYo_fFqQa_ z*m$s=AiDc(Ns&ONPmh?V6#Zg%;#($#jjfHv%Mmw&v3%6skr>~P%#Mw|OVX+5MOBuD zN6GShS4@A8${&W6GwCk|@bPKvwP#<|I=ltrSde6#q-&>$+P%vMm zDiY{yXrCPpm{OV8Tf5x<@{xpugkX6oL8Xn2{%&)TKgPB5;zyOtJNR&Let%b7Qk4O$ zB-M11YyIoS!3sGWt2h~Ag#HdeWIZCG^6uvdy$mmtFQAlk*F2fo=W^EkIVn@4D@kJ( zCY3Wg55D6|c-?CHGCVhD5BOh%ya*tTWfa5uWF|>{PP=VMwOt@%v-1|L;P9+4ci17~ z``7OiBTTUjzdIi?C4L8NzbCWyR^PYhfG=y>Ys_aI_D8OQ`_t`c?wX%T^6s?S?#_!x z=-;`2q1(!bO!gIBc{#m80fU`!bk~kkFKyjF>W41>p?>&pzxF(N@+7HV>LoQ?>=!Tq zz{O!I8clIC+5D%E?kmdN|BnV#C(p~v%RoIu4_ubEAIwc(a5~tThrUyi zA$UM}{W}D5vf%ePIJW=>2yVkY;32{}C#FsYF83W|wSn3V5|`_*8?$C~9{*X$;gPmI z-F6V zFjr$8z1L503;r;s%&N*NqI^^sX7qHwje?k1rC`+2@MIJi!Y3|@gTuvTcUa8@2*j(A zX_H1Bs*%^QOK-TIyE#hVqm$FI#=>SlZr)qBlc3gO5+71+&|5Oi2#ST4Gp#WZ6AO*$ zsZ>sKfbNHnpM&(B`*;IpXG(4C>}=<-F@~$;@YAEo7Wjr36ssZf1q6yUc%SLssIOKGTD{UL^j+RUbiHUjG zOL+h+NYYs_oR^WoVJFulJGI<0_&j;AMX$uLc<~_~sR< z(7M8Y1-(IOh{C-)U*G4yeY|dAcO?r3&-#?Ce4fOW8p@FVBkpp)3$z1h@440C3bx++ z3<5cBmUX0giy7jp5hDn41D*303~ufrAB+W-{|aH9Fi`zQwe>q=8%T!W=wU(<6C-@< zK#q*-$iY?q4lACzSLfbSdO(b#)HurhWw9czx`ep>emG7E!rw+2}!)+F6lannGth;gzpi3>mwaTf=BRr zRT3E%R~VO4`4kGS!A_@f z^zlPt70cncQmUQ8>rXYL1wK`huW=${etPZVj!bPjMF*UTV-tz{edBe9RY_GVed8 z>5%4a`f)&}dc$+koF~h0LEY&a#46EZgL;_Z8&fipJK4deja?U;xnXlVC&40@n}{p5 zG~*|8TLYv!{8!X{309Iy3tWidj$1dG!GSgYz-S$Wo*Edu9T}%o95+~hd+gX=Wg8A` z2$v%TFQFxTqTdnsFy0N1H#XRjrPld8Yni;H!R}{enETmbTgjWUG!td3DyeKNpv_|v z-C2&A$gelnYSkGd{fJd&ObXch)nt?zQqwFI6Pjd{8fWu~Iz;nIvf4O6yv7)lN%y`m zA9eU?(fAx+{>YMtsQWjj$xlU46K&gmY|t+hTf|yDkQB#p;GuG>$H(Y-ONdi=%~%5k z>~$A8`+9k`_7rt>w=hJNbyt9Xv!OD#e(A~X%+`GrYs4@!^OhR3C`YNt<+r9^$79JVT95wp))ju(GEFe$T+-(Qag1m==pq=7*EU%s+)0C&i?| z2lA;%UAuOPgZ~bQICJ>GOCC!LW9Utau@RWd)g*#DNslm77rcsYV%`zaL85DrVvb#W z_o{$rP`wfH$LdHxLmORND{a~IGpM&08?~WX=x5;v-#UEl zYsFXePReeV%8*}Kfssd>y@h$HPM9-7bcgN?!we~ z@Wii-;n( zy^sDLFJ|-(U3#v%c%~k@loS&3vo#{|_1cjqBY_{WidboTx7UA8iNaf@fK6?Jr}L1=b+NsIbn!I2fV| zY)0?^+W1|wOjV8axS%H-Z*>zaJ~cicGN|^%WzWt5Jw@rT=W=YLpJbI@N^WS~LN)tC z_Vo4ipKaGgF49APs$)Kx**}U(&RP}yxmT0coiG89rqbgJia=hZX;2vXX zNayq)#b|KJ@1cup_W&mmzTh6!FqR~o<+gR7IHn;TYwDL@^?crH?~J|%#f3GAQUNbl zdS87W5D3`NwTg)oTcMuRI|-bd^A398Z|u2|H%>RPw9_E8?%Q^P)X)01WbawatXud( zSTRkuX-|yj=Pyoh>y??QGBjd%{ROL#^Uxk1KI;5)Yb}k?PUYjtyealzaYU@`Xb~lr zmg-ojJ2OK?HCCXWk-N`>M(Q?{=uJ?;hz`Qz{*2N{V&E%gf!`haGOO|Rn)*T~*k zzW1zZzn}8EFMG%(36nP&{dc|nIwy0 z#v}}_3<5Qi!VfgjH6rn5<+*tfbMPIjhr36TnQ6&aOSYa|p5Sv`f7?ccSxodByp)hG z6SYtecMZ*5c{Xivt@G%`$+E%K4NE=L-W1vH)8b2OY%t2(n^3f2j_>ES*54=jrhDxM zlnSr{sK6a5hSNk`1D;J_DUbU1PN<1}##e}Q48Y>E`TR1}^7d71Vy@1pUrWk12=KcAZxW@tvq6mk_u=I!a)!$TZ1|9|lI)=_b6-?}K-31KHef`#A- zmf#@-X*3D$3D&{goyIkaOVGw4xHsBpLkMn7aA_I{?hXw!G`HAC-W_+0^TzMpd)}=- z7@%^dD}-S^(hwilZF_br{nQL6(ENwFa5e`= zTWon^RtN-GFp$cK^~j>l8SYy#uOW6UMge0j%zooz%hdjg@_}dbrLv?Ta_3g{_m`@+ z77d_FW{Jh;-hQwRD&3(Rc&xMJ@VCKG^F2+(T#a$*vm6Z%?Y#1|2UrS6U z!ouWwVeWam5Y|r~GC;*a^QHGid@EKhW83iKKFm-Jv&Bc#&JB!&@m(eFHz|g!OdJTl zHR!}H-`5>q?BE0br-%yc$~QT&d>n%(8~D+dvOM%tTbrUJ$SkqJYtob&tuaZj7xCOO z(&9qmm*n^1yF1&yQJZXbS~72t*=|Q__Xln(&lWe8xM>(T?CjYIP2b&x`PyH%Kx#e{ zr;1n%qkr70$+Vw2{S*@NR6yMA>L;yJ@L#EGt-9@!b$Tsk5ull)uhsD1>ieQr3%B)f z{7tu+$lRu{r&o`+;V>j(@4asm?}UySAxKgvI3?;z@7KyCqLnWe1aXGLk2-_7}B zF6I>%M*Qveh7{*}<rp)f@EgrMz?pnp*MB=9m*k2^zGVAx2fOYXiF6wb$^p{Jq&k z75;ZnY_7*eM9-x-uIpuZUPa>%G`jlZ6=)+rkkfVCEUGGVg+gM>TJlB25rNxib4~Ai zCxPDlEoPXwe}SsjpbEbXK{Rb-H8U^Tpgk1Yofa6Co4&E62Cu7?!yVy23lb#21dd=9 zH3@XJbw_uzLS~IqsKWZ5>859fgiKB|wB&r4f1Y++Gkrfmn`~2}OkuF(^4z{Q zq>wPNfP4Dr`ki)Z?s>G;b+jooM0fEKz2V5eI~LBW>$ML)N1bN7zMS z6Y4wVlb_2ZMjcz%@TzV|S%6z@t>zfC_u8RNP0G$SNolLhKR--h);lvG9L-GTcT}55 zU|C>i$r1>r6P4*e&2H+@?L`qD3JfT1NQ%D;-#N$-!cA;8GirAid;dO{omUJE37I)I zHk?6*$wQ6Iw1rQKtYBWkJ8G2NZ%Cp3<42Q|TzhpP^2VMgIq*bgM9^6AasB}7qoWg~ zfVUv@PWqPibjy1O1akCpPXIod!v;Ovw#MY9Pr?Aa5zm?Q@%yd3LZW02naJWPQH4Y?>0_PC^@RdE4AJHS%T@w?yRt{T@nYu4;NJ$eebTw8F z7ZrW4@)frtq)xT)1;J^GtW1lZVkQkk>L2KP6FK}-EZhg#^!TQ4JagzL(ptl?_1M-N zawu3DS5r5>>>m1cO(&E;iEw0>%w-31ZQ*AfHc+D(_ls1{Zon^BxKwQ9&x$FFscK{gtvCT)FSt*dFB*iKKK_I$VUgcCxztNin5H;SG| zp{1X$B*ytk%CXVdSE>-PC3i7L>|!^5ve5C@xu0`0eemVa1inIEIDwaf0>F$@ z@bI3P3kOCn_^f&Pl=&l4&{B=ow~=HXarcj>61B3-uFo&oBuw&qDT=SBPBWf}S$>RW zT_`PcJ+@7{%=H*#v;@ynH6|kUTYAOz*QkY0lbxLUCr);JCGUI2XraGn)cuMrM;qzs zR-EVT(&STVTb)lXPwOvw+YGLbZFce{G5|0K9*;P4BviaVj!w8j^7;Ft(#I|0YPFrD z@jvIHZvVJVM1Ggk+A9ilA1t^PV6G~}s+K8?TdwpkgUPw3DHeb*-ZmEx=wD#46I;{dl2M6+@k^{f=znp$g|zl|E7 zJ#=KrRUT+|a%`3D%<4aNHpCjNPK&fcuoH>97Gh4lgEYuu7N(0DUzOUS8UmRPi=k^# zt5vci!kx1N*AZ+eq}vXb-rRKE2$dprlgI>*EKtP^!nP~4!AZd}FQooLo|M?{U91>{ zFO~o5YZWSD{f)DK)44U5WzQ|Fp-El)F?TIzU*vn^uJ+u$q78@^7MGF;fq9=szR&aE zRd@;VKmE=${b?q9w(Q4iuM2&H%pouOm6bnl8j5Q=!)H_Lyrg}e{d`m1*gCF#rCu1S z2h7FhJzQx`(X(`z<{A#`==4rgH+^R9BwT*s`}G6FdE3C?H@&OHqARH473_f}N!~c1 zsDxKvA1Q3u7m-|4+?8ltUzfQn+8bm4f*GVm#~tJNQ6%pDA7o$wnwwXHDy9zD?N*mlgN;eXob0+z)c_(tU zX1=z1qL#n$T{`GmLh4%i<@+4as!d?$1OtK(S?}gO^U)tdkdjI^!Tubv7p+*$(RHrH4k8gVTPNbM&u_aP9 zA#wjQm0Ud%U8dl2kDqXaEMty;B9>*1Sv4m$%k{+Y_uD)n3yCBsr2k#^v{$5dnJd0e zI%9#*)z8?vj@)~g27wQK5B#q65hyAf%`v3mMZZ{F$r!0!jp5XCXQ$HD_;uAZz0P;3 zJT<+GBmEFLT)aOB*yYD02DNMcy+#I@aA4)9R)N1 zQEVEc>bE1x#NUSe+a7sdWcD1o@5J6aO%~u_XyB9%`u)kaJ^d&jgBy8T^D`G)M*sc+ z{0=H}ux{sGpijy-lC=TN@W&7a#rgL$bniASt&(1uecqjTbe*)1xFa@r>WMXS@R)N_ z&WP4c$s9n-xKdt9zbumiXJ94|wk%Qn(hm5Z2=Xu@`>R=$8 z{ZVNOjLZ=C{jv4Jui&=$Exuhk&g2efw#Ok{ZO_fRh}{BSJUm;B2#L^Ad%XUap`3|1 zJ@J>?{9mP8JRsRhRXuG5VKHv5G9#1iq9DaG20&6AB+bF)8YPJM0iyr=POxUwzXg*Y zm%_umySF>9n+0C+7Tf067S|8aqymvUXT6e;zKZ6}w$^fv*+nYS&x=ulAuo_u`t$qvkFykJ21Re_u=$_kv) zZ#Nkgg9CY=X@0Kz@xs%8PX-JaldDxK6XvAXyPMq(+>A2Z%Gv5gEQMDd*88@^v) zP>G?pP3lGLeG*f1#=~pIq5+kw>b#J`NFZfV5?SZ}FkTpOFmvD|m3Sb~bX2pxmr@2b zvFiV{zNS}pgmt{k=b7`(^^{1nhR@|ukv0g9HdeG;E~U-6YY*XER57$@BL25=+9y1J zcD?7xNJ$3?m%hICiYl!CdW?ng7+QxARfWq8d|8wR47}5DJZvZC3+^Iu})12Hq2v47bjEwBUiO!>$BF3&} zUU;uhzgXhP--mS`$aMo#WMJ_gj#{;-nK>3fxNiRczYZz=mksz=F{yv~2KoY@AwZjp zy~KH*g3oqt<2lRxX&}Lq5{mUo{{B4+I8EtThgEFx2Qo9Bi(zg(VXH&YLqyZf{^{%g zelYD{Xm}W8rmCuH0z@#aH??r3Zubw2mlOT(Fy2oss>Z*dj5)O}b3Q*f|7oSsOI=>d z$pVP|PxQNF%qX_1YPbKqTNk|Wb^=H?#>0~(DTC(ppENc9;=YAWOZ$AD66bJ|x1xIW zt^6NIFyijwiuIw;q~n3zqeSiU7l1Z0>)^4X$u5Cu{qK{1(8SJRkOu|+^`cuC(q6Eb zS>F$brv(s3e;eXuUWOZuz z)l-L!+eGJEocAx2!}l_t`r0|b>c3Dm0uU~6J&iSj&Y)3-QtR5SZujTJW_Q26X!pE9 zEHvOp$-i~qA5N>G4El+Cj&-6>pPIzmLJpdKIWYoa==X>G@j`5}0vT)&|4n%5zc9o% zjmG;g5!;3TY^!hlzn4K|0gmH&ukpX{r@XZ2^9HY~kB^VL|4$#H22ewCV8<=$#`^wm zzrA5(4P^&+3SM zJ>Y2X^1q_OSUhHoHXe5gq@Qj>`Xu~a+MXb@Nu?=jEf ziUnJ*I@qe=cLMMsg^i$Z2{fuyRjV;ClTWKKeUVi((m3d=Tm9O|Ok{f)-{G(_O@=0( zHVMpT=W|gEW;vkjg4n8(`SkY)mKemkDm|$(SMAG{Nx3?FX6lQ zZGNWC^FkG0Yl#i*)vdmD#a1R?NE_M&mW(UpZs}S~pe4JXnLd30(?aPNEN>REOAZ*p zjc4ll$b9Ce3Mk9@-Nmj@4(XZw^-lR*=S>#W_m(aUnmpI0_zQ>~eakmV9D*fDipw*6 zjy`8D0(EmoSr#+n-I8whvxmz$-Hhjw=j_E# z(=H2AvUiGUq02ZXoH?qbmR1{aZ8JQRr|^d#Wv9LK4qY!?=e*eK37?o@^ldHiDqC57 z6L#VN^Qy5lx-8w(33w@vJHt)ZT~?Z|U=s@zU)KCts6*tt_R%Xn*c0EOg$m2V2}Lja zQeycgdHcN2WY70cBwxKMWp7&DD4b+c`*NQd!17*`loV@ zW`f0IDT9=^^Q63rWYlizGb~C527BBQh&wOrJCySLrzVciYq0(IANfm3n@_QO;PJX#VaO+G=h>=erh zI!<{^#{EgZ!bb_tq{r=gFK(~`WgJaY+`G5Aqc5{PmYO`Js~ny4Ydc&~4PPvJig+z4 zB@#sK(n1DO+#!B0EeLm*)3D~wLAqemRXxoZl^^;26@tDV=dZnmE1UA%)Ma(hS&?yF0X7tPA<(|m!gLN5*o2@y6!FBSSg}i4 z?{HubN_eu|;T!OMEd4YeiQsgJL!9t-x8HktkRj96gXGg#n@z5Fk+SQy3ePtrZz{#0 zJn_5HB6HVszB}Ty0%Wr*moFq)kMR_nz5k9(6j!c8Zc6x#jNOUJZ|(;oPgL_cH!b?UFUd@?oy;=HabPne#j=DU~=k~28nB~G<2;^_aLzgQbjIXLSMJ`@rrk=JdlfxJo`znB=`FqzAU}QC z8vEX<%1U^K81=fI3-wXmj8h2R31hU|-Yr0gXj#E=ZxDe7sN>4>btT>|mopl)+nBD8Xv zh)jpLvjdxKtuC>cIR)O`*Ug%<^&QxWONsu;^V9OKbksbmDKFo@zYAX`p+7cg^xc${ zz|_7>0-;2`%YqZRKXWl)TZLo~KChO?B*_+tV?#3>3vLh4(Prp(d)8}^IZY}qqn6>s z;e704U~OWCQ-xSqS&`Gw2U1e+y@rHS8yOk(xxljij=aPOqLtGkv__9-jYC`pU-AR4 z#4k*@iHbK0d`0x}9*ZoltiQ7%Uz?8;zGeVHF4Ir&6HqjBO}sWyAw4GZ2frr)mEvxM ze~ZNN6=sbIEH_6lzWu1d+vjtS0%=UnwZCGnXwF6BER)c@*UoE!kV$1SZ*2RQ0{$A8 z`*R-xm%2-2W`m<;B`c7Zb$c45af$g#fT(7N@W6Q6udCQt^+)ofZS4{YBc}tqqr-4+ zkD)1@{>_)tA{WS8Tfjs(PaLQkv$)x0iGD=-Cvt98SSkHlEE?AMCHvCWt2VX+Brb;~ z_Efa8x_(H@t?j9g2d;q`uHV;p^h0rIb8*iHh#dwfH=m{){Fw}dj0=NK4*vAC@V6Ln z``;C6o~*Af(5XDCI=!|A!Tore{8mHnd&|Ms{Ke^q zqd|+?nG%PaZKUYw*Inqe6qd}Ei*E6PMxpczjV1VyRvisdnBm_*03irgDU5B1!oiv_ zj1td7W8U-56ornQPx#8oNY^~*-`wOe5tKpik0R4R8~9C#`d`)Sr@0D?zJb_B z!Mp)K1XgTgT#7vPM}O~MrlgF{x4Qr8^~8O^&P}y^c_|uryV%f@dh| z+aj1-tkxcsXnR++25x;_LS6eWi9RFeCXwCQmUHiqrISj%!bF!}I`_slXnYQyvn`%? z-%p9i7A;`+?LUB&CGJGeOj6JxJbSZ$|6*~XqxiD&Y@S}n(-_!4T~x7sMCsH@wSQP; z^I2FNpAShq7BF2|_jPh-n`?PV#w&HiPPef!KgRcZXevf4zo6eS+hT%cLp@s)G&0V9 zPl=-F>Bs)R57ceqUiJkDw5*;-qKt}d{|?&(>;k1pF1;5jtW0KPd%V2y^Aq-{ceUa? z5*vZy&8s}~qmqG~o68+oFt^*J1o)_nJycD1KRg?o(+XE^Zr$g>gtx+`aSa{w%~=)8 zIEa{gmo>lQgzfdaqeXb6R@s}-a6nSrB9hfCW$}kogka7x`wrtauVXd1nNHI{T!6J; zJpiIE77kD$%f)_-v*-9m+D0Z;HBtZzc;9w;wuq9t^_%_<)KOFBlE3db@f1HC>hOo5 z44vHs50n19@;N(WoOf+tgoFR;Gt34O$Mu|MSo0Gek5xzi`xox2jt6P8NloR+?tur5 z*c`!Q9nH<+BFJIp_K|bQ3`ppDqv5Jf4)$f%H@-6o$Pl1JHuB2q%zU$Oe?ZXuB?($V zSY;96kp*yDombYqc$)n521r8{5*wL%d3c8svm4{#z^Ftg*hC9bu8}nV-4m2BP0Iu$ z=eFy=D0@3?w`~!>>(QwoKD1dl&MWtjSJad%A=z4o_GlBY9N3lt>zS3#VWyrNn5&7T zO}_7iP2ggCj`xOoQij*`R@-FOe&t$-8*v9?1Rud>A0mrGl_pPB16nX1?v`TO6Lw3v z5mhfqNp+H(*bS4@xtT%}6ZrI$v4Q=Bc$NMu+tbzUB5gY!YRNAxZoH_i%}ts-6h;8J z)sx#|aZH^0ks~Rch-d11R^Oiit^l-p*mw8#Pu8-M63(Yje_VU$@;-HiAdj}7gjLrZ ztLrx&q%%*AAu-9kDNyQXWdU%``H04RdK>@$rnUaBF3!greyzucXZ7ga_r?FPiWg$P zfB*hFa7jy%((Rjb6B>N@pYa2riRe8H(t?OH=H_P}+wFZp3QLRW zAPq@8Fx@|wdmq*AIa9CZt;-sIo=8fz1f-QHfK@K{sSm>lC*T^?R(MO3Buy?17*KOgE zH;IN|rnP=SXq#>p{pP`3(68B(@}wsF2`;@%l?O^ndAYeRS-u_n z9J_FFK^X(}wbv;t@^3wgY~UN%dQNv{XPTMw+cs_m-?A(u#PPk%71O=W;leLzdXr5o zmdBCH>Ua+UpQ_us3|43OvJ;qjpnbtH5yFX-WJC&1-#>P0lPkCEk;Xjr8kyDCRxNnP0%97~I4r#3;Pnkv7a@zyMJ^VxKT ze8ny+^L`Nb7)>c-7|y+J7U8W8w7E^e2~d6uKfIrh*HMozT?i(?`T8Rqgvjd;rwJ@&HYIoDrLtJxuStT}D$-OK+D zR#1pXtv#=q(SM+{1%8Ym`qmKa>hoD#@2WQak>_GE z{a|PuLH7{(Q$o%m=LHS<>sO0;BdVefBv1jhG=%VE%8Rzvy@Z*;=rt@D@!@+h&9C03 zlECTGl$bb-T1s5m3GD>c_6|pxjw4~_w6?*1W-;}(DC}(OnP+Qr+v&QYnogvE_jgmo zpvC!k;BZn^X`*yw>u6;|3zsLXws^LbmRuyO!6#C}-}}J70AbtyWV(uXa_{hd-5ocG z>-|+bRrokGQS?Mgk{a)0KQJ;AF1tB*vjhhDd!pJ6lZ(hn(LzKc>jz<9)wAmyf;nyL z&07DYM8%f=<0lcie{i2Eg>RH>alYMf*>r2ah%LSShhkG7sx@NGQwH0kCw5;A^Qk`W zMJ(DouU`l_`Jg=NJM{Yo9^hp^({fKbOq0G0mE17B0!O11G%{FY;hh|)QLmxVxqU)4S9rigRZ8xJt zLhgrqaLCs#__4lCe(kS(-kKndLV$nofAzDsqJN1jnZesiAK*it>_1n*TW|ZtqKIu& z<=wrQcX0OssQYGQt~iIdtF|BJN&pqVWpXP0^!RA-?m;v9&)!@zh`$OFA;I1LB(r%3 zh?eO1qI5rRIz?gX>gr^0M|}ch_S4lctZQ$(O%35aT;~Qw`t+=Z8rnd|rkxuf7{<>K zgHSUQn~h&FP-A6*a636)Yd*5FfW{tN`ww^7W(Mfv5oJDRl0;-`Wb4c`I7C?6%A)K63^HvstTgfS&O`DtsN!hB+I(G(R~#aDoW~{Q z>$2NX^vEcY6i`Rd*ST3+(xAg-{~h4$oLsD{yJ-}J3yTFyvvqOxZJhu_KosLV+H5FPsZtCaDkFECzA-`4P9_E zlgRX_$j`S=06?o;rBvV~CMHogUDd9vZsS3jjt=k{?(KNK%`~j7oMa14!JC+DX=i0J zH8kKTk%IiaF{7tn^`iUvB591gl%0cAehjkmX8KVU2wv8^jz%|^r*jiI3D#Xtu5Q8y zYi~HlkAuq(uWx$WGCjC*cb zMp52Vse$yc26>Bw`lZfp)*xR6UG(+ciUvo_Y0J%LR07phT6iWs{B4TjkBzoQDrRjB zjZCqY=H(c9f5LvHvY^ET44Jc;}`^w6r-D@TXxNxf?G%{eqvqZTIHCHxx9(9`m_Sjv#8Y>KJM-^hSLmx)NE__G#GydxYt6$fveYljNM}bii|yTMC)p3`-|9}evNCYbF^kedA`fvI=}pDXrwg$04HQ;=ZR0) z&!{+gyj>%y@4SvHohH8=hXN>;;pvp?WYa*uJK*N{!2V_;qnWi% z!pO522CZtWZ*I&l(`8w0uOEdam0@U_L@yP+RuZNje1EJlIAV=z?4~nQP{RYW0Q*(V zYFOXFxIpb-YsoAP#rPfn&BMOgZ}&Jzsm&@b8$Vh#>JlQcs6y?xc|Nd?tI9*j}v@Ixop1+`JMcATF0 ztg3O}P0REhRfYFlVsBs#U93|kTKDSAGNH@MQ^7E+=HmBx;(Z{h_2gA_6sXEH_pA1u zBDGqJgk?)_#jUcg-(fL9-uURDgBFA>!8SEYsg>G?@czJZIe+;&f8q#gZt*1-Z;1F$ zSIhkIg>}O^av+A4^ExvToR~-jnUs#p8*mJrd8pe|kNV)R+cxuwf!OTi=t1!sW}X32 zoKQJ=+cu)>c*%4$+ALmRptd-|Kf||?LdoXXf2@E60bqeVV5GYaYb04ZH}hM_a(ukG zf{nlJmJih1{TuSeWVoyU3IbF*y6CY3Q2FfnzBojeq3p(Cy}6HS>t2?@Fn*VD5|wWg za&|2`!DJiXx%25wQrq*kwL*so-MJi?^RG)a6ix_`=1pdL*=+qtykodNd#z+;f39#` zj907tieSSX&^KeAIwj0~^E z{Kkg>TA*JQ1^Brr(cl2TYzqgSAi*x;OnK9_pkg)+ovvJnexFF z3B9XcgCB0s5yb*-aw0dOf1NV?j&mjR&3x2<7@Anz*7WNlB@Em`c`^e89s6UKtu+pG zdkdt%+PaF18x4ZhN*0|Azc(%7bkHQxLvyIJ*{+>EMzH{0X#v$#ui%v* zSStf&K>wP{u;J;C{pn=-*0SkS+(DM@?ARVx@3l@>jmuS- z5L7u?#h2{8GBF2)AA}`ax{7x_`lGFLxGq>HQ{!-)=D-L?za&o|@ol^z5#F$&tx zs2}tMCl>U-WD8C6DcD>~a0nE&8y;a5GW74m;7+-tg2I^COByBl(mHUO8a3hp+N$N= zm%TTjMZ4ik*`q*)MlDK%GioD^PFSi$>u}Yo{`AZ3eE=8HoaAY|W^|0df;pX=Np-@? zy)SxYG-Q^4CoXmiGN{xuTYZzk)-Dlv3OabB3|(z6XS5)TQU&nI(iv(=PEpL9uv&XQ z_o-33PhcOGKtL(+O6sx~4z{DGv`8t)#Njka=TF1r>`ps}E;0ZhWhr_u(7&INQ@h2< zyO>2v=@+mzG}}-mj(;(~>be%p5Zci{#O8mUTqQIAkhB4W#Ee>bxGVFN5>pB6jJ3!K;u@CDFa=R| zC~HsE#MAT1wbfHJ$r{@1x#@-pvMH)Nc5@$AMW}Z8 zpB1vm{95y+Roq6hVRgVlY zcU=}$Y3Xt$l~8?o0Y|^R?0nVKr>-A9GZD=EPk@Pq4NHChxkH1 zDgcg{cUhShmy=N$AGL{gcV-NQWS3)R6@3fLxhBHoN2(edEf6F`ks+XNFIBw9GC+in zPYYXzm{V1X7xKTpYUmjUlH4xF{z&o6|M}vZws*aOCME^#Qk`3_PgR16MpA1a;XuNw zYAvp_&U*93UH!rqk*T=_cB9Ep?ZG7eQ$sKVnCfpG7f%-T`h^4Wx(oE_ab50zd z=Ck(g+5Cpy@w4D)CH2eSoWPcz$8v-7ZUlG&=w+*&LZ*QHUEQQ*d2oSwnq6D$dXc|$ z+9~7}_^+SeWScKXB4|ammo?YA4y(9<>gY%4%hj9& z-YL&K3MA-y_H?7XuiI`8L__huGmzOZ^Tk@!-nOlmue1zNy(&=c0UX3^!1ss-#5)sF z)fn+x=?2)ykLV6t4t4#;`xjmx!1V}g@5YJxh}5+ch^}nX3b>4%15`d2BTuzyW+k%r z;TKc7wJz)P(uQ@`G4D&#)8fvod>xf;pCZWuOS|ITK`XksEQj-LZh$GMs{J z&JvJxL4LEFHX=mz`jWpm?VJ*|(v1&HLo} z$Oq}z#BrSn=F-P_el|0HIeGuV1pvq=luKPLnABfkGLp?offwoEEjS}x=KJFuX;OtG zQeK!NSDEwwBNC&)+CNujFFz-1)ly3u9Ct6?MRkD^{wNs9Ne3<|YmKJ1>IfjK zmRHX-pxa8Y5^yInv14tGtMV_C<`ig(ZhNk~RK5<^W`$dcQ-Q-=F}c z8g8{AC`U*)pmvv$Dk3ggQtUCErGE`ItKEY=g!eXTv9dIDRsiV427n!M zeu~7Gk#aD0g9|9g-Y<&*Tn{6V@9B1hDiB!(EEVd!8U4%u$5MHjyVe5i(bA(I!4AtQYKrhw;n??3nK8y?!vzh%e_&@af+tIODjt2|hy zUnah5x51$BWz3cEs2-L<+aZ;;h8Hy9V8_R~f!iReF<^na-8co%*_>mtP7V)quZ*tG zF4Nwe8g(wn-PlM*#6X_9s(|CHe7+C<&53V(|JMm`|1~ElK^@=V>8v9r!4C_VB=5a; zZ@*T)Eg&)i0?Nnz@5nv;?-_n+R8CSR+CP@AD?P7W-cOw4u8k}PX{;Z()7^L0u%{U! zwPGd4$>%*6mulY?aeq0L=aGIQTyOPFV}gev+PV1_O0Y?Rdj#~NTom5P(4#>_NzM#+ zd@dI!bx7?Zsk&@_Z;G(MS>x<1-5`2iGHAZ_PV>Xa?yJnCt;RV?9!GSu7ZTgOLa+25 zI&SSAS!)1}aVg#T>t}tvNwz4^3(hJ>6IxBR2ej=Xl8vQZ_T5=jwu7CIq&~oImuK4t zPgG1jV~SF)9vAnz(ybmheHV=gEN3$FSYa(6F6V@^d^1>N!mFoP%v;pgHiI+sb+;H6 zSl1fLS*B=RNG7(Zw;T(HZ7~H_=}sHb0a{ZfEwh^wDVdu`euDP3sZ_@eeR?s;+Gtpo zK$E&1JjLCXl<&hfkeamY9GL7ypKP-iX@M{`%56Dc5&Wb%5z4Xv$QikP%A zB~qJ|v}`&>B-`{vduf6k3gTjCT7>80>+aeax8Q%|{Aa{oXiLZ`?xj|f3BdJ_tE_4LIAWar z?ijX%b38n1jLnWk$ca0w$!NBj%uudAQ?9HFyOTe-ofKEgKXLN*kEk5#vUs6KrigZu zHv2Py=KOAzMDkjFh42v-Ep*nWsD%)n9U|WZh}JeK78?Nfp)3v$w2$2QguIKAoU!vQ z%Du2oHPZZXw4@Petm|TB1#Yfooq*EINjhLkJ~Ox4yeL!KDRo}(tVBc+LcSREznz_y z?XDmPq*&^Gyy#J-5cmv%L`_gS-By*OxCwlQX!ErQW%5P>{!-dQ&g#f^p4PFhXeTTl z+r7n=vorrcKqe!jKGY(1X{8mF-t?!w;kW6#@EXQ}>zI{y^4rDkIuIvE3I*M6=00P{5u*I!)NngU9k2Lao2 zN}WQ@GdN8ont%+ly~V4eXtjGkw|uf}w}TE#Ii(R?3&kr3&Y!SIrsC z5NN6}bo#Nm@)t!yi5S88df3hGgA$^%t~EOqDK5+3@817=}ZZE{3bf zoE_StZ$q%Cv=MhIy9byFFG7sB;q0H5gHNTuj;D-CW2Vkl8ZQHT=CwSWWm+GLNk`vp zZJVw<+WVU{bgZlMr87WXkzF5nlzsCrc%Ts4Iqt+zs@H1Xo9FxL zlISnIeJ$tES}4;Z#N5$6WP*;3Y4g)La;rzV8oA5ATn}hHcx2Dn(v?!Ro2fm)gMRS> z@i4W&z3__|>1&$fHwv5O0+fPLsS==FKu>L)QT)ReSqz+4T7-WtQb={fNRI^LSfVFA zb6wKb#Nqmi+~%&+f#&GF7%V|aVcv#W3?=E8G|*&#sxB?qMg5y@}j#vZ9u)Nw7yK&c69LEjMb-UMIoy9&khVxrwS4Sv|dDth#obe9qZOu!dOOKW)N^Hu*6-4-Z6q<3uh>`lb$qR)XYWp4x`Lyj+L=ayai2O&<$9J}+& z+c@h}+x~n_2kV9SRyKf?nLc}wgs>g|Tv4$vFoP-k)(U!z9gF?s+jqLeLz~~3923ZW z=n@BZL;E|F3@CG^o|~)2YcESf_9C}u=&sY?zN>MqXQ?(!yKF`n=aP^fYNxoK*a|%v zUFqCj6x+y&vjcX!BgBaW?<0%?ZTiJtd|4MZiqDjX`ff&abg?-{4yo*XBE^+YM~?~Z zalhLg^=gTD=eyJJu|WDm7ZMSpI$B=gTUmD&SL&?;>xy?t9o7yzMx($OCFezP-2;)? zotM}QN&^Koo*G6GH|w$55+YhgU)~*|Z}2($40&nGm?(Baj(Ovn#ZxTOksYa4*)%0%TJ(Z!yjV3nNT~49du2sFFy4cSB8WT zN-hYi&-j|f5uUPCm-Hk#22Y|A4q&()_Ch<8?dj)>_@sMK7)W+X)QA( ztpmMbR*g@e>2NYZaBP}$&wFusxpP$1mn$yav@3Gga<dEwof90iF}bdZb2@VK@*=s#ob+9f8osPF zZ90xc?YjtYd!_XFuE3C2klD+r=^s!Yz>L)D(u>hyh?zNRnDeoAL8kR>gO*y2q8t(E zmO0>CR^r!{YY>mF+W-{q;&^U7|5yuMVmka&I*Y|Md&)WDqHM1($I{jY8;waxcg)Up z=99Nz)hpLrlZT21`?vMrt@S1?AzMrN!vZg4QZK$fJ%)52SwN?#7Rb2oZVlj{)9$8f zV_XAvhe~~~!Uu;aQ`SnPS-d_q>^Be{jBa{3^bc~+ZAJ61QMt)ZSFrS-2I|nCJPSUt zYB=YmKkiO;#UbpTq1bgtd8@Q-P{p3hYc2ICj8O79H71A3ZyW-Z1fn zS^opzd1@_vAGcN(O_)j8YK~IQIrwdQ^jG?{twiNXY(Fz4sb$5~jvi4|Su*i_$b)gH z9(u-i2_Q66IHNnmspPbNE*(hA$V6&5l?TLKo&qY|nzE;}o;s1!QM+ItH^*lvC)V74 z+X0W`^ahb_$8w$$K2*%qS|`gF{a2UB$}b1n=J`A8*XUQg%(q_XN?jfGECcL{kNrRN z(h4K}>cL5L=C^W@_I0USWwJT%o64tRUwJXOQBqg?3SN$;Fft6D9x{_BnpZw!H{`@~ zGd*^7D~F>Pk41Y72|*s!htX_6RixmO9e`Z|z9-Aun(|BA63WH6dKn4zgZvY$eg4_Y zJ5mFmAlhUNs2l;*A)pccCzI#DQAq8-w5%r$n!Q{!@x>U1gx&vfFq~CF!oq00_JjB| zDHs?6rqdg=YinwhSAig|vHDH^$`@N38|q`>xc@6@Dz8mi`by)|iOA6p@ajkYA+axI z6%S1Ngev(Z=&5AuzmHR%F zoM2+N?ViQQYyk#;ONDw%S92xGQGX1TYwpOM*w4>f)QAhnZUU+oOxR3NEVD)NEC`H= zSga(rwJg)imkn|6_~@Re=};3Sp4uWUsuj%4e8S3{sIOMl;~X``|N7W3)7&g8ld7ns zLXHOJ&kJEF_X_p2x-E_Cqjx3MrHZfY#ulsc#Q4vq3PRk1x=hwM@l9#G4 zn9biZ9teSk*;V8%d$(jZ4AdfWalAs(tX7h7uat7zmuAoRENTlxE{n55&M&$r*t%y& zw6d3$TVla|wlv5zDlPfrk$3<^cG7;gpt%(T4G$}cN~&*5j%5{&5iliLnYVek+>u3aX8>js`Xtr&iLYBNn9oT zveR>U<=2kZE^#sgDF(A)2Sx%}Cp`v4lh-EhUZ)8C!!B%O3vp}D*moUI$r>EvarNh1 zJDh{%d;4}cRSC_|g%+ujMqsmcpd6}&>c|MUw@Q3(q*OkTLx7Ftcjki@X4tf0k;sJK z1T2Mt&uPWXCUD-n?`FI?i!sd2lQ9|E_rr^6kY`$-P|9hPWBkKCi7}?M?R7{zyyFSL za^A}=dIE+$ib1stn3lLFXS*Yi+8a$7+7ecufFuxRrpBi&e2(sxd5j+>#N*(=8_(JK z*iSBh7^KnAOjs9^!!V2=kJDR^aVaql*FVR59ts#>672phC#k(QlJ^eN)5VoKFphJh zq7sBU-^~>pIG4ABeGN-0#Dquxl!W|C9h6`Jn6Vly%UFJ`=`$i?OGY)YS_-pH|Sf;uyf9uAK>!4r`-bS)Q52|`;VS_J}bClS=QgtV{Hu$@dI(`NVlmRjwn=|}GiaueOte+O>136xh> zoN3ocv`_ru�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 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/databases/数据库文档/基础信息(yxt_base)1.1.xlsx b/yxt-wms-biz/docs/databases/数据库文档/基础信息(yxt_base)1.1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b784ad9805a9457b4aecb443925071e4fb4dc8cb GIT binary patch literal 23522 zcmeFYV~}o5w=GzxnWL!zLL)iiZSFM1HxQ0yM5#*O53wT=^>=u$qMgJL~Pq8h4uzZofe~N6D>$nAI+{ z7j9+%kR9aD5d?lAD_fNaK6Qn~s*&KKBwX05thyx!ah8&p5+=;IBlc?FH47nfDZwt! z@2U(DG%e+?y>94jJ)?>37yDTadAS+?GMEi6&|Q|}tIkI26w#!xR*`@kxJ!>grkHit z1G4nXQ;A;|WHx8peOx#KC-Vi35bAM{304`~qC3`^ z`iHZ+4#rlF^mPBc{|{IHHzw%+(DkYW87W{!gpliiZ^FrLt_>=pc`JI66B(mVK*sb> zJ@)jtqK?mJQ30p?7CeuvTGt%+^hcA1LbpN$PZy*V5y*fnlZ8&z0jbZnHgLp52hr#Y z@d1A#tBUi=N9Jg%!~E4p-iWHbf*?B5Z$AuYG1cJ!o_1|>4)tUQ49y2g_zF_(k}2rft90^XOd*Df}8nOgG+58JU~V(PdO;psSym$)^-vwPM8)%;?T{yLxW z)3EV(B12$2a?Q`&lWWU4MMY84;0)mGqt^=#(59{;5l3X-&2&+(V}>p!_)>Kn`mus% z#(EyZX|)-4r0MO3x1Uk?e^UmF)=aIc4W4B;cd$!nh=#r)%vs1 z)wD5pwLSm`U%nLOBH?*7IZ|IHF~|c{v9%ibXhah)w?#5V}*NPGM0^ zIs^FEtKFB=jq}#j6VffI(86P~I9;}{M^M|EZBLdq(zLhmnmtHVy;5aA2_y+uv1bu5^Ejx~?ZYfkuglm>sFd0i5T9X; zo_!9`T*1nG0hp*RAF#8wZa2VM-)*(5HmX~(ml}_RRj~Rir!Dix`^H@6v0l3oSd^*B zvUTI!((`^~suWvXM!Jmg*wJC^U~dohw>|F&>;NZo*)|)-w>u;6xAV(c>RhMXu@#mh zn+xHhIRg+9c&DI}PJSC0TXo2~0JsBJq6j?dAA%E^&TSTISgG2#)s@ON{j;eOrKQUj z-FnNmt@S4FVu8mLM{uZm&ym4O8U_Km&0dw-S#v%9lVpKWZfaB*KmY`&JXfRTVg$609qJX9L&zN7S}}Ud`?5b2oPcDxbT2cA0a{tqwq~ZiU#&8y8gW1q12&g zVW_y)xHdAfM!-a(A@!>^WYjccu3UK_SMrGuo`>tZ_Ohaa^6wbxHLiMx0pXk({2{e_ z4_-sv6Kfn&<7HZSa2H&o2GY^OD>N2B2ER{hoI-meWdA081`I51tV@JZmC)1LxP}p7 znv-!F3rM3bQpgKsKTB$T(ms~aYBkO%9m=SSaoQz(RMw~BEBk+mCr@x^Lvd6900|EO z0E{1t|L_!!X2!-&j`aWfWBkWuWF_g?t}~#7T$5k&srQhFXCn|0RWGYo zH@)8rA=I!MMt%zICOo$yL9`DXiKl-`t^W#mv|t?3TqXIzwdO0T7mlB>&(QTASbLNl z1od7Phv*z`D}I|Zi!-8jKP$jjw7QyTdf@b|uz01)A``w7k5gz`y`(nn^$LNRJIVK2 z0#aLdhW)B=o(#_G*9S7)Qh>PGiejLbBMjf2kK6{+>%r-yxH*V(Fa*w1IuqFPZU@MV ztsI_FjqO^QncLtnfi!bd_atJ=3(>CrD=tX{lVrkGOX2b==y3LkfU3aI7i|UBPhVK_ z?H$T`yrtg;PX645@W81z-!<3+Os&pSO|tNmB{%LA#KCbh=wT5G)db-g8`1k21uAke(lI zkkRq0AM#hC(o5i_Wm@S%Vpi7C0J}!nhwi`7_peuzj#dp$JM313J-VK&N-ucNSK5_o z^`IRL2ZRaE>NLrk_X9`L3zdrN&Uh;9UXo@J$yr>16W`az)8l#V`LS*;pZCY@=gzfH zR}T#Rwa?f6eJ-D_?w_5Q+iwLV5#6uH`;}+DfoFVQudigroq4|ZRM*~~&(8@ypYPv6 z-jJLsv30$fBl%J3VkfC7Zx_a5!~iNaZ;WuL&$_= z#)F8v-1oAej_Q#Meu&FGt{O5gy(1H{7AW&js{o#sYZ9uc5JSe}h6?}oC` z5A%-7SXnzXO z&R7mBe@2t=6Ft~ka=fpW>lJ*hACt<}biM5>bz6ZOsKi>i9MWk6?48AUNNQ7;omu|W zS98sA0!U9FwtI5AU1Mh<3}5?X*!N)K8mw&nPgSC7uY=`!IL7-a9y2*xu14jE)m2YM zeGf_1aTQfR9UGdpkW*!dS;5;2d3(yAsup%e4klz{g7dgUswid9hfDU@tfGjckX?QA z9F+Ln21&BhGjv27@F&%53BZMtNpP7R%<-kdqV7mto9fU%>(f#oKx7|Oh3Da)7RJZ9 zdTPU;s6MIR!KQ=KTvF*U$e0&JIeBiI-~T-~3`rqp8JftG&svs{b!$Q10mE-!9om>t zx)NgHu>voF0znG4QKr*_tmLyn5tMaT$t9eHP5WxovPf&4Rmhqa6xm;kX?JB(G@BJb%a~XC7MiW6_o&wogS=_yrg(RFEPRZDac1|yr4&ZTgW2YttIm;-rk%WvW-fFSgvV0uW zLxMvS5r5$UY3BFYva*!`qF@8uVV}ZJ8yhCFB)5Z_d%`}PH50=h6N5%`JnfPJ9Nt6Y zcQgn6JZ?dOOTz`QTCwpLbs&3K+FYWfS$S|N0QZI2`SR6-+}$X?9)`By9vG^_0`y&V zy-m*aIT5Lil#edXTv+VGMIe5mx7J}aGG#LLB1|%33-_fik!|wh_P9sf4JtY-v(-Ce z?lgW&5_Q)vWU~#o(D!^p;x}cG)nD+;3YIz1IB-uxij*v;t8A%K(p06v_6D4`NX=GH zQxQPn8M>JScVyjzB{?TPgmhK4sdHg9Bzs%n72!bnZqKIfb0;@MwePX`QU@vf?Lkp~ z@FsXXY@FlO~_~P=gP?iE)Tagu+YFfB6=AXKLQXW0zPj# zN@kJT6d+rADJv82`P$oMI5dqTelqJs-bJb|SV6QRyxr1^QW~Iw49H&~wDBP^1~!Xi zDbtF7QDjwbG5<0}51NgFfe|)}BCkFXCdA22itlvwuWZA^i%U1H73HVX;|$p(xEVbg zn-7+Ejcnm0?$;(R7whu&Xt6=qXwVz(O_5EklN@JH}Ke1Tjtr6&&Cn z>@O9!m1PN~bnkUe&8B0xMI>l|YKpkB>J&(#S_q@${UO{tc`qjXM{TmWu!X5LNg)+F zgCEFl!sDS+&lR{7p zNG}=BhRnXEl#MCb2BJ0K%%Zf0!ho>2q#{r5$@2;%oXG5s5n4Hct>B-FfV2S3Y`EM} zC5%|p$<=@H*c4-Si2sFJZRdQ=LtP7<-MAeVO93=n|SZNYgzzs zV%7vEJ}IR`$4|>hZu0{RulB5{<m;kpWXGJ^u_`Ddu$M>#Q1)S3VMF>ySDW1N1U`;poC#Q#ma+RE#F|y#I|H}_``E2+BWt1yk~J@{ zwSOp8piEgrr?f5q^TA0n?+OsDMc<;u@AkavG* z8+hmv^fLiC=mf^0m@%0)*wuRAcC`B7jZf5KhL~c^_%y8(I+IV8;ciHfTxrd6n=x{I zj_(5Q3QM~#v5uQU`to~sC6uV-^1eEGq<`!;T&Ljp?YYtv?Y+o3>4YS>IE1euxlm+D zFY4IOfe8A+mW+Bz?DE^DTj-)F5F$48jnv-kY*W*6{suZi5AOQp5aQ9-hztCdlyv;E zji3hj6>%bB%#U5NR?>vaXXzLuj<>@!Neb0eOg0vEFYS2+g`TajwmdpT%8oRpMbzS3n7e)m6 z>}=E~hK8dd+^B`&;AFOb1i89Bc_r0GfKK0yrb-HxCyH15hT+Z5pMfY%MXa>XjrcOI zncPb8MY)xL{Wbk0v17O#R%t8xIlUW=pCUeWNtB;FJA9X+nLJ8JiQ^0`v;(#g|o z4hD5$@~_uX8X$#Di1=JH;jF?40-TEH0D_)~*K@eC0(L>(+kL)424U6=jt~GTY(DU^ z8z6P5431D$LMRu}#!ra^wfq1=NEf?&qp*2)Y8R4ZMYRUC^Mt}izKL8EpLm?ImRQwD zz*(*ctGrUDkJ>AEe$o0bBhYcj060WXLF+n#@|LwLs0zMI>JoEnVZv>mapU_er)X>) zBA}!~=dKS&bTNsC`y8z6&EGVoyKk}BI#T=;Ikni+8HvEdm6_EP{3Ml`>>U&!6f;1T zbxleVsS>@l_)Z-FOS*@!%HZ2S3&@bu%JsAKB5mimTxDJ7W<*bX0WgCfS`!^63*)LN zN*QHMGo*02Qp|j1TrbPg1EnX;i=q~`{1z*mbeGR;NCyiYZ=)7AE1j6GsaaWJ456yN zSE*o$@M}*utR#gGO@8eJQiu-f6R#tTKiy45M*k*=h}QO*Zt!C@{1z79kDdM z-95vvfBpXX2L8usmT6WbGN}lyXL1Tp(HIDg+n9NbW$q6C{wtd8MD~Yjh!(AkQ* zCGSmk3yJ-jc_ejL=yZ`ausB9jXeeTl^>+;QDbujg1f?pi%`JKYlS(UO9LHnJmrK_zN!mK~K_!(w zQ)OLgo2AZciCqOHcvN2QLM6>^H2lgd+CE}c&g1S@%XcoH^hsX^TzUlPgQ&hPa9(uF zT~-jog|{QG_RNAC8viiL0<91$!&@STDfHMjUFJcmkbCsIGa18Dw*578G^L0OCil#z zZ?vbaJ*>co=s3ogRHnhayA;2LqY=ksuWkQ3Snp63jcGsV6p;qL5Hcln4kVI+Cjc~x z-4vx?)6J>*Cd~=Bk!Q5A;?S7p^!q}x2qslAa23u zwjij&dzdE2je~FdlEOdv#<1#l-lnX0DhO0ewSyeSPHFS#i(oYZ6|L$nWcdZToRO^B zgLYZowx+9qM|~$j_d0c1>n7wu)wA~GK=#W#2-QZ1=Is&YvND)WYS*-D3VtkfXtlc- z+DHov`gOnPPF{#AqhIltp;jv1L|0k*cx$STD(|8kwC+Q%*SJyrcbxmDTIPe|_k>N? zUwcQ13!YE<>aj0ujSD^_1JK6f+@&~*-*rWbgn*Ky*#h{A{ZBkpsA~*bwx-CbOtHemo>y^L_LBabxHx#JpO>B{CuH8*wcW~KBuZQ&EahB@og)fwHt z)d1x!9g?7A;;013R5B=8Cz8K2;$ljl>!XWrsk9oEWp^IKu}Sr$_JgB;yMYo%Dj_hH zZ%*Qd3-ICe<{@nxs8OYFMd&G#GXM4qzinuE;q}->KdqqlB=4C*dIaerLYJaS#{FGx zgcmjZejZ_?nH+cdw=hU<7=wY(@zw8x@XM(M_%k2R=u5%e5K_7`D%?WWdx zx$U+Z#(s7TO$_cl!MypDa>X!lXe*d+aX8Ad!~)igT&&goO|AFj4xMY90zF9Gp(Crd zD;_z`l=Ov+jzL&!^RQBZi)sPsG#)JDgC^5Z9KVhMM4T8*p|tR`6xmHnS0Q0YyGkP; zh5??1jV!?2{Y{e-it}v3%cRW{Gg-@dTqu2ojcfF=fH!$iH&`TBV@ zG}Fn8P|NY`od?duI}417FHW!nPUVabO>$a&=p>bO*mD7}g)ULRxyw*R1BXF0#)ZCV z*iYKsOXGw!B{C1#MoJEpwm23}2T9IEc7a!lRmyIf4c@iIU6grAJ5oYl_Zy-$Zl#i8 zR|MfV6n%hItMq04M4`wW{AI1?*Uxd)_xHc@L{@QIZ~+W3qPoUwz!2C2NdV{xac=s1 z)OjhnVbqu^`x{!~i_or(RXjYp87Ay@v`Gvwi5&Y|igYRzkrx|ia2eWH%9@mzAJ5Ga z)Ye`k21xGVbLPfPGa8MJProD^hhk?Gce`{>w&cpw(j&aL*(55h_lU8{GJ`>S-%-|9 z^FhyM#K^IlntE^Qktk1C1?gy0%<%t~;9X{MF4N*ztUS3O0ke3m+8G;AYVWx01lS$G zP|Au2wH|H=cmuM_-P;9<=LRqbl6Rah0?OZl{a5F7ALeF$FVFx03Vi=<_Lb>BvagmK z|72gm-{A$H>uERadBe1pQyK;^47Wy_i6+9!jNB9ENvPkixe_i}5LTsS_6k?Cj=g8* z6jWEhN#~f^RZmKWNF*8dU>B0j*hs&=E`69rMt}Xp>SrOTFQc?QJs#gS%_~P^Hk_^y z5Ye=^%k3_hBPrJH1#I)Qwtr=+qYL1CGGwf@2F+0ulA;z!C=EnJ0=Wj}qki(QXi+=n zElOSXxI=alxG$|*bL;*ks~A}YN9HTCX{xjY%Ysm@F!E6-TD(?R)+d^RTi^*wA#h;4 zlwOSjWZb>-iUF9`&X+_4BiY9jcj&i7B^SaSRlX=82lcx%1Gayusk}2unRx2w)zqIv z)$IdbUD6L_l}UXh-YkLQU$mGc!g{lHd~cR2km?3|sEpin_OKhg(o8sdG=l-(2w%2y zs^bgK#ppO4afBg6Wm|LIE^XSANWT~cPgB3aF$+*sMS-dJK+i2~%v*e;PGv&(M z-rQAg`yLoHI{%$$-H!cnY}@t|dei-CNwVD}3rH_^Vv;Yw(2kPugje)y%ebExaN#;o zvqDfqyumaDG*XFCejqqcyx{fO&YF)Y67<`QdVIjZ1~cNOrmWEh{OrKMEF+rqZzy4b zj~Xo5Mw`QZ^VyAn~*U3`S+aUU^4ED1#7i^8^=yx$XCKUTAGPpu|;k)%T= z_QN*mnOfy^@$qw?pJ$$PZGFF9jt6HtleN6v-p;??7q-T~U68+d3E_SDc)nlQK3-lg zzubX(O87creI9ppS9bV5p5A@mM@mCSt`U2_PF5;sTH(i5Q;jZdnsvOxzHd?6cUmQI~^B3Aw)XDw`oRn-kz-fvzv`cEPDH5CV@3>%{iC< zL|ReMlLORK^i1ANlu2;mRPQ||DM-1>S11(3QW?{N;s&p~-3)NtmwDXq+^I74>bkY5p5>il?5NUE6d!0TH z4E9uATs&ow-0L5E(WD@6E-1+X44-X<0i!8#h*F>bcLI+#S30p-;#;7y7#lD7{?Ovk9?k&v(?&X=we@HpBICS=q$sGR#8`!9* zOZwv#+~qVxVOv+7VV?A{k`NW*VnC5(356&#AeAUHIF#GXemxdka;*^7c}J(DH|LQW zYS3a%TY?^`Zvq;F#*OQFu3VE?zO>vaprwL;;{c2;D9x6!=fy7@+TgODhE|H76tT{NwJy?YCr+p(oA4bIh1rHH8A|90S zhy-_N6=Ou&67qts%}P34zh2-b2m^cH`Epi1go+VrCSo^#k%RuvkSwfbv!RR>?}DX{nf47Ozp^n(o3dgCe(1vP=V5c-ouN2yuxttwNATFAci;%7OD-qaw*wnJm)PMTWu^mt;*pq@}G5TNVl6vm8n0UA`vAc-;zW5T_n?J3GP`?|jrd&$-EC= zH8o;g^Vj+75%&Z2$Dk5N1~fekpj&KZ-Al+_u&)YL7QIPM5P%25fMLQS!8lApcvl+Z zHx3bdoF!0$rKj?#oF93~k+X<~2wE@^IFyB)Wk(2z27(0QFbf*{Io;3W#x=G(KcrO$ z{SmVaMgisfw1|$MY-AN>x?aW@YjYDNqF;fM0rh=%vMyPhxPZG`kvg0{)vs8V>ru%( z>e4Ev)y{$FfTJds93WSYGEzhq90&n!G`uQe8Y`B3pR{ZiB#u?!$|TfvDF2l%)ts`v zp_N#75Tsmha}$$?p+s}v646k#XCxZy=}^>CbyiFeXS$$`f!D~`(675BCkx*+k0}4n zj)ri;V3M)fPX;=fVgRK|{cfdW?M0o_jC;@RwXE6GNSc=K(+OK?9y*GB(rPr47@c%p zjz3T|l1#<}5TPVN>&r9i&n9rhl1PZISv6~+R%YOm`cP{TDr4pK8Z%OpV8P8g+D{Pp z&%lJAsEx!4cAc8Gvgm?& z^-c*gTvY^YfWtum6%B&t2)Hu`gt}6akW~c%GmOv{53+Hsit2Dew@9)A+QR6dB8KZ1!&a-kGXu^W!>9P)pst zusK=FDy@g{ly>SBkNcd$jCEBls!F>hFhwm#i?7b1Epek7+FJiGdRf(`-aq61XsI=? zIT_v2=&->QMeXYjB>%Iw)%gmmc*7r!RVK1$UfHkhk11Hd@&g4kMD5trZsT2i8Z;`h z`HsqaZ~TuA^*?ta+)+|cK#T~WwMcIOF?5SlMr<|O5RSnoPP}EGf~5*w-3qfhs3@$< zF#6P~8ahF%_P0%I@r`Q6asj{x{p(OcA?8(tx0Gg7^PACy?wYkvS`M0uUy=Dw;O)$l zcHag^b#*>xcw&7%^SOh_9@gn=CI7Wn!^1o;8}&y7yZO_y|3<69{IA_Y;)ZPi1InMB z)C*s;H#*QRLc}R1!=sIci#zQJ0W5Q=b&rXLZ*TCdjv;j7T}6(==j>RYs8Uarcv^Mx z=xH;Qpd>#uvQ&@cx!7lS^86w98pq$5u$Vl4g$rZ*gKnl5>&XB)1OlB=DcdWQhO$X{ zZP3!NSk%Gw5uRPm)JGQ3+_t)ksF8zqeJH6Jc#!4Y!TJ$`P-&R;3VEN12Kjq<@2d~i9!jo33amsa4GCYff|LqGI#o^eUK;t=-i!MI7qnN5cw33m?;ny968h21 z!SHdDF+92(`1OeUd(s_GzQ|-}jL=$ZG=D)+cUBY^`5O12t31iA>_S*`CrYr>O&_>E zHh#H9XDF>gGD2UTD8J_?+SAzwW2+4b#?O_8HH@{v&Xfjazq6Ccpr!t)${YY<9WbHl z%;2(Ze6fKm;nT2t0#dNvkKB#;0bq`-VSEq^g_p(ju)9_cMWf0*S@^kdj4bDV~*-4D&S7zL|J z6h&tVH<09qR+8+dIeFixN>$k7ULm!O3JJLCp9>wkoN}|g7+?AqmI9WyTR9D77xUU8 zrJ=EilYg+})huVa!isb=1z!x9q`}lynf8`ZMtH8xlKPPruWuC&gHxcW-BT zkP%X6Gx9y3%W}twiHvA~TBX-b;M7qtO(ptBt_~707WCF|_=`;Hv6= zFOrm0*=y^Ce8Fpceg$-@fChVubZsjRFR<3+9mYY!^Me{}4geGc{NT_BN;dD2K`IH3 zaqb`4?*9@{(kHp_WBgf_5PlSi|IMnz`fn)7*cLMUXta~x@M(4e{S%T3;wmhbwzgGO zTs>VT5vpDS*QZle-*;T4GguVq6lm+fMSVi>S^2L@{Kt9O!-y~SZ2M#hlI#(-S&W24SU@|j&7PmX zSanbFD}x^qrTiPn)@1o9hKH<40I1^VVC%D+{n~Tev)$oQK(O0z5>(%OqE;Km3%=A4 zErG@2wKen;dZUM&L{dmtBSPy72KxK#>it?rfQ#u5PX{WPycRh)Tq9r z^$dN_XH0%tc+!_?y1_DiSX#cAbZ=F!{d~W?VSOpiLawt$_JU!08N%*VuKaq;30}!d zOK|E4feWxGRHL7T9u1oFChuCSe0c5v^$HI#Qx8h{WiX(43eyC#W!eR=iyA>Bp(r=a z#4TV5u>n_LG!*X2U!Y#WJPRjUe0{W}Ue&EQ;%+c0L8kQ;iWwlR?%@6S(Wy3*>rtD- z$LalY@vs|P8jF|B`_X^X0P(DVl?wWO~^>CgV%jdc;g84o1jQ{vOl!8jE|w6C-N;5=Wx$#(op-8cCX$$reS+iFdnFi18;(9fbmH z8*Z5gQ>zb~Sy-oyttHwuROr(Vu=enoRs)=IhSWaGi$|8`FQH-6RNDf;%8~{tH2gh_ z1OD_q(-oTFNKGRbMYHzC1an!&&~O8?q0}UCgkm^RmcePctyM(5P^V{*x(g49;WS95 z_%+_`dKiZc6Uon|kQCu}62RU`ZJ>Zk+6|oT+x4i9rmHjv zVTUjzO|}=ngnFsb{;1fAww$=Xrw~dtVmLg&i35> zFsO+;t=7X85;%>?%(egc5R@PkjB**wgYp@5oP{ zQlIGr`>5rAw)P0xjvxB=(9ugVDxVs6R%c!hZF$N;6a#Y>zVM$sY4u$qKkXLdK|QFq zVGK23_@G($1V?gc&I%X&MS-L@1o|Vy<9wEmT3a{&>65dWB|Yh;VZI!w=hOFL#iJ_f zp_tuRl@@*vgNO>ds!xc(0)*EDPusiB^1y&g5Ftcbfccx2XF6XgYd=^Py}}t|_?y_G zyiVPoLuTTtwA>Yl3(A;q2fMK9P)?5^FjoT11*t+qfF*$SkGjMD3VV2J6!e-15!>&T zd?TCCAn{2a$%K?%oo%XF<DWf*Ybez(1N{2b-r>S{}tB2VMPG}n30i0GUu1Zil>IR|oXH$~iyAk7uecW9!)Z>+% z23uv)Do-F7hVejPHMHNYpL*}b5LF6AH3N=2v8K8elGv-B63D8l$(b@DDB^exc0N2d zFzm<9U3=>hbgQ+Ve5pklnHVku#^ut|XIH<6D29UJD*Ui<&2ng*A(WfnuwA=$J8mO% z8CUNZq*zFAH{(d>Qf#f~#u=Sro`j&gxohhCZG5-TIJicb-{hSHExdt+X1mx-y@mu z7_C3ln7qGnE7Ily^kR%C+LPV4VrD*cK3adw=sETbQ@MeQ(Q^sru{;>fS2-VUD|XF( zK27tm;HHc)3^(Xv4JuP50~T;hN94 zq*~PlC2+J6o!;|8gX*TM_!{VaO(-xwfpAFRtRWZfvnNV>!!Q=D<=UgOO0DwX5oXTp zm0`K`W+j-}qEG^FS65b`C1_3ms5H6hH)NTn0*(zt=(-Q-rabruZiK zVG}trqB)J?c^jiTHLKqw+ROy{3H%MLm{U5Qm|!g<^C6$uADMA}f;F7WiKqt=@6yBD zB>FjJ7*+3G&+{#maFkHRGJsP&DaF>z1{Di?T#l~$zVwTW@zQ{YJDpZg;-!nM1@`x_ z@=8)GSOul1DR}_l9VykIsvU$DqcoWy9#7k?A--1rktKq=9~edJX4O02n0E?jy$1rA zLvG9?_uKV)7c0Yrvw;LAowEVae2F0F?@X9$Ih`eOG+u3yoccU~`D_9Xn$>pE-2UWe?zKd2cP{e<{6aLUI^#DE54b{Osqui1?+ zU7GaCCIfj+%_pr58C#8n)~KDBjuDlQ0VRwAZ+>XXlqqdiZBao! zV8|FqOuUYA2!&>%augAVn6&qkq|-6E6mR{FMNsTpu?ry7JPM*L<19_L;vXAIgXpHU z$d}o`Ig}DyUqS)S0HZJ7gd-HTsTDwIGC&b!u>=4#7+#$<5edR{kF}USKr~?shL_Ch z@0Sn+u1==L$&c))H4siBahCVT)R0r~a5X;U5jL>aO53cg*2+>GMGn>pxi72ARo+-) zl>&V%0qV8ZJM7}IyHQ4J!g!blSx9c^NKzO+5lsayy1#JToY76$2EVaWd3~lI7!42T z1?hDO;;+Eq92Ejsw{S*6p3-JikX5!*$46~oK%`1Ti6Gi2n@`Bk73{!BDyM0hPyaL$4;7IFCs3Xoia zPiti#h6NuRpr)kE-(LyIAP-6kbwq2GpcG%ncoPv6?XN~+W#u6@mxX?Wvuc!9)Zn9F z5}a~TjwF%vo3tm5eg^;5fK8~_Zwtj3a{FahBn=) z&q>8-UZBcON};8+zpQ-`9a)hcfdZ^;7G>a|d!-{CaUm$IHF`@kx|xmY|Ok|dvd zBCetC5+^#H7lpV2ihVc)tzH~;sMEAJVQkIoK7Wm z6jJ1N4^@`%hN-1NU#NbsL%s^Z(I&&*AX2wH`i~Po5!@sDC&g--8a}16u6csCG@q1e zWo{=r60n-0NCIq45eW%4&fGXX6uH*lp$whyg$ti-lT<+c*`=!P;k-)9F1=am(khZG zEs_Lur{mQ!@(N77zhPuylzoVdS!HGcOH+#!UYBX&RYS7%svQiD)%bDoRXwRu#2vI^ zBvHsXYy(`$XP30atBvwWbB37F1;I2JFCnS0tS9IaDNK+tfVTmi>X*ROMC@j0FQ9XN z+xnit;!qS+WKnWN?ga$0AG~+OysQ*lD5YS=p?iyY7eVBP!J<51-MiTtERWQfmMoH@ zXPAVB)YOqs>MFnd!=^!#Py!@o1_?AUs4Tt|iYQ80D{~n9ZG>$Uy(ko6!3y2xSMy$G z%?&{3rQrF3_hs9a)MBT#y?Tej&DG=L znYOEKEmyZx=?>(FzolJqT>k+|y}lA3Ebn>zHz-+doSag1KH1Ouy5100(`9IyEQB!m9vDCpi@ z5(4-~Jz~iK0D$rzQIMIwgRzm4lY_a9>A!-ZCarTh>^0Qy-{s%HccseXVB(o&6@Ds7 zMjK`eu$qF!Dk}N?J!zEtn64&S{Ct=|t7LxJ(e9Zy>Oe-Fs}h3&fif?;Ej{-yNxu2V z)6M;p-7yvI%JDd!S6Pnu$B$gc+8sSO(UjJ5aW$qoKbBGo~7V43s7EN4>-!GN) zKKK^Q(h||)5hVpzvlvW*x=$Z(YC0kMEr8V)PN5+(%wM5TF2vkX1_|~;k;JH?AuK#( z={HKTE!g(B5{QNvgv=#PI~ONyTX=~^tcz&NNEK_i9nSBnWwiO@-{N_l4`VWJ^9#nK zJUS*bc}98uWhEj}fW$d%A?PKy6ZS7pnKdqrrIp!T!n#A?QmVJ6-%9T~puHYfzGvKA z!|hv|uR}hLd-#sj6SDT;-8C)&%oZo4LVjr5!32%rq7aOmz(+`0O(}t$iwz~_~aP+o-JK~HcfYBm> z7psQPXrYddPup7Gd)y)2JB(saU1v63t(CSn4^XK^w(1Kq+k#~emj(&Um{_dwHIh)z zAg*XzrtdD!@r~z%lt1Yrj8rQhAoSR*L7pt0Bk15VwKv@_#x*wzY%+r&`bsiKvg&WLHtsvtHE0}1F;0ZYb8&GfMo;Ye z=-f71y7_5w!`D5{O*42PEWO9{3BC=S5xYF29NC z$VGEIi%;>Gks|ZaSN@hH_!?i3bxk!bLE zl3^{~c?k!^;T2Vkpdl+qR-Qipd0+8cj?*MRmi|#F=S@6g->(`)$*@jBJyHSXY2Rj_ zyU&`kvDV`>cv6HM0IX$h^uSm|5onstHiRQn`w}@|-D6O2^*$y^iNemBzyOS8__8x#={jS9Awz?F0d&5<;^_J-f{C%7bEB-5IZZ z1MiT(taKOH8G4Z5yzhj|>10exXS)rJEzCI2X=n()yfChY1ISd|9EobyFCl+Mi_M^d zdTRpbKVfH5(oQRogO{f6t zXB`q{RBAa#&)c<1wodX5OsvXPa!MK&)R3P2;kxo0KeX%ET4BqY8F}GBY)}pcP}3Qj z?U3~JoOZ_kLSl~PZxtay__HBmpm;g(+(IbXc!8x-r`s~BofrRpH{BM2>$oEL#U)(E zL+#v4*DPi2RCm}6aA{7*0~UW(KUf7-HgaqFw&iuX%}H71bHeVYg|}ppd6rWZEGJ`w zXwLPTnJT3`2IWJ{X?d2M=yv0Jg}ot%s?bg#Fjq;NV0qfP6Y1%c(@0A1&n=eb=v{UF zwYnhA!%kPtrD?juQhOGeQFb*}BxsdKV?n5t%&ciYBh=WY^oUP;GjJwTZo~SKk5CSL z#YUta!MC=bC4&vxej~DG&n^nOLzh)aP?Db&PT*3c@v51x>m41l`ob{H%~^5 z(EZLiQrQ-;#@2n&q>aM?|CkrE5ymf0ckjL*#%flNH`>4DncNMD_k==SE|#q z3NGaWWGnO-yI~h{e_qi{+!oH~Izbhm5Te7`Y^UiB--NYDU8v*q3)-7n z;eov@7ywrKOjd8xRX`%FoMG>sIoMGapOi0_H$9XoIUuu}$^%R)g^?FAfv9@kPgD~=^k6#@T&=>1x^FPa9T>1EGDtT#z zBeT`40gKezcgPH4yRQbJuW3r~km-zYi{oGkH2NTCD&`8AZ#%n1LP zFO&Yn0rWhZVo`%Yk*cz26GTMt(TlJScC8 z@$#y2nFggifCsyq)O=zBi_sn5GU`oVi%_VVF=1_s0}rWR~flyCLoa$AEx&E=0N*+Rv%d z<{8%YHXDYQJFXBF9VAKC7PrQ2L!T67c| zL`s*~K9wh0T;O!(zbdCKRRy$pG763Ha$(+r(357iO*fd>mn*^0drZ5AGh<)-iOko7 zJaF#oi!>q|ZkT;3Lr9R$FFHX*xNEHQ&JH@UQ>TfaB}$balzXA!z-MV|%XyXF^C@vI zGeDfLnDmBJ7wbVS}@Zb$gSuxluB{M(^gvj7w!P6NsL$(@Sev>tTC8~RAH8G%n z>1|5}yN8=p>955HV z?@p%{_7r(CLBX#U*GSN`#tRJb>4136jUBrM8cN{n$8lL?{f#2^gnTWH3VB5(@Q||k zHUBq0$42GQ=E8g(7nAc}eL3FxAx6RZ(;dPsO!bRb3s3=6%t=LP0F#EuJoDYP>z)H1 z46*pcXf^{GeTPlQmqNmHQOu`#SCzBP_m{SBR_<-;mR`=X-Mz=DDL7|Jv|ye4IDJ-) zf8tGcrOPR?`DZ&{7uTPb^2@znF#^bfWzx%<@1a;qtC=R`#QIdvW%xmgt2fPVO`W9M za0_+SN;_7mq>`(nFT#D&NFcRp>)=*{uAXkvX~_ral6Q^x?38t(wPR+V{8X^_p$qQuL4Qxk9W8C@O*ewT$D>fxKH=T=;AlJC&C^{+SHy(oSNQDl@dow zd&^toi-_8z9g?+!n>9xrZkpd`sgLvp@d@8S8D$GJ!>S)C-MwKLE6BWcY2ulrVM+u_ z>fAK^yKQ z#w3&9C%Wlvm#}9un~sfDk1v+fW4<<>E+y*I{Luun5+;ou1$Arodm_ogLm!%7RD~e# ziu)@Fq-cP;BCU1vJ7gWVpWxp2KKcFa?&5OCvzd+@zU^&Ic%+Gos!jZEpu`&Cb=m3X zXM=BLls!|X`y#u@_`nZPdgi`d6#o~cxuJ?3x20MQH0Od*kWpkBbvulj_Hf?UK?pkuuozWiMy6wXPsly^{OvW{__kh8W8K=zyaN zBS>NA+)bj$9H(}b-{b~!7&Z5jf`#0ySZ5&VNd5qsPL0g3N-AM z9v|X4Y7fA>6bI7ZRWcxr0;MAM^U&X;QT_YZPa=R}#yd@19Z}*%e@gjw zagCZnZDBp4G${U*^3BjnO`&!#9#I%oeoFb~Wu&H18`q8~ma0Fce6z7pQ>cAON0eH% zZxm{m5;cIjmwg22fP4cSb+)Oc)CJ%pY2U@arPSqMYQm4F;Uhf&Km!8+{^x8=E&uT_ w^SvBn@tyqNM;mJOj~{^V)v?y!sqO#!Ie;0{QI^eLk*4ebB4y=m!vA{v7c$miO8@`> literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/databases/数据库文档/采购管理(yxt_pms)1.1.xlsx b/yxt-wms-biz/docs/databases/数据库文档/采购管理(yxt_pms)1.1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bb508e5af073e74edeeeb03c83acf2e083ff2cce GIT binary patch literal 17674 zcmeHv1D9o6(rwySrES}`ZC9mj+qP}1Ds9`gD$Pn;FYmqmz1v;gZ@eGy^~o`I?i{&e zo_*GyGh(e+5l3DM7z70X3;+TE0Du6%j10Cu5D)<1925Wm82|!EOUTCB(a73SPub1Z z$U%qJ)yfh-9|VXz7Xaw<`v1QE7mq+?;+Sk7J%Y%C_^Z$!jpTYQKLpFUe=icH0&n+n z0;&0H?2y+R5Ap+na*(J>U09OqLH6mDp=d%?bpnfPW#z~UJ=S-S$og`|h)l1ktvQoq zeFV|4Rm|ZPxLBFN2bY4UNkGy>D|!kU>w;~ zYyZg4if%(vX?95IOA{{XUu$19;wk#1M8~RJ>H`4#?9<(|Ot!G81{I%n`BTW0lWc3z z)8OrTXw}GBqp%3Zgm%Ua0ZPg@_msLi4K0ZS?Er`mj3{R8y9v?6Q@(9T3_mO=H?K_- zf)S@Lx-*OZmQhT;&Yq&Hyk3uz*q!xujdKXRnbX|X@`qU=$r+D@3jVvALX#Y6=SG50&mHJN~y)s@#3YY;Q_`?5#V7!BCjgoNI zl1}7E#_$c0A?;0{EiJaN_3c4az%j28*FCewCEG3S&bYR~wE)4x87Wx=(m&I9u1&R9 z>aDpM95KOOH0n&e*N@P${IueZDT;DGZ~2ZlymBW$ke1}b7u`urb-pW~7LSDz;d7GFIa;c17^y zh9zG$uZXzkyZ7jE=;#Zf0WdC^=3CCug~g1bq9{pFI&jv((-}KxeS4vZ1G3M0nyBX? zeLEw3iMlo2Nd5!E4<3U_wJA2F$<5m5&r$ey$&iJL`zQkg05pID0Kk7<;c7|eVqt74xIc?okuK}DV`R|H z=h*x#eyTu1gG@c~R|C{5#Oa3OWq=JjP@vNs=yMbX6C5!pv1I;0T4d4CV4^;Sg30KL z3Kq~TQneJ{WSL24vSz7oV;C{wGmH<0Gxr+_xi!xVV^%Qi z@E_Q&YB*_NWn472-$c^qKX3a{NJtXj%AJJY0C~5Sq!M;6iY;8ZQ3MY~N`4C`4$3!gmi*k`A|bLE*K!pUy2dm!JwZzC#-(rmK_0YnvH?dlxTmBTbTPL1LE=j;Og(C}lh zqMJWZgZ<*H;+@{)ByZOfc(l1wYdLY>6|vaAFw6Bbr>ay3%}dC5#(s!IgZxZmoc9=4&s%#pCYa7kG^URYY&(6+b~ zbaix{rZhZ#tp`H^!L-&yGk6}*d4c**0`%ieOu6|KUh8Mf!UTW-{1o6{Ve6k|_&*^G z@N?ez8Q=bQzbX}Fr26R*I-uV}=v^|LQ4v=h=?KqMPT?U&>M7Pp37EWZx3DN%b<`K7 z=zwj4-7Y4EoF7==c7T!ZdZw6M`923KomKhQH#Om> zQyA}mv|<9*;g+-T zcm_M-hYXA1`B20=?B}Posa*VY6nq(_=vup`9=p9T-WwTO*!q0Z|L(JMB(~?|kpTb{ zeE{7(ZVK!9woR-Zq?`eE01rOPzHISCYDnLv&>xU zn8{G8KB$2)SCj0^1sA#?laZ!^!cO10*Q7_Z)d3s0N`4l->IvllaVR|!>QY+eBE|dt zows9DoKxkfdKp#RPQmv_n4}TzBeKEZFP=_-DN=|r8NKDoFhyM1QA}wloV}yP=pi?V5)#p(x3*QZ zyjJJ1w|t_I=+6bH0U;{8geUUrm#{|hBaRHc`>ZC9{h~CPgg*5BQcn6gu+3B3M6#Ay zhZzz#03{IJVgMFhBv%VE%`IzMcjMd2YJkIcwENA;DLLMYH`X^xc~bjEnvE=4pW$&- zitL@a4m$S_fnleg-Egqv%+(rhb!W{e$$iEkLIP(Fb~-@lqJ_ksD*C-BT#wB*c~``_ ziPPkM4~ScuB`PV=%(@;Vj=MhILh%;NDWbASt{_|B~r0-UJ= zH37@VN6e|xrq}T^6|xXl^B9=1rkw9Cet9-$cz?3*&qJloS~M01+*?vEpZ>R}Uji<; z#pmf45Ve4{>f?s7las&R-^z&<+bh;-c}Vc1)t#huqRCNTp3c{nYWQk$e7xUpUw2=8 zcwb%JB<1in-=AL(*T&}Vmki#0et14TtW90`NN@SPUOkyGcxHU8@OnMktopoPpYpxC zyglFVpXRJIKat>M^Rn7t)UK|T9MauHys^HxyR9DjTsv%L^YVPWQDm`B;eC9*&lR+< zE?|AeRvvR3=GcTfsr6H;Pw4%7o8JZB%V-y+kI&mZz{m%Jh{WXyerKxPg-)KB030}A$O|;(E+uxh=he&ClW>=oj}D{bHQdPQAR)! zx#E0DxvrSvcK1c!npHYZQR#KUVduy($3V~o7>Qxy9zWZg;*&Mf+vM+X`Gf|%Axd^%;^oUvIsBbWy4 zN{Z*yK%9W3az*FTNtq$@d#Dpd$zjjB2GU5&4+%i-!X|5ycu-N54r;I(gnl8XgUsmD zraR3xhpLtllCC>Wzcq3z#x`rtO?+D0=^l&g=)w%{l@<(@(c|2jhn0H62y9-W zW6lLu6EB&nb8?!3s)<3K-=@d^nh^xaw==t)2_&D<32-7gb(zyqqjy4?o^(_b1170@ z9`z{mGc!WS2bt4nkRS?@w<~VF&^`44x$~%55S))T#utM?ZC<>UZ ztO-3)YDf=VMN|<(EfSjd!qKVsuONz??TMWCC{(Cj9sa!0tM|5&Jp9A0ICF9id()c6 zs2YeJfrSjz-swm~RK$FcDSc>8I_KS5h&m=7S*Jr9Icf*kwa`<@F#f1g78z3{;WFSb zUuztR+sApWcC%vluBhB!^dtxjER1G?iTaXC9fq9D411>e9cXY4n?)zBy5d-&p??ej z`;1U-Tq6;a_&{3tk>9~<>zb%MU%o1VLL2Kdo8W z2^dAXkAm9|RGuu&#rI%RTtzau#C!oxMNBIkv&2Y4TYC{>_<(G7g_11U*sn}2N_RJ6 zZE@eq*vAMaySTX=6x;+rj0izyzd`ap<*@R&oijUFlBR<9xgM65gmAgo-Cx(QH9mMX z6jP-iH6I%*B+!rS7Cj8->K#z*ukm%go;F?FAxv_3t{oWsaMw)UTIZmh`v$0R);^wY zy~qriu*ZBmewHm%=OH`si-Wc8aQ*B(pl(B4KsmFlMODhJ-|-H?&lG#p&OLbIksXG0 zyDjdylzp!KZayNH*N!OIdcL}<*c6Ey*sC6^EGC>uW?p!CM$9-$K#uy!Oy&<_n|{M7 zi*c5{KPqIifH)DGKOr&~Lv*^G;aILb$M(8?gxV>Lo-}@U+KZDdO>Bw}le0*l?gw^< zyEku(J1J#X;(4ev!uN0WPvK`~TN(eP(ah1cKT$BQT-*r6Fxre9zXknaJpncDbf{0|B19ON zKZr&kNd~^)N=H!nnrRa2>ij!w#CLkC}OKf#X*1 zUzWhfc?|r1JzP}Jz?J&5Sg+BJFtv(hiojMQeVTRWpq_5~*9p70>8lR$RHF$c7wC0HVBQ zUk6)p28&ED@dZ`%_#-y|?ydEwQ>j7y$)W;Za8c%t?xldr;I?Qr1=YIy)$qN9U2EBv zsF=zZVm=w6CQH_n;2;|I;p?7;rd{zu`=SuU338K(*?jdxohgzz@3auO7(9=6z22ul zHQ@pJe11xYwIj=Ff-Q%&()N_~aLv!*o4iG`Y=Mu))$BpJ zh3xv89j!^4XhJ&z0yNXig88X!b=sI7k?w$kP*qze6a~(c3X1)-@QOGv5W;Gj1!0`! zIN=oj16*v0+vZ2A&3SnlF(%cDZp0x3vJMvkHOq@{pF9(WhjZQp7Xz)z)ijFbwq=l} z5@%Eae%9QSidsmv%Fk7u^R!FJx)esf9B!ZK;ZSKaHHyf!-VEiR_p;iAP_Qor6X4-Y zKe@`&Z13O>%dN#G_9Ouut!SI~CG+N5`DE5cof`*dxf$r(N``T{lHq=w)D4}VrhJtd zP{LU!^$U5Ihh5+-RJqF5aPGgv zAcdvR2Q2x^az&LxB#R7G1Q<)*pFyXAR6MRiR~wGM$k;1}cdqSdmeD%jSgnB9*kD(r z$0^@USOU<)@Ay8%;~`AEVBo7%(?W z^hL5FOb|De?%)fuB7jrM{IzDdsf8E;=%)`O9*Nc_ts;dI6fI4T>a^0sEnCFEQY;9w zo{vril8l^_!S{~&yrB4GxUim~uErr^Sdk_FNL5#*-%T)~5K~%$tU6&)k!G@feCucf zE5G$Eh2JXgM=_*Ky!ovJ#pfHBsb(?fsLh$TFz6+zCT4oEnRB#ecYj%%{XTQ>81 zmt46AYfon#{sdk-?&il|-1Hb5nkScP`aOtwx&c}AVhn67yz!bL2dc9L`aHW=McLDZ z^~5Dx-{HugUcOVIUlSQt_o_ammM6G+zZy!bS+r`*5ldeuwWMpljj8~ZMK*8lWC08? z?kqai6-%TNLyM8~RN~6!TDxP|_1`k?;EI~`^F&UD5*?mMg`^azvr145Sg7TUQg6c0Fs# zhNFvGrXmL`wDdE|kxQ^3NFBzNI1Z#mmoL72 z24rV_AVif6Pr=08R@i$!6S9|ES7ib|;{4Wymz+;0lSt?nT0X%`AgKsjTy!%mwKeN@1|vt7Kk0}{#_mWn zGVi|v%*B{5;PoFZYBr2uQ4@l;LOU)R6+V(rqDav20L+nTB!QEa(I7v@5eF2EkBP4+ zWKzTzx9jMDz7Qh{bu2V8?$!wkKSWVJN6q7)rJcReTyE#zg^f zDY|Kwmu|axA}>MxG_%ucL|{Nsvr5}m*coP3R7;6-2?%F$+wC3}?+#t>+8knoiK|RQ zcizRJk2j=;Et(LgQ0|~e*MuY}9ZUFQqO^Y!c^4j6h^a!e9yu>n=Bnf(?p$n)p3AQ0 z5FS=d9>``fs$C(Numr0f#iJo%!K8?>zpLQ^ZC)~fn2$EBs^(wGYE-*WI1H8&F=t#z zTE6LMD6=wnJ)TkmTB`yMS-YAzqMATFCV5^q9Gxg;w!04hP36IS2VDVLsIe8vuz@0> zid2Mk`Qh`<(v&;OhF9Zl_tPTcs(Qs^7mB4D(@|FR6=X8v?91Gh49{PcohAhJ37TR{ z=ONt>VH=DEBMtGeUkfM1SCl&z!r$$(Qi74RG&}ZK=d0gz5;GW$fu zDJAVbuY6MMNFxq8msN?}1HMk)*OysQw6=Atw9Ux8mP9>J0Nq4hbo^Dwi7+?j@pHlKGI-DQnYbn{pTG|z0Dpx$NndOKXIn+d0j*K4I zG|)}C(sE~c=gDhCLpwk^`-}rKygN%NUX3L*N#5ZOIWzppl#woSH(K*ap=>pg^)1?973A$Rnv#t$&fjo>8xdq?~bM zM1v6ptM>q#at;)$1j`FDWiYwm{zPF-?&pb63Y-CY_*E5Sh*x<0lfO)+qHs=Mk>ZJ) zwoCQ3fa)OIR^LJhW$!@%d+@iwpMaIbU;DxU#8jH4tPbrwEm}n>Vq@rc_c)$rMkxVs<3Tw)_hf#!(AdYsq>ml3%f-23=+ggLJ z>r3c-G$0(<&#;SH$wKF@g=y}xma8cb~V#c5NjP;+ga7m9zr0btm z0`s3KxX)zVA6Ym@QzI**zm9(<;LbEAY_LR7x`?j$D(^Rq&!35+PL!|IfMr%oowe@R z@1tExvNtp)#!2sB8^nl-g$1-@o9+1di&S?M-_!XKQOZ7mY>XH0qj^Z{1%S#A_BP%+ z*e*OaJzDJV1Oz(_#zDWDjn!zwc*2($pv5zrKQ)ECL9ca^5ladQYlLgP!$5zW{Cc_2 z5#VARguM6VMdd2pA5t{t($e|{Qxn%b%$V8R1i1?te>q%G6>b0NCux#+7-z`sgU?4mV z-?Y#B;;$r{dL;yf7QaT}r6nIw9RUQ{if3uuD7278^E*ugn;t#jQthF;^bXOQAKN8> zrrcmGQPgNt=f+iYwBJc$pN_XT)~Z!s&^r4+X4A*t%suEzHC$m3)JYQp@#!!yvW*DDsCTIK|RC# zP1OUFIluKP9>dgwY?!pe>!F4dN+`-rGI9$TK&-*#8}^5}@aLyj%5ksB=Hu{sJiGlFQxb!l#rxWGSqt%?fSClT=Y4aG zr{}fz_I`Vs62s@RD}wPc_JH^CI%i^yPduZT|3#1c>24+Ai=OxOT2l44F~SkQUUs4s5%Nc*e2W}4~AAZ7L%|}Gizg%ONh{$Env<51C0ha z!xV{KrYDaq^)`V){Y3K|z|w*S2{il-vpwGA4dX8~!J+CpF7gKLwK1mB^!|ZbWCN*j zqHx79!pv{SWj2=KKZM#m0@a;)hz%w|GQ=-%uU13ZWf+M+_a2jlUx)#_#z6)Z}UB_Yc^IB5ATd0>=N48t#dV8Eejt-9Cm;I=B<0 z4vaV;1^1GY?Sk9yJHHp=l(HmFF+ACE^F^m3YO`DoQ;6pHNv6aVU(*?OrYXj&%LwyReHwHtyHq@H?s#ogidol=wdmexR-Hi+?3&ZU`P(RvbOu0!LOf0< zX{a^dXWzWD*E6NZT{X-W1N6PSUoCl5Mcoy%>MB#iZeS2mVVA!WATR^r*2B|utuo)z zq3O((p{?DP`^k$$lw!LLc}bGB5kCZpSV&_N%1K1&9mEh+qq=pmJYMA3q>R z0?ZkyTtk4_pJh==P1n4RlRl+eNKm2f0|eDT4@pEP{4;nV*JkBcZbc(i3zns(@NtRYdrW;3ez*toqLVSq@_=O z>GqTN2f>y5V&Rx(Q#(N@H#}pxwEt|q3fE&;zNVLACb?RVC7DUKv6>lWaE!heg6`n1 z{?TLYvw_CWl_GM!y50h?VLo53<+J&ITsZxqO8x=u8}&;l>9}{4r9?56|Oox-?6|?gKSsO%G1*qlzrpq0NMATWUUT(b0u;#yCa^6Q^Nb zp1}^ED@Go+q8vIUF8hECssY2OAMQX8$KuQmegc({cjZZC_GF~iqS%?%wxrQvh$_(X zN+Q>pXaF;b5YItF6)KJh093_iaKE4VC7oOvXc_LV^*8ElR~*9`d+&wS}xVQPZ{dfF;Q@k_Q?sS z%H>2Fq+e-6A5-q?kK^K_a-w%k9feRMT;w)kvtk_LHIOCp$5dq`*oh;LGQ%|jFN|cv z6g8t??N7=1eB8BRH}F$~Cw#%X$C)96)s2>hEY)*N2a*IV9US4zR*F=Nw}cXXBVC+o z9tTO5Bpor!0V$bNk*k~L$(ZuwfuOc9ZyDX@GayOT_+qHimVSzg`E!~5pT785&-~;lfcmL60L#8FGQ7t$0h|Khf$bMI6Q2(h0bGQYVfeW%QtK$ zNa**?TMa%u7LxV zM3GpJCd4(MYLP9&%URwOe~Quj?ECtB!(vpd&j;&VkRDP zsx+!#7Jt$jzLG}{4U)Zs80qk&wzr!}jZ_dk&d0IV zt!H57%PcZtBBPeyO2pG-&Z;ZNS!Wwy*kmx9JF2;Q1~2lCoPVub##h5~i9kKfn*tn^ zjXFYQSHycNSq4cS#kOH?-bS~aD zx2F`5&>BcAo7#bgp~1V-q^0eTE>WjvLG_^&Rzp!hF}fv%B_BPaT&7TL&X3$I^n>2- zmx{H~BGhT2?m8ewBLly-J(5@U6S|gF2DL(Sli{^Z1X50MN(9Z&?_i_Dn!{_s=swFz1O6-Sx_zhew zk!Ow0*SLPuN@|P>TYKF-9&1sH7GF8gpkDHE_r9p+BHJf6q)%QorNEn5E>Q}pv(v+y zOg8tt=l%qaUT#GaHwt=X57Eud#mFVEzY>;V9~~VUb-fLHGV`aJ7Q@bIS9{u~`-6>t zHbZ@}P~Wk^(&hSb$4^d|xtEvjI`_qmnuZE38d~d-3}boL)k$)>ZTBx!PAa4C-%oGu zGz(&N55RqOhJM|FEm|x!M&{bA1T*mq8L%I zH!@Umv^TRh`P1K4YHTPWOCb1kmA~MXa=SU1cemBvhU-7sshQ}MCE7li)2zf<#=SLf zz>aDmkoX41`17O4%Og?~-TP7-gmL)Wo;d7|35^lsQlb{{5ui=^rNou2#6!D=w)jc#ZeIc|8rXbIcRYpaLfFU5VFFSp?;Dqh7 z1lAY`6+tR4dqaxCyaI^_-K{Jq0CoOV-b$T%S+j}9!i)o%AICqOm@wmTetuX`i%${P z*qp97uD(|iffLu5Ncff|s5T-w6ciCxEh}_#!rXRwpRe+`jKR{zSuhEu(Xf?tSvPcR z?z9In)n1K_cFrc^UZXmy23=#@Ds7{V$7+!V>8_$Eeb6_c;yw~9>`nnUnO>?Ek9hL~ z66hIlVSChw3dXiE=Bfu?$eQL!DX8pr5t zbc5C!-PO;Z$I+uRjI_KaJGsTT?5%_(3D{dzNlq2)z|H!5Dc9({>JRU@@Ix(Sj4eAo z%ln|*UI+s!@YES2i!8T_Dyg5T`{S$u}kaNoYP|G zS)9pyYmQ{}8acUbe8^XB@G7{dZpH4Oiyh8rJAAE5C_^;3Zx%N*pUHS4^|*oG@qM)9 zpc-!Ho}YU>9tXFKuGJW;sRGJTz%`AoiMxO!RkUQ)^x${xG3BQG0b^ZMy-Rkb+>q{9 zyAspJ6SUd&rQ+=3@%cwrD*EafVXt`!(ARzE8PiTSS+ggWZg?{)iiSAKyPw%BUyW*7K*Pzc`F^s_p;@Et^oY=~*0L+;iuEdJ+x=~(StN~$O2 zVO89Mrg7uFzXXvCI?{7|C>=za9>snbem|#ZbkysI!9v5HGzq{YWI$XjGrQ<7KYUPgS_|Ox3QrSj2w9;KW|{POzGMa)o5-cx*GPx!#n+>jX3h{mmSknv^8MX7HX*&5QQ#38|$SUko$66+W3fu#Khz*q$^sJN0 z;gX`02{;}~c^i?cb&OuPtjGQxcaw_!s$5rjIFDvHSv=N&L*Jv@jINYg^it(doJq0h zX29$9Sz>_oMbHj}ZVxcU*GbXFuh;;(E^t1_Ot##InY$D^A%V`|X2snR4zZ*PAvn>s z*i%jfyxmvi)tE33aXn+089$Pny0OL4z>~1tQUuJD#8K5-bkKK>c$Au_Vptrt;1+rh zH)IK!He0Q*EWefdj~xgg6_daaguzrJnOLLl#kMrC<_z9|9+s*T4dYUj!3Bd8i^MD0 z%av+caOiNPm(!dBzq55u{m`(T^*Z8dE?dA*5dKDKeZ4F10jRwlzuPZn@k-*LIn11J z1m7*R8wxKIaCr8>EEtnO=NQZ#TGa!T|}TGj;BaqlsS)4g#P# z{VPYq8Xc>9jeC6%Ue$}ypfbG~QTM^xWb>rB4R;`~OwGx#^f46DQ`XOIo=mu$=$CE% z7C~8c{pub2X6(VA-+M?D#iStCn$3GX+L&nF3=23Oc$LCkPOV&22HI%{2`>YUdcXV# z&DT{)dNxoaeqOMMXCh>$CnH(Mm%qF}V$cqd-$Y*ldhnN*X%nZ+(vHpGzQ<3rNMTx* z=IIXds@;ujxU`P98@}O6Z8PzF8?8*)8lBP=HOZvH-xo+K^9;WC* zj+e45SdiP@6nKy+3?;i@@0uI~bS^KsgcV6(O4)|7lxT4t_`huIYIW^oQb`UWlm zqO*@VVs~pb1Jqu3BptM(Yde$s3-c<*x`)rUPF|Vy5_dFS!?x15I&g2UOV=5w%E5py zL3(0s|2bmwg*rVaeHJ%feKy#9Cer@MlNs87b@?M$(>YsN3jcM^K>K-qmb_szM~~3G z759ioeKVcnIH6WIAw}8a3QEks11O_}*%rk%^o7Ja`B%*r$7HLjBLw8&TzTV6 z$GiFZ8kC+GYmJl{nF0;1#Qf1UGm;1}P4zT0K-5!8k*!V)nx8Jo-!(@B=^tD<=RSHc zX1)l{fNmxLS&X%#QEv4P#zu#28YF(e81z)c3VZa_++A?rm{t)LnoVBzN zAf7sMy4XEk4fGb50Gz&5-Gt`GBksI_-Ac@j!L(^)MMo=hP%^H+PMl+#RBaKX8{EDm zo$Ic`XTx{0XoTueoedon5v4~t4Xw<`l**fkrCc|jUxtRB)ma$_;{tx%f=|j)KPx^>t=E{#DyqF)Sl+H7#iR1gNPRCSJFuYz-3ZJaE%S-I zIbl6ZW zOy(>1O%1u75he|@so(Xsc_}lidQ-1*_YbJ2!S3qDMT&dqj^LpUxbr5F!B+cbheiyq z>nb^lR&`B&xc z-xZjD*6mitj+p~9z=%8qy$8(jE=r^2CA!u^23ZO{1NJU*A3gf*7msW$Aq*+ zym;5P$J}o?kh{p{M!lm+7%Ad5qfbA3ET5b}x#|_X$wk%WJf!iS#C#$AWkLFw(A2uf zMyCDR_5$*srsZ>qV(}uMB9{RJ06_R_SPX2etUep(9RAFN? zZD*#W5d+z{5Tao8nh$VqShEf+5&{o?IBMFM@-7H8#`HBoM+qPRPowviC76wP{q)cy7BydHD`>i~MysB0M<-R%R-D`ZyhmI_jK5mP7+H zi~tTa>a1EUqLn(81_VS3D$=xiO@wxm--|URF65($P@H7pY#szS`Oju>Hww)V2%t_Z z{BU-gQ7+M_X0+DeZUoRRrMRk)jD#t!yg7o*mZ;$jNF3)N2#H;%<8jHOJ~H2v!+-;6 zm>;(2)X@(<20>Y|34lNHyr-$-!!bpsE$8}%TI(1*>Uh?4b8yZkob~9CduE>O#vf|5 zO=?XJFfs4A?RZW*QXAX0++{YfWO;Fpqf+oc;%@8MTn{|s;Hc%m;qR_Ic+@|5f5{Dc zy;T>rX(cEq@omj#6^tA~rryv^^?tj>JKjj%Y^iCp^73TI@Cr1V>v=CS)pWTh#NWX7 zvErRRPqyyLf`9mWi1hqm3odtv7cB4jRt|6L)A=o842{PcTI%4h{iffWy+Q-ubj3bZ zX!1!r#LvQcLmLBmdmCE^Is+Sfqkr^i{t!bC}BP`9-j z18n5>*;pf|gZzGQ+tan}?ZYBt!UjJ_SZUO2x<&j9v5~F(oHv_b49J{wTcrH^KPpU|3A)H@~LKzn+8SR`MtN z-agrf@Xze~YHRyn@_n-IAFs^#AF@QB{dOLO9wA8{JFp=L;qB3~wq#HUaY#pAn=AdC zL%J({ls`dTAu*wdF*%7TH^GQqBQiEnN5D#tj1TbM-e1?gHK(o>`XfZSV4OZECi~9u zvRSA9s2j;S_evI4rd3s#2UrZ`i9~O2?*OCNUc4-4D$oq7WWS3fbw44xe$eS z990pkc>PPzjP23g05#eG2cSA{I@8 z4aID99M4-&(ylLh6& zT^hOH9DcBxa)>VzXQJ05$VJ3KJ%ZYHL9f%-H`7e6Ei9b&y^(bu3_8w&Ul{DZ57gQ3 zz@zqhIA#bjWS0SO6m^65*=s*t_7$33|?(THB(2@#wfUk+fM(gY0~7 zy5{?QD*w)90P_Y3+D|ScescM<=l!2Nsgr}Fjn#kY{6Ay{04R(TkPDzk8M+|#4k>mq zJq8N`Rrjs!cbyjAScp|*MOsDDERMKpTN63l>50JAd#CGq@VF>CRpamtNR_Tp0RzSp z!be%Ms&U5fbYFL602yR0w*spY28-$KcJlU0+LUugNjMJzgv*l#dsvL73WV8$UP0d) z7$wQdHZ;)TIFJ3+nhjn2L>*Kcs*g>;i&as?=DoX3X5;kTN2D=5=WP7`ik)+V`^_Iu zfXr&k_%bR8)qntwN0BV)%XaQi6&<78)Q;GSIKL9Qa+3d1G`pe>9T*MKeGkn$I-tfBtfXzen}2v;Xi_3-VI`3h=KD z-v12H@!7-rPwn2n8~)zr`nT!jr+fcL1J(aDz5Z_euPu6in*spXeYW&{8vj2U_I}6t zy>IJpq(YegdlUcG#q~SN?{z1Cqfp}iiSm0D%I^Tb?^XT{z()Efz~4KUznlJ^egE4u zm+CLm-*fT5BmABX_!~iy=}(0JS8m{Upx+l_e*@vO{t5K|TbBI}`1=y(Z$LJ-KLP(` zLG!!yzs^Sgwgmtv=Kuisx4G%>=KngK_-Au+?te1>$K>L7>wk6N|7?BB`%l&e|JR+% XOM!mU9smID^C#_7Ia&gL{PlkT=QnsB literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/databases/数据库文档/销售管理(yxt_sms)1.1.xlsx b/yxt-wms-biz/docs/databases/数据库文档/销售管理(yxt_sms)1.1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ccfd6c79b446baea3ee5b8e9b56fd74d02d8e76a GIT binary patch literal 17605 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

g;T3XYTZq;u_Vpfgj&s`ViOt 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 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/售后服务管理(含仓储管理功能)开发计划(2024.02-2024.03).xlsx b/yxt-wms-biz/docs/sheji/售后服务管理(含仓储管理功能)开发计划(2024.02-2024.03).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4d15febbbc74e5834a5e6898753cc5794de19253 GIT binary patch literal 22505 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 c` z%W#@Jg>k)_tpNJ$@qq*V6SbshGAUYp+2+e!XbY>D+5|zp|9n`TjO>~{y55q@d?8z@ z`5J+0er(}IQe!bk)d`&%KToDcsIAdyT>ybRp>&EQmsvAlPN)2U3=7EPmz8H!yUv}Z zt- z&&DSWcVsox1`~7fc0h`;=|Yt{GQ;NGo1p3!X={9)EcM!bYPcM6tv?AquTG{4DTF&H zlesqWvL#BxHRKwILFY??8Bfu;i(f{`F|RUvda)7)n8n@X1;oU*6nkgJ#=3r%=M>tR zTG`z_%!ZSoM7hom-pjBOy&=jn3bZ>rsvSWWH2^sg2NJQO+C1CqBZI)%s;s+VyOX&e za*abdhS_-kwgmqIo5@VwK0R8r3@Mfngr!}|h@oJol0gx}%QarO#<;6Uu7j3gBd2#$ zTaGd=iZ#tweWGiDIw)UHqfN)_27bFz`6}V8o7T+9X7Kb)QIM*V;Xj-P&?GUaTK3aF zwe0Vop-BW!v~`iAOw(sIrcVtl3ftH0Y(5BLmo*O{(Nqq*NxzZR9=R%T6exl0X(VSh zO|f9=8k~G7)AiAc$IKMQCzop-@QF|kXhX<}?fi({dGgi{%2(E_H$PcIO;c8BImsGIgbT#y zv$n!Vh%vZ);F$dcWvXh``>g~+@s<^atTkzLGS7@OZ7!bU966)=W(2!+cg1biE)sU( zm)a=U;laPV9BicAtp%+%M*=d~|6Zh+ozd2`=P5{6ryh6TWaN3fAGLcb>Jj4vcIPm% z{togs51ploS0|3sS`E1!OtwD~I_;^!8MmfWJR>of=@TEW?d<^XS+79X51bHe)VtS0 zoMTAvH>(ugr3L&cn*EB3U!nbX4&U$>>OR?Bdg)i->%!?z)%!!F3!op&mbygvC?z}J zd~2Ipo^aYyl=|)My>D$X>O}fI{46e(d)V@6H>v)|qe)(NxMU>{Ey(qmM7S#hkInV) z2J&kQbE`w!)83wjoQZi_*z%|9-z7NMNu>J+md2L82VT#j%4p25xB9eNyxs#G1i9Vz zjq-kk;wbC$qNW&fAnf%;5pV%$ZHhcx>a&rQG^=QLsSX$J*4$1mJal%af(4_4y@~BC zNJR95!3ldf?j!aZc2&3jmlr?n{|)qA3tj17tIW;9BG?+nWq zKbeL`8pS8UikRPK?;+^D4#%<)nS!_Zwoi#cc63@S4U%jRQ{t!0x?53p7|yvfUX!)w zHanORtK4R4NKcb(YHNF1;8?v0g6wpbM9b_xr`hxpFh$h5J)@>P+Ln!R#G&g|Up94K zt;FFr-f5MPXwt<%bl^Bp_Gu$CUFi8-f41i}tDZ^T8v`#RoaF`;scJeNV5Q-f_2)ex zxUTYRt{kaP9|9=+HuY|Qh~DGHn(FTrF_S%)wWdx-q3Tg^ZFTWqb+OnRU%yhprwh9} zJ$=4~MKul%5dF!>CMnx^FTC8s0@|DVaCP7y&?I&QHkGUDA>I}?f?|?=c0h&&hr#Ye zolJ(ERdaL2e!x0zz33Fn#ek+ywb?pKG*B- zT%c!mn76<0OpzXvj5aFYNCLdaF=5b`-ikK-AT>~35rp&P?Wya-NX)qX%J9S)b6ZAd zX{+kv7`NDUX8qB17g|%JqJu%$h>B4dJB2o5lwdtq`oXgO=;`drG4lo=d{l;WW9?1{ z_I8=Yrz?C0?N&1 z`U<-lQa2=m=H8k@d5147{x~^df~))B~;PK4stqu#W)>; znFCJsH}*S+G@A73M?J-^wApUWdQG=ou|3mVwrs1q=tebk+#F7^Eoih``$^!HemmUV zuvm!paX2H{rSx~Ze(cUqcLwlKaow(#6dh#dF&gMBVe}s6wopN^W7gbL7i?Biz^W_f zJa^HnzT?Ke4J~h4rl+6wQi@OnJpASF3j4sLiK-bq8|&*Esuh^mycgSAOwA-s+dW6q zeQ1zG;X@ve?oH`H0V~{#lLSALaxHn?20M-Mp|6TVblxr&PbavIWzUbe(jI5aGAuTA zw)0VoZ5;H*uQy&-r(^q^r~Kf9Dg6-1=J|Bu%Mc(EK|sgdKS9tFv@QML1VLGbD!Yw? zFB+{gr>u7Uo22fByo4W|n)g2GdFdVq8SOmMtPrXrcJ_{J%er7Q2zrWu<13w>+R<#& z<|ak3l0QbQ*^!*ptUC`BK85txEARM?16pj4YjcgM4RhX|Q1lf)Ef3TLfuGa$zhT$qq;Z}QLOO#l{nX>$ zN01Hi_0b}OCPy-!c5kfnrG}dttd|ans_dsdKLPaYa}_boB}Zf|9Xx_32vWsrK`zc@`d2`a0z z1&pxc3nPYZju$`wO@i;->=3)>N!lVZub7l}o6+h%!#zaM0jqO)3@V=MFZ}A$g~q|v zwS)K1d@!CQAKIYaM*L-x_F8BOy505aCHP;@jmviC?e*_{RX;H+1O2kDx4+l-go`Z& zg;iH+i2rSi)2P~!5rDROdwPpg-vo1d2{nDLD9NIi_>02aOI`$Hi!)KBr5YWVz|4^v zw!h!_BA@6Ho_~~U#R*blO41yth4PMouhFnFY;F%UBv{zb?`tDiQUqXNgG%T(i}>aU z{VDAD&7M0F%kke@*T-kynFad$c&%pE^k`sMpnfd*(WL+5z6lHwO07-j_KtL5fIR@t z2-6Juw%MF)n5NB^xSL0SS-(w{B*GOK&~u)qDjBCEwJ43Y%0fc zc4YT`iSnfAjBqRWIxa zFp~Pee%=E5KMwIQ(GdQt9rqoK8+3UAjk#8m|5rOM^zQZViEmJlLjHGM;6J5(@j@kF z8Wy|@=>OHI3(dj(=V14S59`SsEdTSi z{LkC+-&UUgS;YRoSR+4sZKbvF%J^2*^W@5kuau4Yg*1fA)$peVmN2JC=+19~hCle4 z|HxeK(9_J2S>MKz`G_em#(+*PKoterIW);Na6>?h=tZx-cua(9w0>zO$N$kL`$9K~ z%?+b1J3qBFrj_winKp<*doaaIFIKMH`^=@&7*QM;7FF8#KI$jbau%+|PukZZgZx5o zwjJ&&&t7@?H$TP-B~h!e2ZP2{fXxQM1U1syg!*6Yn&f@S&whIPKKxY6Qss~8iZoc^ zo)iUY$f`24nplJy(&&=o2FQjWZ&rH)#I&$UXSUaCKJhVyQLIT+R8-(exte3RP@x%% zm#8+leY#4EKOon}+`*(wp7Pb7k#GzK1{#r0uet3U=@gZSgoxz7eN`; zFa7h3#tHG4%!f_9sWVIgdGXM6N!mXH7l%6D-c9&fd5U;ULRqBo1I(uKuwsBH+O@U8 zg&+!k6m?C_IML@z-S0g^LrhS0wN`3oNi4SZjV{`Y^;Q+GT&8&VYqW?zrS&16rH%3= z4JNCIwx6KvFA-8IWk`=+n%)C{#pfzKI0`}@Y{fZt_W3+@gFLwbV@wuLRuu0HppCKU zn~J|{{+Hn2`FW+K20=1i^t3;mgOK)UlxW2! z2XTH6kt51pC4XVnH`I;#`3CZL6NAnqp`=PNu`kfW4=EUa1}-q*Bj`~-d%Lj3%hO0z z*0V4Hf<--R``j{7e)z>EnYJ zJMaPSlK{@Z4v@T1h#M<5`Gg(dp^1T#MBwkdt>CqX*4b&Fs;*G9jnijn__|;`I-?-S zxl|>U$dJ)~gN{*QV?p+jkk`v~#5wF14|_RJC#X}_#8T1wBA-AV{9 z_d{RD8#*XA;~Nw^9Gr{hy1tp5v^QtlKdv)3Kdz1Qf)_&dIn4ArOj9Oe%OHKl3rWcH zPu~kNj)S0dZ1$;xA7Wf@k0mc|{9VEih9?ItmXf@R_2rES9;@4x!ek-sHMAec0cs^Uix9JVb75Puj^y|tyGA;jOY z(RsE47z5S37(VG)EF8K;G$)t3YtWi~Ijs>B(W=PQHz+-Wl?7F=Lz7wUTZ)`2t z8>;c5e=k`&`4f%}$MvdcGajkrx1rvnCFExUPRYt0C~K)tKdO)t#3bxwK$JX>B(uG`jb%3pXBLG90Xje>AoBPotTdWx_h4eTOk{eMY1_ocq zqAZXP~=w7d@5LFR+X$YRD^mmVf-Vs(`%dYqP`?+?0+Y{p$eTPCv zS}24jXie9@Hiv_>8Yd;V`Ev<_ z5T-6SsZ;ux3BhzCk3P?#KNIh+J^W|8w6KT5buAtBDa9?g_FdwCr3L zH(XF#Fx6@oUb^736?z*B6m{KFBo=C-pxaDn1qjz2Nzy|goSL<=@pLOLzZ?vdaQ z--%AXYtF|kwaAvH$Wvs-4w*l<5wJfDCndI)L8Lmm$b@}(CCYFu(aQX6r~k!g<8``u zsPGBFd!wqDFU;7~!9qm3$y*>SZ_U+`Z6q$R^r@A7O^ANsyKII`4~?lxRoOS+x4?Qt z{H@jJS(LzpW!+ilMKCM6LWByqUxIXph4nz+<1B5pAH+ZKn3EfyzpBk?ccsfiPCi0y z>6sM-kyE(x{h(#^cJh0u#pv<_c*FCCJDe>1 zCAa0-Tp!ZFPw|MM*Y{(Wib%d2a2#mV-fBiTDyHr5^f=xRwu`wgj5;$0W%zk-2nHSX zunysHyXGVvxeIFt*{=9){&tVY;FWzB6F!~I zHHWO)Lj`jch488Zn}~ut?0e0~7e>!E@B3Y9w!Kp^zT_VM)wgS4!_{gjEWorP#y!hb zvBq$iw3E1YJ1NAWof;+C+dDk#a`b>g`OxonZZ1`;w;2L4adG2i5SUnDX4)Nlj9A7F znDb68NW!rj;dEdzhcrPa$_xROCR3vfAzN8<8s65_;fd`@Tb{=_N>>Y?pJn%4i1#$5 zYt@vDkZLru-}FbOjZ%Ov7g3vr_}p$wefq7nv=C0SqClX~jA#3jB-GPq%>aJ`qWnh$ zBcAp%4uu;X|4Cma*bBEVvM%*u0yc;@R``Y8`b^6G0aQ;z=Lz@$S;EjH(dTzN?inPA z$!hZ?azEO9zzBiLq`Z%N3Ls1*dOUvj6R^>R5jNyhR5*0_`l_-AtNuFefBJ}bmmxKY z^o!MI<2hm>F^1lM$Zsr{3KBs0l4LYt?RXWZXFn_obp^mNzb{_RQ5XjxOIk^ih10zy zRf_g&ei;v>hqI-3i{TxJaeRv^t7mIqXz*N(MNDSnP0LUFHE&Z{8@+@JiFP-ej^2O{ zfAWqn9w%A_+g&zi(+X&V$6Gt)vuv_E0RHZDsmg7-(69C{J28R`l@=C zi<8>R@A^7c)*~}0NJ_F@aSV!;l=i)2r9W10=%`KMVkC{tli-@5+Q~|BIk!YwskolDx+|A77*ihk&Ygk3jDZN$=s-3_zEDoSWXYCi zf2Oay-Q>FZ+x^s?k+ETc&1taUdR>Xjj!b@jXmxz0Y#lt13u=yupui%cV%j*oVZ))Z zb7vx&8W@`Dk96@llgcSqk9fx>xebXK9GXirudAsO?iCMF5Se7i{5}P~yhgrssjaOA zyUftFc&Ge0I@u*dTXUsI-xBg2o|toIR7lK?NxI!h3vS>}!?VQY<+5KMn4X)OT2xTX z^gBxIXb;K@!p_M3u}*j_N7skEeVrX3Qb;WtM-!2Cmi45w z>2yc#$;Rb@VmJorPiF1O0GL5Shl1j+KWY(#F31IfbJ+T_yI)R3wG6)OXWW}ZBO z6uyZ3{8FhthNi5n=2h;K;+2Xcad)axb=ER>t>%p9)~1s@5xsyd#rP)xHK{J=O)P(l z<0VWZ7^(A-?U#0TI~ZP~yQg<@R$Pcn@^Ef#ZC3cMK2s#L?R@9EDYP01rQ&UTqPAW5 z`2h|20Sk;L0!nmTcPQ0@L_=Q{1|r*Y0chn4c(g7p-V_j(k`fiwN=L!8IKq~#-hSGd zNt{{i+0e|x$GfDftHtAa4^1H$=p7Ugh7zP1?bv^~`%u}y8ZR9nYT^;sy~@Mr-BiM` z*YuRTNlBqbswh9-_MPS>*&8-FooqJJ?#wKfep*x3fBb!qYm?i_H1ZpwEd79c)(MqT zFhGNvoBS)0_3tm;DEm69v`whw@ihA85D6!HkPO{;)0iJlgOEd*aI`thjc9eR|BR4`L4)Bv1BS*wxeJ_8Dy~^4cAR z(U1Jd+7cWa)S6d1kSp8WhLv`WYHgi?{qTTDEYDCDeHY~-J)m-``#dZ zSZNwsgZ;P@$dSEE3{aI+y+XQ4fF^SJ?C*m^E1$T^m)G~X-0S9qClOQ1^YR>u!%viA zP4HL{R(}v6AS~t^diR+%x@W8oVcLD8`phzj(6t?vq2Jni>{<(^>%ymqNqBj6t(HvE zU^HKPl&nL$b@vYXM83*4n~H{}Az^8J+^=i1S%&Xn4Ve_d2+0+(;$%B9r*Ac+^MPHd z*2H1^*z`VA0^2)v>+?{v6O>mWl(vt7QN5OJ8~u z7SkN+@$_g3_ruK*Mi-|`us3eW?PLMAekeolpBws%po{tQoCpL>5$b|3L`w*Zc&QLR zAH4Y1cDLq*HvjBqQgKV6mqnahHe4;u`jyvaQ!djaF(fc@;*^noIa<|jpWZD zw-3kFo4;AP%T8!Zt*?3Xx611O|LS&ZL&cm<9HKM zwRqw1e|;X+m zLmzc@{&Z76-wQsUCTd?5F)jP}L56y-cE^%+{Mv?C-Ihjrix}+BS@*_Ni&n#mwd6nUbbF;W&sh= zU(d#qC{(QZzx?2=@Lmyb^r+*Xcdn_fpBa!J%9dfN3r;Y3ho$xxUi<5Y4A3Cz>&aGL zU@SJn@`$UT{GPg_cy)M70Pu}2KQeMg6d7MW#sEEk^MajFe$e>B5i^1^BG?P5f(Vzx zbUzft6+tA1Q(se&EOl2xtvc2sr(o3JcCMi=N;c@@Y&uBzyXH7ZqbA41+>N<|Is8(_ zWzjy^8(38e6wNIeltz-Yw(hL|s1>WED;o`!>fT>i39&fbcG0O$mDTUaM5z z_zNY-?Z4cHGwfSJ+Jy7yqKCEC6NRBOg2sI0bZLmhj$Rc0$V*U_R^t(Io zVT_>=jq6GH@;*Wx=xxMYJIhu}0}am1Rr}8T;V-Mv_2!M#tp-yF6fJgAR1k)x&L3hq z!4b+DuSG8)AV60W8nQcVGr1!pvb?gTi(|XmVt!MF>{MKY`lc?0H(MxC-&s>wU;Rxz zYisTuN)FQ3^9UrP$$AP=cPkO|V4&$9R{X_7XLSe0q&>^&gV$M507 z{H^M0+JI!y^M0lgfkgY8RDEII3U!J!$)^2@zTf#$4N6&6Yg?G0errDa?rFjKh_CkC z6{y*v4Qf5Pe!=O#O>cBIo1dJXS9E~9kX3LCvC#?8>|BHa<_-9zjh%s*oTatjxTvV; zh}5&83`O+ z&33Q^j?DE-T>8&1K;LMWA^$%)YnDyrqrnvh?QZj@uu_UApZ*%QJ0FR#Ub$rKEMG&8 z-kSbcaRQ^VO3~m8wBiRHs}&7d)ic|Mw0I26dlpe4-4s!U^)6gWrC!Bfo4yvnP)U>s z3#u3SZeS3;M{S{#j`;f6$h|aOAY#yN`jzO(+4{L^kMr!r_XcZ_>|>HwojWmn2(v)-puD(k2Y}a1+0w zWJ@s=;pcqkmn%M>cQqmM;*Dx+)fe6Bb>b%OtE_$7T(8Ke*YM1J2p}Z}{D?%;04rti zqNUVsR4}?{^&JZTYYRQ+|J3W5MJ8-n?*I`1o!>@sv`I-_Vhr0fU;80G7B^P;QM{59 z(!WPo3xxyfKc>|C+?3h3Lb$9TrJ6D2`h4|gOL>YF#4C_T&a7(polqrjE4<**zNFse z)=O3jrpejam4PC8%LqvkJ5d5I>#3GTMI$8>8v(#@VIZd-Kj7ptAWWX%0Un|DXr#kpq+xiWsp)!WEx${8_p&yxcjB3!^-Scc{YvgCPea)kq`QSHI+omxAXW|W8%kc<3A^*|x zP*x5iF*^XFA!(;Zu%&a(XY$Vd+>sajk0Q5NFc!?X1S(I6XX^WeNCdz4lioIUS%NR`EypnmK$z zi;-e$UXUIyC(&&+?sZnzt}?!9LftcD9@0WW>@0s<&PW0L5n**lh49edtnQa_C=2wI z{${3Xj$mrMot&E?bI>9xe)~L_(EdAL#m`A6pm-C&@m9{TEZ`a^lz(CQja6HSoGe8j zeVh4<3Xfc4Ym%E;t%y>d@<(p6Fj0^ePIPWTKI7F*_9ufeh9Pg)%bu6>DeNc4aa(I;7E;4erK}9Pu~4Ss;?H|x;=t&F z6mS)%q)sA{zsX%Jb)CUk9#t^+A0R*|C@&UK941p-{RK&a6kk$oo?ECcJGMs7_~L6ja2CRX;wf3W;~ zPm1yAZUu(L*VbP-W~PgsMW$mumG|$2nR%8cYp)AkJ&c(Nz@+U$(~|0^WzJToA|WDYuWz{t zElf6TK80wE*9uRM39x~E{+?0PkKBa6ed+Hl9r${=t%8{wl_q1WblaoMdIrq#Xv=Tx47 zMy2lS(TRRrMp|7R*{yPk+jJd)^XKUd-4rgxTSLvG

  • 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
  • ^J$W`fFk@$i4G#94=ob6^le->Mr0u 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 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/客户管理思路设计.docx b/yxt-wms-biz/docs/sheji/客户管理思路设计.docx new file mode 100644 index 0000000000000000000000000000000000000000..2671d0b0db0c35cf9f4288922eb938fd90bed196 GIT binary patch literal 50209 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 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/数据权限设计.docx b/yxt-wms-biz/docs/sheji/数据权限设计.docx new file mode 100644 index 0000000000000000000000000000000000000000..844b6cce994b9cc913e5d48709507adff4ab95af GIT binary patch literal 16945 zcmeIZg?}7L&Obb6W@ct)W{8>Dv17)V*^U`vW@culm?>uFm>FVbrk{6j_jWJ0@B0rt z*Yg?8bXR>>b*K|oOf-~dPf06+wQvY>!-2Lb>pzySah03@)sh>f+Qv9;qT z6*pUB2OWA>tIveFpum*b0O0rj|2zH<&p>^`h}?HZM6o-GXOSH`sg+tmNVXHd0c2`L z{;md!3bE&CKF=4vIPwTYYPj4n@>mv!GrmlTxG5vcVIw#q3sVR7QE*xynv7}Zn7XJ% zY4?fP;2vs4ZWyj*A)~m9n>n+_D?}8f<>WfDT<;CuVKPi4mi=y}0^4rLd_xUehMgh} zKqnsTX_F&*w?SwE1Wr_DHewla+&*1Y zThpz+x7uMm{V`ECKi>g+O!-6yfl8UCFL&(Noj}?J#=Eq=y@3D}{$t7F$6$XudvB3@ zUy(5HOZJn!@n;7H`rqjPmg@iE_4&7-ULM6y4mcZYOwr;T`>bL>P_xX^Z}`3K$a+D~n+fP}!d z0w&ja+b!6%y<3x)VG>EIVgE2qw9pA`@RmUtHn`OruHKI1@MflbW~vI+G#@7I~J2L&mK@xA*tUT~sIC9{s`^z(ei9Z7pR>)R0Xqtl`*cLyIx->hLkII-d(%3(S zArV&TtZEjvY5WtQrT^(u>qm44e#{tB+H!I~vx({+VU96$3NEv5yq-uELj`(sru%vT zC5jKjkoF3#7A6qh_q1bIj-DY6$1-$yU9^C>1IomDOc0M0CP2Q4m5_pC7{Ya6Ax?FE ze7e-Kzhy-X#@MbA{g|Xxkx+0OAJ8KEitu>$Sx-1m(W4fs2@GC+I8VKH#yNKsG9Hdb zivu=D&`xB^vUw#S&zc^qg)I(4^i&Sr9#qE))_o+o5%?zxHs0ej{)2}WkJb?rY87uB zqev@BKKi5!&@EFAFopfMY~MOsvBx~cL{Z{lanDU> z4f;a>@VugNGaf*51QE5U@G52gH>7X5%i)@33-r(`UOGq4j`ST}K_%aI(R z=rW!3YXR*3g#rBqp<68O8ATjlxO+k2YkfW~zvB8wErkGvQP3VH0dpawN8xKlQ5X3t zV(8=s8T=(3Gj0;8%XMZqe&{+?YAY{c8_@y{+>Y+!Iy0gSk8fX`;!6xt`8*j%v@GEH)o1p_3}}I4dF-E=D|Q;!4Zk1 z4nc|g&9eJ$cJmjn3gGDk!~T_!p?yEikejHLEg8!bT2XUHVTHJR5=M?>5PoIH~+EeenmqIh7gYFA71V(hldD zIiCw$&dzVgJTZxp^og~A4F)|S*)d_2L@B0(gvAW_iILBeo*eIBDeh|WxJXm^7rHIx z$FW=YhaYiv&1xRj2VA$ihM=0hz?8P~X~wX%Ba_OCZS5%7OUdG_o|B^GXatD~j&H7# z9nRhpA_PyXpr!_RYAEnqqkg&;ULH^s;5AG4w$v|J;KVUOhBE5NQYsKQjP+ z;`O;kGQ!MSeDyj0HKGl6tfH)OG6d-W!-elTxE`}=Oy7(5Q&(sD^5>q{)ggMD)vfvd8O+!@DMV6zF zCaSyD$F;`7#m>$i4yNUTU@)ATabAj`rLGH{_Qm=|lv^eLUZhI&=&TETX13rE4- z5sg(&We{{XN}Dfa{41&E=*q4v)jo*v6RMT*!Wn|Q4#6JcaKFd%%u8&&i(Fd_v3fs` z#etHJ7X%)5`B`@ze{O5Tl!n#GH*BZs7l4Yi)CJLV{hqNSFM8CZqKdVH&X7I%`TnVK z;Y=C|KRdXaPY1}-fEB%!|5mCsfUeATf<6)wbDnQWft~f-HXi3#0XqM6jP_m1xTY9j*D|YX?WaJ z;1j}v2^Y_zjKPu9zm?dsMBd$ZFfL$42HuJA1>+iM;tc7b;X(%X<8;8uwBzF9Lw0Q| zXB_ry8Qn|n?=r|SR7pNPRAb@Zr4Y-Edl>9F>4x%=KGBwGU6dfkG^zOb)tmX`Hg!{y zTA~+)lv*bOI5T1@U}8dv#IGn>lu%+)q*><-E5Vz!4WC+wH3r%Ym5G9~PKzz__%?2`W{ckZ>Ec{hIA&j8mQ2|3ori>36f*!Uwah+o=VL7}RW6`m&0Rf0aPCe)1 zf@}}%gF9}IU=28$uek1W@o{^QFuMg=wOe?=^Jcm3BKQ%*`E}V=QZL1BNu{k-byCmh ziFbFU8z#{p;o}?1Aj_9qu%AAe;S0Ki6YF}J_kgp$F|3|}(T_V8@@4cl16ac^lKmz@4 zxc$q!`Mde{r>6t-9+Y_R{eSx?k01NZDGxZ4XcO7tu~W(>R4Kv;n57ATu#FvyvYn4< z2fMu05R+6cF310}QscZgGk9zAv|9EPCH#aHIooME|wUS78J>BmPaHMEpZzttQ4MM1Wj)pr|jV*81 zbgw?{Wm!`7OVQcAyt4C=ZgbLcA>%!=Uk8~^ft0hxNY7z~i`M&kp)O-++JEmBv>XkK z9{jQOHkgTuKj3RLWP|vyaSpobXe@#OT0I0d8m%_xXvaOP5%1{}aCq5^1fw*6u#*I2 z7c?84b}}kKkLN;b_5s3o+6Tf@Vc{=A7q@4cw7pOPSy2=6lS-+n>Z2v1|_yU!c} z0{|eu_xN4BOl)i%t!*5Q9e#5R>Jyjk(-;wh&Uj{A^c>G1&w;*%WR!?Z59t({69^*J z>ifZyKpA#=l8u&hj{#C1g*VWi4%QQ#H&0(hS@tFJrMQ*>XZ>LC`pE-SJfFMHKFQay z*~W|0ies4?fsBj#KArqva1m?T|Hx7qVh`(IQjO>ef?Od6nbQN6Be6P(DqVT6yRIik zw0@>6qt|T=>-ocBgolWWTq*^O0Fj3nj2f38F0T(6t$z_11Cc_)!rlUF&1?{Pt;dOA zM;?#@=~)$(8YNzltvUxnNA4S5if_&p;Yijr#~Qm%0X8FX#c$3RG0P)Y@7>i*I4X16 zoG+2qc?qD3wP{Yqsutw-l&w?Af}7Eq!;G)}1{E5vE|Pua%1Y!DKR}u`z!qpDNUy2! zFoEq&!`F7Np49Je^gWSnWL4OHI%T?{3OBYj%%j&%4r<1DKASXUh{TjyQfvnAr%Gyy zjK$zZ9w@H4nt(c_jb6!1S%X-Tm6@-|j=IN(y0FWrkW3yu4!Yb6OybQmHcPVE^bO}t z$&v%oA2&p+=C!+5yqytfV+!(!poZl%B=z=N1%X=cD+a*xb>NyIZGbpfY!qtC8H^~vD<^1s~bU# z2U#{@a4u!={2NbpSr0#S<<$qPw||su&szwzqIb#u`Yzf3_IQo0js97%n_NKeG0B|^ zOVZ>{xn-XKq0tfKKN({gZJZ2uHjyd20jY~U<%e<*wd{3yi)o~g{h}q1JfJ& zS|adgWE)*|?z%ZWnFY61^NoBqA~44!ol88K83~>8u>Sb12Z#|L2%x;HG-)<%{gwki z6zmZ<>rd<{gXF^N37JhKiH&Kf!ip{(I^)jQm0OIvspEca2!Zps?fPaw50K=CM3S|{ zJKb7g&>*joM9Mrs?|@93UQOG@v9t>e6Gh(+D?K+6)JI4pwn#zu?`T~r{AUHOLYGBBlAf8weUsw zDs&+e6%kfd!;q!{f!t-DLZ3_C_l(wgBC`u~lpy!q&h02k&Gk*wR7Xu5!m(3A_Z{bs*wrjmQ09Lv?y*5Qm$S&^0s8@ zluKSI6G`1~@cX6JF2a^)V|)LsuMa-UMZmvrOO)XN0BC>eYezF%nAk|Om5+GEyYL%U&AceIKaomzaxz}cJEak%I0%2;v^2r=od-;z#4DNCRn+KZ;?c7XNKPGSSUyo}W!^LeEZlWZ%Onvu&TE#j z4)DTcf99NMRjo|2Wbf$mHiqw9`^ZH?RBg|&2p{> zM}hrg#&?(T@~ZjIZ9rn-L>Kb-hT9OO0=izl{VFkKUyF1RdEHpU1~`NFtCIp~U7UkTCl z*d5NMkSiiR#o!8t8q|*@C_`DR2WN`l+SW3z{GhDqd3jvwkP?wDF!%eJkz<79y^VFI%rLdB)Q$x@gD1|`J_1K;x2_7miRXxCvG&`>$!=-NqIf$b$8x6jN6_ol zv+-ruAsfnlYNeVR=QdMx68W%9+LwN2dlh7@^e)TFyC44>6Hm!q`p213|jxVU**iQvj zU7OGvw|!gGd{hscOy?WR?jW*95WG;Cd&4OaK@nUP!T=p+Kh=3$i>f|4IoyPLGgTGc zo~Hk*xh53@>jH8NbV*}PI5Tx!0!ochsdt0!j29;s2=1yG7oFNX^;<6bo+2#W!Cgod zdbv!|13m#Y@onA);?07>vHqlX5%mI!0#p@roTWQ)w(uDI=<)DGncgi=RvR~?G)ej$ zsZOpT3`-N1ydz_spL^V5_^FL~DAfZBb3tq&}BoJ%M?0G(YFOPNU zYh$(-cgspCrkOcjB!LKUa=NLsc;Z8iXq7yL^iP9J<(tTuf^o{}D5J=twOYG&Wkidg zVxTFXyoRaryV))|52{)!HyjHon@{qZE3}mrdL&@ArvAdtx9CXh1GoH%$7hJWy;7Np5eNu0tD%;&{8$#JYW~9_Ha;x=%9lqmS3VsfG1Z zZb6S&|LC6A&{jJRp$E?C2a&@3ny8fkX>-eG9MJP2Qtaum&VTeLeRv;vl)wN0)A#4g zzs({CV@F4GYtw((`|8Wq%bbXwpY-0k&#$->jU+p=<@B|u$;GD8omxB#Ntd>Qh{0kT zw`p(JT_{64NTp&xmy-fgSsXZV$6*Hu`1#}O>-vO|#|w4tdJdc!M_lC=+?QUwlCH&9 zBUOTTgYAQgR{0WFqmnw`ZuL20G^iBf@Ur#nl}u)=b5z(4?u^wokcVJ&^}#nn!;q=& zQIEVrdS40;joZqjiK%i#Po6Tj16G5AGGRNK-aqtK!*H&gVjnnjTE)dM$6+ z$dM-4$xKSuY8V*72sq=wO7e|q)1Md&w?%Y$h$EWZZ(8Bz1?3?m7V(mL1L2%Fbi{49W+FQjU`y zj$hnyA8Qh%0&^jB;-(n@6!xq|+g5OBW{ z5O&6~_lP7$`&}9mtM97aPpwsQ>=0r|Rlic0VgOEDoA<+Fd%gk}%ZtR^M$j6R=%FQt zpB9f-@dlMPx=}%gK3K%JAcfaE@lu?gb2RcJVVydjjKiQ0TcjOA9vzB%;+9ECdk6k? zOezKrF<BPEUz)2lVnxtPWr18jpoBD}lXJU;wv5d&!xU!gy zCfTOHa^2$4O8}}kNxF<;v>D;A#x7uw*Lh&IKR9^}j9XaU>b4VC*!tqKFg<^njD)4_BlNK_FMA@!K&!xm@w zhl+hklkqP#W@6~w#OZ8Yb4E&BQ&&aSWhMp7!bPm;Fe-(9+2a+N3Qt-jXm<`hw3!B& zAm>!IEBWZhH?V}#qUOMX`o2pCwO)vu5hXva(L-)xzD*%kD7g;t<27B|`t)U;kE(;O zLaC(Kf1|EE<46n;s-my>XgyufV8GavF38C8WiganZs7cw9D2CXI*sEeC!*f`Q^zb= zSd0pb@y2>V$0G6T`Bbp>vRLpiPFo*rX`tfb@)!J!zjlSwq$j~%i*GFp;&B!@_hl**Y*%3w+lMt+SVCMe%30UQWGP zAu@=EKs)Uyl6kU6N!K#!hFZDih}{ zt22gD(bL|3h-l`A1z&8y*YhN~8<0b64KbItw)Fu4dE0iqpv3I;vSB2Mbnn1vYPaJg zxDHwylne@+;!F*EV{b6`Ci?UW@lO$#dBL9Gb`Su->OI`@?}&@Fla+z7{ksbO&3tc5 zT(;h3e~-ApT;st4wf__o&Y&IX;SO^G#-M5xn<_*Ql&%*OB?Sw;+&poi47n6q6I24M zC!-HNa0+nYjwe+?B+5FAqN|(-?(#0p2b^n=#@k@bzuA<1olHfAz5+G%iwkrj4ZOKI z`0=UZm_)ahEr!t!7*<#GiC0&nM9D2c0jVfpb1P;_BUJeFtRXEXavEF&)Dlbz;ScBI z!%y^LGNHhn6Uk?``fN@2lTnEhZ4icV*NW)|C4-y2w%{U#W|2MggLpu|ft532ZvKiu z)4EQAuatPLi9PN)+iD99?2^oUqmbMjG8kE5t#&9w`C< z&VkTMbMZN(WM@6b*JzeHxMiCiO(ko;UB$%>zUW;P_Esqm-m1PcDOQBk? zksf;oQFv;a_?iUI+e&tCB)cI<^|?wSN#=zQ-C^;2R?d2c=8VbMgQt0L3pJyo%lmQ@ zWw&*+w@L)xp%w;S_Kr2wJYJcmYCO^l#p}^MKQ?`waqS`WlZS~~O064nawjJMvE}h0 zBAVo5k5KudyO?RTJ*HR|z+uWZ1eGQd=4?I<-T6 zKWKWn;@t(qNPQpW4#!(kpBfcK>B+j!+(Qe`g{x3b7)iZt9&qnBpZkQ}0}@hl*M}mF zYzESkxen~;%rBGhN3J#a)N6QISk!K>I6Tl=ZX_CKKu}YcN+fo%+UifIoiYkOJt;hx zjb<#tLrv}t)w|303V*PV?t~c2C=SIS_d2^{2S?|h0yQ=ZJB+@gj z*mi8HgYQ4DAwCqL1d#09--R_FY$QA2c?9GitoqSo;ya$s;t^3b$xn`fLuBv}#G#wq z!L-=gPP+Xt??}o&w-(|cz;|3L|70PE0VcG)l>az4=j)YK3QZz4T>4tf-Ogo{St3wH zup8#r<7$e&jji>~N&n*deM$d!c=ZW=QMVEn0C;r;0Dg1me-E!ZIJ$lQS8R19W5j;D z2`%WZWSFPAUJBj%;q^hqrkc=r zkQ#Tb>_{IZHcWWbSb<|vTbVG`t{F8cM>dQJJv47>ZTIA?PR@l9lOreI+h@)+<*kx= zuHGmi9&Sqy)ojk@bIjozBu+tN-ZL(t&M07GFeLtD;Cu^2iDE}2%~hgXGQ5C{6%W0> z$nI@?0R667kAb`NM+xl0eTGT)@>w7T`Aa3(S&sCCIZ3MIr`^ES!p^Ki zJRFkkT6^}aP*K>R$Lzbd!MPuwG~Ia@DmW4Z=s1pP8`BT$=a!FksYcGwmt8w<+;$Sr zT+e45kB;-!Sk=CA<5wG4I_83WZEU%DlOq{T%sOn(Y)H1Ry1XowqdL^)e<0lU$PA~x z>ATR=CXljv{^Fzzsaafa$Lo64Z;g8)^D&fkv$@WY9}Vh_dG}#ImZI!ry^~}98;$|j z#N4{ahp*y&^)mGMhWs-jqMm6itJwrjf~9wvVRPNG_h;yg%aIWm%Hxjg5zd(;G8c-$ zI(UlQ4OS-OS#zt$f!vd8(s*WX1@MmNN)X&%NsQye&Zm1!#Nn-O z5|G>0_&_~PX((QpE)HG@+tzaX`YU6LJmIZen%m7cDl{!h>?37s^l1{ByR}=2eFRT4 z8kHI*A(G!`{P7tis3m<$Skmx^K-)7h5-Y--eaB zwvnWf`$$01+fp$y(V-4zz_QN$_L+)~7aS*5c6f*P7n8GX#uxCg!uFx;uIPeECG{6` z7TZ!S;voIxGHRNlU&6?-G`;Q#hhMD8 z3wT7}xJ@^A{0{A`UcJaVZJLl)W1Uemz?Cqh?D!t~qLWm)a-R_!SE&%=KU>eXWTkeX za}&MQx(tSG+`0L-(2z=g1hqsq=5E4DpdL}kmM>R`SL3KFZ}!w0q59&nFbp^oQ;c2A z#*&`&7dSj9PmCkJs*qaj)T2@J*5;d#%I~X_@KY*e?kJM{o+QtrTWq}OX*2DSQh4c0 z;n=IFI@nUxoVd;w>sb3N#-3KIl-w|lo%^KF*_1)pVp6w;)*_iQXztj$Fq|ww(t_2y zdvf#jr`q^6voZ%P+_{Qc!suY~t;|MM$N5E-IkamodiMj0qLqBG90Jxt3L&PEMXXG) zgheWqy%2K{_L|GHIjv^QRx;%hf(82 zB4SYT8i16Gp07_6mb=cwW3IB=%5|_T z11iGWO_$^qTpv~YKK32E9mYMbHd)>{^}I*f!Mj{bHOhpxk>aXbtXq!agFtYrIa);F zh$S%no~?)Bj)7(;dgFr+jPZOA`a}_Hpw5-(Xq}kQCJDw@k5zx!&QCCF>$q*HHsxaY zj^P0VyeqiPsnS(q_)hO9Usjo>o80IwWudK9(aG%G>*GR}%CFzEbo5SHg- z5@Td_&fiZfG|9L_3_WFmN@vDcUhl2PN45tX#Lya(Ay&6&{Ra?fvEqw{*FK+{#Q4U z{oA#3!aQN z(hW$+<~xKlujl?9A{DGi1or!_{W;KY_Y?fzx9A{Q^Houwcf6R9zqdFV*+4}?=->DD zFUb3;f;iZw&|i0Nc9eB1TzF>kjQ6Z5f9CnJ%Am6-{IbD+ev*6Jl80V!S=S;^V@tj3 zIeYKAm8ogt=pSrHozEq9(tLkvKNf*fOp}~7zLW)Gf57LRI>gVUUzq}Y@AX5%R?fJy zVx%=jFXr3&{LHEZo(|_YtM3R0}6av6Ws?M z-|E0+<~kHeoF+N~9$$zUx$%iS1n$O}%}aU}L9?Ss_{~9iv!g_XGBNI;{-4yTS(B=K z0y$;jUcgfF4B!mq1c7P`QP6SNORzLfO^Pp|<+IU? z(r{23B}70pY^0!)aEzPpqg2l#&XG58h1HU?N$FGIazHr%+kw=g1WS+0>2+BQg}{HL z;|l1SL!PzB;j(Vn3EiV`RGpCjNu8JFGd&a54RiD%2kkbmC%?ZUF*P5aqcqDW0sEWQ zrBsAAUBkc0L&5LO|LP+@?j;;O+cc+C_9uz`WU*pVBKa3N%mk^$K%r-|ZkVNhCp$^+ zEG=UHgZ%%D@aI@|8eiqMYUP=d0q{F0bohU0=8 zO9>PjaQVyINu}$?aPDVc6D(L>cn-$5r6gZ?YS7J`+muL6)*K38kQQA$7Jq1`)GpC9 z?44=8OxHrh3_`p_yAaKY1)t;!^oPM2YRXz6$u3OdBPB9rmJ0XZ7S(()UI7ohem<MzZrzip)Jw3v7AY!I)IKB6)%@SIZX!INj1kGxDcijYN0gDwnZk~`W{_x`vW0?fOh z9ytdlgRdE(w4Qar+HP{QX1}-2wi{Ra>TJ6FeB51kHgLmm@3svS*W2#1>8^hmb&`?u zD(mgx;#*bXf|I(mvN!!L;bm8gWxABqBb$^wq%sq^JS~RmnZnAcF3gHoW0cP$$>*p! z7gg(M$!M9P6=HwC=tg%wqUSm=FB1$gpAe=~JzDf$#Kpg5-l}rw zv}R|ZyskS6Wput_aBnCoLp=XDdkZ-Aab9}c!n3_le>fHR$Nlv)Xev3m_Ykw!yW@lU zr)%S4Y@qzNSaSNzC(9m2M8Nr7cZbMOYvC{|m6|^6fNsCuGDPsfTo74vY*^Xp%-K?j z!@a>>?AzToJ<-+f_~H%=_c2pBpul77hKDg3!FBOggMp8iJW0Iq-(R+_}j zzgG6yP*o)%_wZwYm!z!R%36cVj^l0p1?KEhZEscP`FAqBmBx?W%T6K-PDfTy2Hga} zM`q~{erQ2YK5#V2k23u`j%4y)sHUQC z@Y(qHI8vOf^)e%3;2oGdgzu9^{Cf--iA!(>^Cx*2ITt`y5nV9`RbnY}V$%3*3g?>r zgpWJli?&M=#aI!hv1A}cKD{WV?1(}Uf~OEpo%zEQY@Ux~DKtF?m-`ou3}Z^h#6iDV zsajmTWT77;Q3RE@VM>ygz=KI9L}roHmT6*`*jh|NqcUtVJtigfgy_~cq1To>2FN}#FPa{GHwNO5SS+Giw7-AiXQ)G1+dEdTkB+7k% zwUok7U~{p0efW9sEj9X(jhh_xhW*EgAZ@Li$4IkNxpix-4&R6h&28LOgYfO;Ip_wd z_&gj1`r3ygxscVm=lxpcaR@M;K=;Vb2rc-VbRzIftVX$XPJ0oHj`?RW3bnQO?W_$E z-XW;E{eBq-VlF#ia(+4b*Dw@sFR!Fs5a~TP@jW3?!QRH!fx*zm z{&xv{FTMI-LgM?>1;qZj673;;JyPO9aViK$1aXX1LBO_hg`8oz?2>~~h2+ZbAr~E& z#e8-1?=xhiFMh?T(%=?d1OuFH(eDyzF^3E{OT zaZ|-fj-zv}rIhDK>)Fe7KL0+4j!S*6NQjjM!$ZLl%w9AbhBLV$@7EKs=XAn45Z%Jo z@NwmWZ8E+FYtHAR{Z2htzcXPho>C}~`I*ifP=2<8FSvgud0YT~J*3=I9*E9LHMOLhL2r>o1iv#YZKxtgj*ul4T6l8kG8=XkIbP=@qc%*uth4}sa0O#{Z9M-9La zPTIL!?Dx@}VakmLn*3w^y?og&X3qj6>i;Olav$V)oZrQG;9ZOn z|1QS*wzj|N(f>*D`?S3u=}N!Xy0(#AASj;BQcWsN&O@RR!ShnH)tinilA=diEn3gL z@}(695L)ll^K9cy$idz{iBs@g3u&^*59HCxPD*G~Dv!-XJs%h(k`qBILt4R&&wvD7 zXJ%z}PiueWr-p@+OlFin!d%5O6q;WMW+YxhRMuJ#mZ+#orjsVSm>Rb7C$Al$O=Dj9 zzzT+rQHdeL)7Pr=TxF(je8f-BQpIFj^T&!VsXhAYDD|a+tA(o?`A< zo8NbDYa+H-FL7{bn-yzxxrl~(cJ?fqPJMjeOHiWU)`StdSYF_(v^`VV(9qXSUy-eR zj!tzhFC62iTx5=M^4gyuzIVRQ_`d?mK)`hG7S=x(r~m%P{EhrWsk(yne=_*bQrW*@ z0d?=D+}{dke+B+pL--eT<~<|r_t5s=Q__Eh|7RxqUtjTWb{_lyRzrugb!TSrIhWQ8l*NnVhS^S!X@fV8~{6ARy zJtyN=_^*42f5CM~|A7C;j^eNQU$-Ux!b?&9IsCsjDSie2YWV*JCS&^p{EHj#D~DfA z*S|OvyqBl`@&EnJko^_^pLWMzXaInc3jp{pE96)Bf9m_c!_RpB2LD6*D@cRAOE&-j P|NioMUm$7xzn%R*QIK?5 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/系统表.png b/yxt-wms-biz/docs/sheji/系统表.png new file mode 100644 index 0000000000000000000000000000000000000000..f091d4e20090236c34c6a442c724366a1a18a129 GIT binary patch literal 55958 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 literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/pom.xml b/yxt-wms-biz/pom.xml new file mode 100644 index 0000000000..d160d96397 --- /dev/null +++ b/yxt-wms-biz/pom.xml @@ -0,0 +1,134 @@ + + + + + com.yxt + yxt-parent + 0.0.1 + + + 4.0.0 + + yxt-wms-biz + com.yxt.wms + 2.0.1 + + + + com.yxt + yxt-common-base + 0.0.1 + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + mysql + mysql-connector-java + runtime + + + + com.baomidou + mybatis-plus-boot-starter + + + com.baomidou + mybatis-plus-annotation + + + junit + junit + compile + + + + org.projectlombok + lombok + 1.18.26 + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + cn.dev33 + sa-token-spring-boot-starter + 1.37.0 + + + cn.hutool + hutool-all + 5.8.23 + + + cn.hutool + hutool-core + 5.8.23 + + + com.google.zxing + core + 3.5.2 + + + com.alibaba + easyexcel + 3.3.2 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + 2.5.6 + + + + repackage + + + + + + + + src/main/java + + **/*Mapper.xml + + + + src/main/resources + + **/*.* + + false + + + + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/YxtWmsApplication.java b/yxt-wms-biz/src/main/java/com/yxt/wms/YxtWmsApplication.java new file mode 100644 index 0000000000..394cb71920 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/YxtWmsApplication.java @@ -0,0 +1,24 @@ +package com.yxt.wms; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableScheduling; + +/** + * @author dimengzhe + */ +@SpringBootApplication(scanBasePackages = { + "com.yxt.wms.config", + "com.yxt.common.base.config", + "com.yxt.wms" +}) +// 启用自带定时任务 +@EnableScheduling +@EnableFeignClients(basePackages = {"com.yxt.*.*"}) +public class YxtWmsApplication { + public static void main(String[] args) { + SpringApplication.run(YxtWmsApplication.class, args); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/AdminHomeRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/AdminHomeRest.java new file mode 100644 index 0000000000..c4af8c93cd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/AdminHomeRest.java @@ -0,0 +1,16 @@ +package com.yxt.wms.apiadmin; + +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +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 java.util.List; + +@RestController("com.yxt.wms.apiadmin.AdminHomeRest") +@RequestMapping("/apiadmin/home") +public class AdminHomeRest { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaRest.java new file mode 100644 index 0000000000..370c645bd9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaRest.java @@ -0,0 +1,69 @@ +package com.yxt.wms.apiadmin.base; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehousearea.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/28 8:53 + */ +@Api(tags = "库区信息") +@RestController +@RequestMapping("/apiadmin/base/wmswarehousearea") +public class WmsWarehouseAreaRest { + + @Autowired + WmsWarehouseAreaService wmsWarehouseAreaService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return wmsWarehouseAreaService.listPage(pq); + } + @ApiOperation("查询所有的库区") + @GetMapping("/listAll") + public ResultBean listAll() { + return wmsWarehouseAreaService.getAllType(); + } + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WmsWarehouseAreaDto dto) { + return wmsWarehouseAreaService.saveOrUpdate(dto); + } + + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return wmsWarehouseAreaService.initialization(sid); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{sid}") + public ResultBean delete(@PathVariable("sid") String sid) { + return wmsWarehouseAreaService.delete(sid); + } + + + @ApiOperation("更改可用状态") + @GetMapping("/updateIsEnable/{sid}/{isEnable}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("isEnable")String isEnable) { + return wmsWarehouseAreaService.updateIsEnable(sid,isEnable); + } + + @ApiOperation("根据仓库sid查询所有库位") + @GetMapping("/selectAll") + public ResultBean> selectAll(@RequestParam("ckSid") String ckSid){ + ResultBean rb = ResultBean.fireFail(); + List vo = wmsWarehouseAreaService.selectAll(ckSid); + return rb.success().setData(vo); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaTypeRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaTypeRest.java new file mode 100644 index 0000000000..e4e13d4a4b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseAreaTypeRest.java @@ -0,0 +1,62 @@ +package com.yxt.wms.apiadmin.base; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouseareatype.WmsWarehouseAreaTypeDto; +import com.yxt.wms.biz.base.wmswarehouseareatype.WmsWarehouseAreaTypeQuery; +import com.yxt.wms.biz.base.wmswarehouseareatype.WmsWarehouseAreaTypeService; +import com.yxt.wms.biz.base.wmswarehouseareatype.WmsWarehouseAreaTypeVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author wangpengfei + * @date 2024/3/18 14:57 + */ +@Api(tags = "库区类型信息") +@RestController +@RequestMapping("/apiadmin/base/wmswarehouseareatype") +public class WmsWarehouseAreaTypeRest { + + @Autowired + WmsWarehouseAreaTypeService wmsWarehouseAreaTypeService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return wmsWarehouseAreaTypeService.listPage(pq); + } + @ApiOperation("查询所有的") + @GetMapping("/listAll") + public ResultBean listAll() { + return wmsWarehouseAreaTypeService.listAll(); + } + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WmsWarehouseAreaTypeDto dto) { + return wmsWarehouseAreaTypeService.saveOrUpdate(dto); + } + + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return wmsWarehouseAreaTypeService.initialization(sid); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{sid}") + public ResultBean delete(@PathVariable("sid") String sid) { + return wmsWarehouseAreaTypeService.delete(sid); + } + + + @ApiOperation("更改可用状态") + @GetMapping("/updateIsEnable/{sid}/{isEnable}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("isEnable")String isEnable) { + return wmsWarehouseAreaTypeService.updateIsEnable(sid,isEnable); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseExtendRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseExtendRest.java new file mode 100644 index 0000000000..21e1f75113 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseExtendRest.java @@ -0,0 +1,39 @@ +package com.yxt.wms.apiadmin.base; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendDto; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendQuery; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendService; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendVo; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/3/18 10:52 + */ +public class WmsWarehouseExtendRest { + + @Autowired + WmsWarehouseExtendService wmsWarehouseExtendService; + + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WmsWarehouseExtendDto dto) { + return wmsWarehouseExtendService.saveOrUpdate(dto); + } + + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return wmsWarehouseExtendService.initialization(sid); + } + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseInfoRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseInfoRest.java new file mode 100644 index 0000000000..aacf482ecd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseInfoRest.java @@ -0,0 +1,70 @@ +package com.yxt.wms.apiadmin.base; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaAllVo; +import com.yxt.wms.biz.base.wmswarehouseinfo.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/27 16:14 + */ +@Api(tags = "仓库信息") +@RestController +@RequestMapping("/apiadmin/base/wmswarehouseinfo") +public class WmsWarehouseInfoRest { + + @Autowired + WmsWarehouseInfoService wmsWarehouseService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return wmsWarehouseService.listPage(pq); + } + @ApiOperation("查询所有的仓库") + @GetMapping("/listAll") + public ResultBean listAll() { + return wmsWarehouseService.listAll(); + } + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WmsWarehouseInfoDto dto) { + return wmsWarehouseService.saveOrUpdate(dto); + } + + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return wmsWarehouseService.initialization(sid); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{sid}") + public ResultBean delete(@PathVariable("sid") String sid) { + return wmsWarehouseService.delete(sid); + } + + + @ApiOperation("更改可用状态") + @GetMapping("/updateStatus/{sid}/{state}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("state")String state) { + return wmsWarehouseService.updateIsEnable(sid,state); + } + + @ApiOperation("查询所有仓库") + @GetMapping("/selectAll") + public ResultBean> selectAll(){ + ResultBean rb = ResultBean.fireFail(); + List wmsWarehouseAreaAllVos = wmsWarehouseService.selectAll(); + return rb.success().setData(wmsWarehouseAreaAllVos); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java new file mode 100644 index 0000000000..ce59b9bdba --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/base/WmsWarehouseRackRest.java @@ -0,0 +1,62 @@ +package com.yxt.wms.apiadmin.base; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackDto; +import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackQuery; +import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackService; +import com.yxt.wms.biz.base.wmswarehouserack.WmsWarehouseRackVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author wangpengfei + * @date 2024/2/28 8:59 + */ +@Api(tags = "货架信息") +@RestController +@RequestMapping("/apiadmin/base/wmswarehouserack") +public class WmsWarehouseRackRest { + + @Autowired + WmsWarehouseRackService wmsWarehouseRackService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return wmsWarehouseRackService.listPage(pq); + } + @ApiOperation("查询所有的库区") + @GetMapping("/getAllType") + public ResultBean getAllType() { + return wmsWarehouseRackService.getAllType(); + } + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WmsWarehouseRackDto dto) { + return wmsWarehouseRackService.saveOrUpdate(dto); + } + + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return wmsWarehouseRackService.initialization(sid); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{sid}") + public ResultBean delete(@PathVariable("sid") String sid) { + return wmsWarehouseRackService.delete(sid); + } + + + @ApiOperation("更改可用状态") + @GetMapping("/updateIsEnable/{sid}/{isEnable}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("isEnable")String isEnable) { + return wmsWarehouseRackService.updateIsEnable(sid,isEnable); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationDetailRest.java new file mode 100644 index 0000000000..8d9b13dc47 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationDetailRest.java @@ -0,0 +1,56 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationDto; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationQuery; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationService; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationVo; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailDto; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailQuery; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailService; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/3/27 14:38 + */ +@Api(tags = "预约入库明细表") +@RestController +@RequestMapping("/apiadmin/inventory/warereservadetail") +public class WarehousingReservationDetailRest { + @Autowired + WarehousingReservationDetailService warehousingReservationDetailService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return warehousingReservationDetailService.listPage(pq); + } + + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WarehousingReservationDetailDto dto) { + return warehousingReservationDetailService.saveOrUpdate(dto); + } + + @ApiOperation("根据预约sid查询明细") + @GetMapping("/selByReservationSid/{sid}") + public ResultBean> selByReservationSid(@PathVariable("sid") String sid) { + return warehousingReservationDetailService.selByReservationSid(sid); + } + + @ApiOperation("更改可用状态") + @GetMapping("/updateStatus/{sid}/{state}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("state")String state) { + return warehousingReservationDetailService.updateIsEnable(sid,state); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationRest.java new file mode 100644 index 0000000000..29e1f0ec39 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WarehousingReservationRest.java @@ -0,0 +1,55 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationDto; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationQuery; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationService; +import com.yxt.wms.biz.inventory.warehousingreservation.WarehousingReservationVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author wangpengfei + * @date 2024/2/27 16:14 + */ +@Api(tags = "预约入库") +@RestController +@RequestMapping("/apiadmin/inventory/warereservation") +public class WarehousingReservationRest { + + @Autowired + WarehousingReservationService warehouseReservationService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + return warehouseReservationService.listPage(pq); + } + + + @ApiOperation("保存修改") + @PostMapping("/saveOrUpdate") + public ResultBean saveOrUpdate(@RequestBody WarehousingReservationDto dto) { + return warehouseReservationService.saveOrUpdate(dto); + } + @ApiOperation("保存") + @PostMapping("/save") + public ResultBean save(@RequestBody WarehousingReservationDto dto) { + return warehouseReservationService.save(dto); + } + @ApiOperation("初始化") + @GetMapping("/initialization/{sid}") + public ResultBean initialization(@PathVariable("sid") String sid) { + return warehouseReservationService.initialization(sid); + } + + @ApiOperation("更改可用状态") + @GetMapping("/updateStatus/{sid}/{state}") + public ResultBean updateIsEnable(@PathVariable("sid") String sid,@PathVariable("state")String state) { + return warehouseReservationService.updateIsEnable(sid,state); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsAnsBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsAnsBillRest.java new file mode 100644 index 0000000000..45a3f8cfb3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsAnsBillRest.java @@ -0,0 +1,55 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsansbill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Api(tags = "预期到货通知单") +@RestController +@RequestMapping("/apiadmin/WmsAnsBill") +public class WmsAnsBillRest { + + @Autowired + private WmsAnsBillService wmsAnsBillService; + + + @PostMapping("saveOrUpdate") + @ApiOperation("新增修改保存") + ResultBean saveOrUpdate(@RequestBody WmsAnsBillDto dto) { + return wmsAnsBillService.saveOrUpdateBill(dto); + } + + /* @PostMapping("pageList") + @ApiOperation("收货单据选择") + ResultBean> pageList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsAnsBillService.listPage(pagerQuery); + return rb.success().setData(pv); + }*/ + + @PostMapping("listPage") + @ApiOperation("分页列表") + ResultBean> listPage(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsAnsBillService.listPages(pagerQuery); + return rb.success().setData(pv); + } + + @GetMapping("details") + @ApiOperation("详情") + ResultBean details(@RequestParam("sid") String sid) { + return wmsAnsBillService.details(sid); + } + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsDistributeBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsDistributeBillRest.java new file mode 100644 index 0000000000..40db9fc578 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsDistributeBillRest.java @@ -0,0 +1,56 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsdistributebill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Api(tags = "配货单据") +@RestController +@RequestMapping("/apiadmin/WmsDistributeBill") +public class WmsDistributeBillRest { + + @Autowired + private WmsDistributeBillService wmsDistributeBillService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + ResultBean> listPage(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsDistributeBillService.listPage(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("从出库新增配货单") + @GetMapping("/getInit") + ResultBean getInit(@RequestParam("sid") String sid) { + return wmsDistributeBillService.getInit(sid); + } + + @ApiOperation("详情/编辑初始化") + @GetMapping("/details") + ResultBean details(@RequestParam("sid") String sid) { + return wmsDistributeBillService.details(sid); + } + + @ApiOperation("新增修改保存") + @PostMapping("/saveOrUpdateBill") + ResultBean saveOrUpdateBill(@RequestBody WmsDistributeBillDto dto) { + return wmsDistributeBillService.saveOrUpdateBill(dto); + } + + @ApiOperation("确认") + @PostMapping("/confirm") + ResultBean confirm(@RequestBody WmsDistributeBillDto dto) { + return wmsDistributeBillService.confirm(dto); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillDetailRest.java new file mode 100644 index 0000000000..893a2426b9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillDetailRest.java @@ -0,0 +1,49 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.*; + +/** + * Project: yxt-wms(调拨单)
    + * File: WmsInventoryAllocatebillDetailFeignFallback.java
    + * Class: com.yxt.wms.biz.wmsinventoryallocatebilldetail.WmsInventoryAllocatebillDetailRest
    + * Description: (调拨单-明细).
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-25 16:04:08
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "(调拨单-明细)") +@RestController +@RequestMapping("v1/wmsinventoryallocatebilldetail") +public class WmsInventoryAllocatebillDetailRest { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillRest.java new file mode 100644 index 0000000000..13a36116b9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryAllocatebillRest.java @@ -0,0 +1,97 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Project: yxt-wms(调拨单)
    + * File: WmsInventoryAllocatebillFeignFallback.java
    + * Class: com.yxt.wms.biz.wmsinventoryallocatebill.WmsInventoryAllocatebillRest
    + * Description: (调拨单)-调出方操作.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-25 16:04:08
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "(调拨单)-调出方操作") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventoryallocatebill") +public class WmsInventoryAllocatebillRest { + + @Autowired + private WmsInventoryAllocateBillService wmsInventoryAllocateBillService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryAllocateBillService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryAllocateBillDtoNew dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryAllocateBillService.saveOrUpdateDto(dto); + return rb.success(); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryAllocateBillService.delAll(sids); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetailsVoNew vo = wmsInventoryAllocateBillService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + @ApiOperation("调拨") + @PostMapping("/allocation") + public ResultBean allocation(@RequestBody WmsInventoryAllocateBillDtoNew dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryAllocateBillService.allocation(dto); + return rb.success(); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBatchRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBatchRest.java new file mode 100644 index 0000000000..611f4bfc1e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBatchRest.java @@ -0,0 +1,89 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorybatch.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchFeignFallback.java
    + * Class: com.yxt.wms.biz.wmsinventorybatch.WmsInventoryBatchRest
    + * Description: 商品库存-批次属性.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "商品库存-批次属性") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorybatch") +public class WmsInventoryBatchRest { + + @Autowired + private WmsInventoryBatchService wmsInventoryBatchService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryBatchService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryBatchDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryBatchService.saveOrUpdateDto(dto); + return rb.success(); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryBatchService.delBySids(sids); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBatchDetailsVo vo = wmsInventoryBatchService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillDetailRest.java new file mode 100644 index 0000000000..5694c1e091 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillDetailRest.java @@ -0,0 +1,17 @@ +package com.yxt.wms.apiadmin.inventroy; + +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author wangpengfei + * @date 2024/3/1 10:34 + */ +@Api(tags = "出入库单明细") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorybilldetail") +public class WmsInventoryBillDetailRest { + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillRest.java new file mode 100644 index 0000000000..cc7d82bafe --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryBillRest.java @@ -0,0 +1,84 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorybill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/29 11:17 + */ +@Api(tags = "出入库单据") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorybill") +public class WmsInventoryBillRest { + + @Autowired + WmsInventoryBillService wmsInventoryBillService; + @Autowired + HttpServletResponse response; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryBillService.listPage(pq); + return rb.success().setData(pv); + } + + @ApiOperation("入库单") + @PostMapping("/inStorage") + public ResultBean inStorage(@RequestBody WmsInventoryBillInDto dto) { + return wmsInventoryBillService.inStorage(dto); + } + + + @ApiOperation("出库单") + @PostMapping("/outStorage") + public ResultBean outStorage(@RequestBody WmsInventoryBillOutDto dto) { + return wmsInventoryBillService.outStorage(dto); + } + + @ApiOperation("入库单详情") + @GetMapping("/details") + ResultBean inDetails(@SpringQueryMap InStorageDetailsQuery inStorageDetailsQuery) { + return wmsInventoryBillService.inDetails(inStorageDetailsQuery); + } + +// @ApiOperation("出库单详情") +// @GetMapping("/outDetails") + ResultBean outDetails(@SpringQueryMap OutStorageDetailsQuery outStorageDetailsQuery) { + return wmsInventoryBillService.outDetails(outStorageDetailsQuery); + } + + @PostMapping("/exportExcel") + @ApiOperation(value = "导出") + public void exportExcel(@RequestBody WmsInventoryBillQuery query) { + //得到所有要导出的数据 + List exportVoList = wmsInventoryBillService.listExcel(query); + //定义导出的excel名字 + String excelName = "出入库查询"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsInventoryBillExcelVo.class, response); + + } + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillDetailRest.java new file mode 100644 index 0000000000..b67e947fe6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillDetailRest.java @@ -0,0 +1,89 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailFeignFallback.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailRest
    + * Description: 库存盘点-明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "库存盘点-明细") +@RestController +@RequestMapping("wmsinventorycheckbilldetail") +public class WmsInventoryCheckbillDetailRest { + + @Autowired + private WmsInventoryCheckbillDetailService wmsInventoryCheckbillDetailService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryCheckbillDetailService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryCheckbillDetailDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryCheckbillDetailService.saveOrUpdateDto(dto); + return rb.success(); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryCheckbillDetailService.delBySids(sids); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryCheckbillDetailDetailsVo vo = wmsInventoryCheckbillDetailService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java new file mode 100644 index 0000000000..49c43f565a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryCheckbillRest.java @@ -0,0 +1,100 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorycheckbill.*; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDto; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillFeignFallback.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbill.WmsInventoryCheckbillRest
    + * Description: 库存盘点.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "库存盘点") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorycheckbill") +public class WmsInventoryCheckbillRest { + + @Autowired + private WmsInventoryCheckbillService wmsInventoryCheckbillService; + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryCheckbillService.listPageVo(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryCheckbillDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryCheckbillService.saveOrUpdateDto(dto); + return rb.success(); + } + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryCheckbillService.delBySids(sids); + return rb.success(); + } + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryCheckbillDetailsVo vo = wmsInventoryCheckbillService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + @ApiOperation("盘点") + @PostMapping("/inven") + public ResultBean inven(@RequestBody WmsInventoryCheckbillDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryCheckbillService.inven(dto); + return rb.success(); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRecordRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRecordRest.java new file mode 100644 index 0000000000..3a4f194007 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRecordRest.java @@ -0,0 +1,168 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryQuery; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVoExcelVo; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.*; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.*; +import com.yxt.wms.biz.inventory.wmsoutbill.WmsOutBillVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordFeignFallback.java
    + * Class: inventroy.biz.wmsinventoryrecord.WmsInventoryRecordRest
    + * Description: 库存出入库记录.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "库存出入库记录") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventoryrecord") +public class WmsInventoryRecordRest { + + @Autowired + private WmsInventoryRecordService wmsInventoryRecordService; + + @Autowired + HttpServletResponse response; + + @ApiOperation("收发存明细报表") + @PostMapping("/inventoryDetailsRecord") + public ResultBean> inventoryDetailsRecord(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryRecordService.inventoryDetailsRecord(pq); + return rb.success().setData(pv); + } + + @ApiOperation("库存统计报表") + @PostMapping("/inventoryStats") + public ResultBean inventoryStats(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryCountReportVo vo = wmsInventoryRecordService.inventoryStats(pq); + return rb.success().setData(vo); + } + + @ApiOperation("入库统计报表详情") + @PostMapping("/inventoryInboundStats") + public ResultBean> inventoryInboundStats(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryRecordService.inventoryInboundStats(pq); + return rb.success().setData(pv); + } + + @ApiOperation("出库统计报表详情") + @PostMapping("/inventoryOutboundStats") + public ResultBean> inventoryOutboundStats(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryRecordService.inventoryOutboundStats(pq); + return rb.success().setData(pv); + } + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryRecordService.listPageVo(pq); + return rb.success().setData(pv); + } + + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventoryRecordDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryRecordService.saveOrUpdateDto(dto); + return rb.success(); + } + + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventoryRecordService.delBySids(sids); + return rb.success(); + } + + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventoryRecordDetailsVo vo = wmsInventoryRecordService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + @ApiOperation("库存出入库记录") + @GetMapping("/getWmsInventoryRecordList") + ResultBean> getWmsInventoryRecordList(@RequestParam("sid")String sid){ + return wmsInventoryRecordService.getWmsInventoryRecordList(sid); + } + + @ApiOperation("出入库查询") + @PostMapping("/pageList") + ResultBean> pageList(@RequestBody PagerQuery pagerQuery){ + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryRecordService.listPage(pagerQuery); + return rb.success().setData(pv); + } + + @PostMapping("/exportExcel") + @ApiOperation(value = "导出") + public void exportExcel(@RequestBody WmsInventoryRecordsQuery query) { + //得到所有要导出的数据 + List exportVoList = wmsInventoryRecordService.listExcel(query); + //定义导出的excel名字 + String excelName = "出入库查询"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsInventoryRecordsExcelVo.class, response); + + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java new file mode 100644 index 0000000000..89c55afd40 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventoryRest.java @@ -0,0 +1,191 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.*; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryDto; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryQuery; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/28 10:51 + */ +@Api(tags = "库存信息") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventory") +public class WmsInventoryRest { + + @Autowired + WmsInventoryService wmsInventoryService; + @Autowired + HttpServletResponse response; + + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryService.listPage(pq); + return rb.success().setData(pv); + } + + @ApiOperation("删除/批量删除") + @DeleteMapping("/delBySids") + ResultBean delBySids(@RequestBody String[] sids) { + return wmsInventoryService.delAllBySids(sids); + } + + // @ApiOperation("入库") +// @GetMapping("/warehousing") + public ResultBean warehousing(WmsInventoryDto dto) { + return wmsInventoryService.warehousing(dto); + } + + /* @ApiOperation("编辑") + @PostMapping("/updateWmsInventory") + ResultBean updateWmsInventory(@RequestBody WmsInventoryUpdateDto dto) { + return wmsInventoryService.updateWmsInventory(dto); + } + + @ApiOperation("新增") + @PostMapping("/saveWmsInventory") + ResultBean saveWmsInventory(@RequestBody WmsInventorySaveDto dto) { + return wmsInventoryService.saveWmsInventory(dto); + }*/ + + + + /*@ApiOperation("初始化") + @PostMapping("/init") + ResultBean init(@RequestParam("sid") String sid) { + return wmsInventoryService.init(sid); + }*/ + + /* @ApiOperation("批量修改销售价") + @PostMapping("/updatePrice") + ResultBean updatePrice(@RequestBody WmsInventoryUpdatePrice wmsInventoryUpdatePrice) { + return wmsInventoryService.updatePrice(wmsInventoryUpdatePrice); + }*/ + + /* @ApiOperation("收发存") + @PostMapping("/getBillList") + ResultBean> getBillList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryService.getBillList(pagerQuery); + return rb.success().setData(pv); + }*/ + + @PostMapping("/exportExcel") + @ApiOperation(value = "导出") + public void exportExcel(@RequestBody WmsInventoryQuery query) { + //得到所有要导出的数据 + List exportVoList = wmsInventoryService.listExcel(query); + //定义导出的excel名字 + String excelName = "库存列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsInventoryVoExcelVo.class, response); + + } + + @ApiOperation("修改库存数量") + @PostMapping("/updateInventoryCount") + ResultBean updateInventoryCount(@RequestBody WmsUpdateCountQuery query) { + return wmsInventoryService.updateInventoryCount(query); + } + + @ApiOperation("销售开单选择商品分页列表") + @PostMapping("/listPageSales") + public ResultBean> listPageSales(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryService.listPageSales(pq); + return rb.success().setData(pv); + } + + @ApiOperation("查询分公司下所有的商品信息") + @PostMapping("/getPackageGoodsVo") + public ResultBean> getPackageGoodsVo(@RequestBody PagerQuery pq) { + return wmsInventoryService.getPackageGoodsVo(pq); + } + + @ApiOperation("库龄查询") + @PostMapping("/inventoryAgeList") + public ResultBean> inventoryAgeList(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsInventoryService.inventoryAgeList(pq); + return rb.success().setData(pv); + } + + @PostMapping("/ageExportExcel") + @ApiOperation(value = "库龄查询导出") + public void ageExportExcel(@RequestBody WmsInventoryAgeQuery query) { + //得到所有要导出的数据 + List exportVoList = wmsInventoryService.ageExportExcel(query); + //定义导出的excel名字 + String excelName = "库领查询列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsInventoryAgeExportVo.class, response); + + } + + @ApiOperation("根据商品sid查询库存信息") + @PostMapping("/selectInvenBySkuSid") + public ResultBean selectInvenBySkuSid(@RequestParam("skuSid") String skuSid) { + ResultBean rb = ResultBean.fireFail(); + WmsGoodsInventoryVo wmsGoodsInventoryVo = wmsInventoryService.selectInvenBySkuSid(skuSid); + return rb.success().setData(wmsGoodsInventoryVo); + } + + @ApiOperation("盘库商品分页列表") + @PostMapping("/invenGoodsListPage") + public ResultBean> invenGoodsListPage(@RequestBody PagerQuery pq) { + return wmsInventoryService.invenGoodsListPage(pq); + } + + @ApiOperation("调拨商品分页列表") + @PostMapping("/alloGoodsListPage") + public ResultBean> alloGoodsListPage(@RequestBody PagerQuery pq) { + return wmsInventoryService.alloGoodsListPage(pq); + } + + @ApiOperation("旧件返厂商品分页列表") + @PostMapping("/returnGoodsListPage") + public ResultBean> returnGoodsListPage(@RequestBody PagerQuery pq) { + return wmsInventoryService.returnGoodsListPage(pq); + } + + @ApiOperation("旧件处理商品分页列表") + @PostMapping("/handleGoodsListPage") + public ResultBean> handleGoodsListPage(@RequestBody PagerQuery pq) { + return wmsInventoryService.handleGoodsListPage(pq); + } + + @ApiOperation("根据Sid获取库存实体") + @PostMapping("/fetchEntityBySid") + ResultBean fetchEntityBySid(@RequestParam("sid") String sid) { + return wmsInventoryService.fetchEntityBySid(sid); + } + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillDetailRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillDetailRest.java new file mode 100644 index 0000000000..9bc3cf23db --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillDetailRest.java @@ -0,0 +1,119 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryQuery; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVoExcelVo; +import com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailFeignFallback.java
    + * Class: wms.biz.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailRest
    + * Description: 库存结算明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "库存结算明细") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorysettlebilldetail") +public class WmsInventorySettlebillDetailRest{ + + @Autowired + private WmsInventorySettlebillDetailService wmsInventorySettlebillDetailService; + @Autowired + HttpServletResponse response; + + @PostMapping("/exportExcel") + @ApiOperation(value = "导出") + public void exportExcel(@RequestBody WmsInventorySettlebillDetailQuery query) { + //得到所有要导出的数据 + List exportVoList = wmsInventorySettlebillDetailService.listExcel(query); + //定义导出的excel名字 + String excelName = "结转库存列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsInventorySettlebillExportVo.class, response); + + } + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventorySettlebillDetailService.listPageVo(pq); + return rb.success().setData(pv); + } + + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventorySettlebillDetailDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventorySettlebillDetailService.saveOrUpdateDto(dto); + return rb.success(); + } + + + @ApiOperation("根据sid批量删除") + @PostMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventorySettlebillDetailService.delBySids(sids); + return rb.success(); + } + + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventorySettlebillDetailDetailsVo vo = wmsInventorySettlebillDetailService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillRest.java new file mode 100644 index 0000000000..bae41ac0e4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInventorySettlebillRest.java @@ -0,0 +1,124 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryQuery; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVoExcelVo; +import com.yxt.wms.biz.inventory.wmsinventorysettlebill.*; +import com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillFeignFallback.java
    + * Class: wms.biz.wmsinventorysettlebill.WmsInventorySettlebillRest
    + * Description: 库存结算单.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Api(tags = "库存结算单") +@RestController +@RequestMapping("/apiadmin/inventory/wmsinventorysettlebill") +public class WmsInventorySettlebillRest { + + @Autowired + private WmsInventorySettlebillService wmsInventorySettlebillService; + @Autowired + private WmsInventorySettlebillDetailService wmsInventorySettlebillDetailService; + + @ApiOperation("库存结转") + @PostMapping("/saveSettlebill") + public ResultBean saveSettlebill(@RequestBody WmsInventorySettlebillDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventorySettlebillService.saveSettlebill(dto); + return rb.success(); + } + + @ApiOperation("结转记录查询") + @PostMapping("/carryForwardList") + public ResultBean> carryForwardList(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventorySettlebillService.carryForwardList(pq); + return rb.success().setData(pv); + } + + @ApiOperation("根据条件分页查询数据的列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq){ + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = wmsInventorySettlebillService.listPageVo(pq); + return rb.success().setData(pv); + } + + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean save(@RequestBody WmsInventorySettlebillDto dto){ + ResultBean rb = ResultBean.fireFail(); + wmsInventorySettlebillService.saveOrUpdateDto(dto); + return rb.success(); + } + + + @ApiOperation("根据sid批量删除") + @DeleteMapping("/delBySids") + public ResultBean delBySids(@RequestBody String[] sids){ + ResultBean rb = ResultBean.fireFail(); + wmsInventorySettlebillService.delBySids(sids); + for (String sid : sids) { + wmsInventorySettlebillDetailService.delByMainSid(sid); + } + return rb.success(); + } + + + @ApiOperation("根据SID获取一条记录") + @GetMapping("/fetchDetailsBySid/{sid}") + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid){ + ResultBean rb = ResultBean.fireFail(); + WmsInventorySettlebillDetailsVo vo = wmsInventorySettlebillService.fetchDetailsVoBySid(sid); + return rb.success().setData(vo); + } + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldInventoryRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldInventoryRest.java new file mode 100644 index 0000000000..4576aa69df --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldInventoryRest.java @@ -0,0 +1,114 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.base.utils.ExportExcelUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsoldinventory.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Api(tags = "旧件") +@RestController +@RequestMapping("/apiadmin/WmsOldInventory") +public class WmsOldInventoryRest { + + @Autowired + private WmsOldInventoryService wmsOldInventoryService; + @Autowired + HttpServletResponse response; + + @ApiOperation("待入库旧件列表") + @PostMapping("/listPage") + ResultBean> listPage(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsOldInventoryService.listPage(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("旧件入库初始化") + @GetMapping("/getInit") + ResultBean getInit(@RequestParam("sid") String sid) { + return wmsOldInventoryService.getInit(sid); + } + + @ApiOperation("旧件入库保存") + @PostMapping("/saveInventory") + ResultBean saveInventory(@RequestBody WmsOldInventoryDto dto) { + return wmsOldInventoryService.saveInventory(dto); + } + + @ApiOperation("旧件库存查询") + @PostMapping("/oldPageList") + ResultBean> oldPageList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsOldInventoryService.oldPageList(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("删除/批量删除") + @DeleteMapping("/delBySids") + ResultBean delBySids(@RequestBody String[] sids) { + return wmsOldInventoryService.delAllBySids(sids); + } + + @ApiOperation("导出") + @PostMapping("/excelList") + public void excelList(@RequestBody WmsOldInventoryPageListQuery wmsOldInventoryPageListQuery) { + //得到所有要导出的数据 + List exportVoList = wmsOldInventoryService.listExcel(wmsOldInventoryPageListQuery); + //定义导出的excel名字 + String excelName = "旧件库存列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsOldInventoryExcelVo.class, response); + } + + @ApiOperation("库存出入库记录") + @GetMapping("/getDetailsList") + ResultBean getDetailsList(@RequestParam("sid") String sid) { + return wmsOldInventoryService.getDetailsList(sid); + } + + @ApiOperation("旧件出入库记录") + @PostMapping("/recordList") + ResultBean> recordList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsOldInventoryService.recordList(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("导出") + @PostMapping("/excelRecordList") + public void excelRecordList(@RequestBody WmsOldInventoryRecordListQuery wmsOldInventoryRecordListQuery) { + //得到所有要导出的数据 + List exportVoList = wmsOldInventoryService.excelRecordList(wmsOldInventoryRecordListQuery); + //定义导出的excel名字 + String excelName = "旧件出入库记录列表"; + String fileNameURL = ""; + try { + fileNameURL = URLEncoder.encode(excelName, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + ExportExcelUtils.export(fileNameURL, exportVoList, WmsOldInventoryRecordListExcelVo.class, response); + } + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldRegisterRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldRegisterRest.java new file mode 100644 index 0000000000..8b208b41b4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOldRegisterRest.java @@ -0,0 +1,37 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsoldregister.WmsOldRegisterDto; +import com.yxt.wms.biz.inventory.wmsoldregister.WmsOldRegisterQuery; +import com.yxt.wms.biz.inventory.wmsoldregister.WmsOldRegisterService; +import com.yxt.wms.biz.inventory.wmsoldregister.WmsOldRegisterVo; +import com.yxt.wms.biz.inventory.wmsoutbill.WmsOutBillVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +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; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Api(tags = "旧件回收登记") +@RestController +@RequestMapping("/apiadmin/WmsOldRegister") +public class WmsOldRegisterRest { + + @Autowired + private WmsOldRegisterService wmsOldRegisterService; + + @ApiOperation("新增修改保存") + @PostMapping("/saveorUpdateOldRegister") + ResultBean saveorUpdateOldRegister(@RequestBody WmsOldRegisterDto dto) { + return wmsOldRegisterService.saveorUpdateOldRegister(dto); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOutBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOutBillRest.java new file mode 100644 index 0000000000..e352d59fc1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsOutBillRest.java @@ -0,0 +1,58 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsoutbill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Api(tags = "出库单据") +@RestController +@RequestMapping("/apiadmin/WmsOutBill") +public class WmsOutBillRest { + + @Autowired + private WmsOutBillService wmsOutBillService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + ResultBean> pageList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsOutBillService.listPage(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("出库保存修改") + @PostMapping("/saveOrUpdateOutBill") + ResultBean saveOrUpdateOutBill(@RequestBody WmsOutBillDto dto) { + return wmsOutBillService.saveOrUpdateOutBill(dto); + } + + @ApiOperation("详情") + @GetMapping("/details") + ResultBean details(@RequestParam("sid") String sid) { + return wmsOutBillService.details(sid); + } + + @ApiOperation("选择商品分页列表") + @PostMapping("/getInventoryList") + ResultBean> getInventoryList(@RequestBody PagerQuery pagerQuery) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsOutBillService.getInventoryList(pagerQuery); + return rb.success().setData(pv); + } + + @ApiOperation("确认") + @PostMapping("/confirm") + ResultBean confirm(@RequestBody WmsOutBillDto dto) { + return wmsOutBillService.confirm(dto); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsReceiptBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsReceiptBillRest.java new file mode 100644 index 0000000000..12db67ca3f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsReceiptBillRest.java @@ -0,0 +1,73 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorybill.WmsInventoryBillQuery; +import com.yxt.wms.biz.inventory.wmsinventorybill.WmsInventoryBillVo; +import com.yxt.wms.biz.inventory.wmsreceiptbill.*; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetail; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Api(tags = "收货单据") +@RestController +@RequestMapping("/apiadmin/inventory/WmsReceiptBill") +public class WmsReceiptBillRest { + + @Autowired + private WmsReceiptBillService wmsReceiptBillService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsReceiptBillService.listPage(pq); + return rb.success().setData(pv); + } + + /* @ApiOperation("新增修改保存") + @PostMapping("/saveOrUpdate2") + ResultBean saveOrUpdate2(@RequestBody WmsReceiptBillDto dto) { + return wmsReceiptBillService.saveOrUpdateBill(dto); + } + */ + @ApiOperation("新增修改保存") + @PostMapping("/saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody WmsReceiptBillDto2 dto) { + return wmsReceiptBillService.saveOrUpdateBill2(dto); + } + + @ApiOperation("通知单收货单初始化") + @GetMapping("/getInitDetails") + ResultBean getInitDetails(@RequestParam("sourceSid") String sourceSid) { + return wmsReceiptBillService.getInitDetails(sourceSid); + } + + @ApiOperation("收货单据编辑初始化/详情") + @GetMapping("/getDetailsInit") + ResultBean getDetailsInit(@RequestParam("sid") String sid) { + return wmsReceiptBillService.getDetailsInit(sid); + } + + @ApiOperation("确认") + @PostMapping("/confirm") + ResultBean confirm(@RequestBody WmsReceiptBillDto2 dto) { + return wmsReceiptBillService.confirm(dto); + } + + @ApiOperation("删除/批量删除") + @DeleteMapping("/delBySids") + ResultBean delBySids(@RequestBody String[] sids) { + return wmsReceiptBillService.delAllBySids(sids); + } + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java new file mode 100644 index 0000000000..bf63d41f26 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsShelfBillRest.java @@ -0,0 +1,73 @@ +package com.yxt.wms.apiadmin.inventroy; + +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillPageVo; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillQuery; +import com.yxt.wms.biz.inventory.wmsshelfbill.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Api(tags = "上货架") +@RestController +@RequestMapping("/apiadmin/WmsShelfBill") +public class WmsShelfBillRest { + + @Autowired + private WmsShelfBillService wmsShelfBillService; + + @ApiOperation("分页列表") + @PostMapping("/listPage") + public ResultBean> listPage(@RequestBody PagerQuery pq) { + ResultBean> rb = ResultBean.fireFail(); + PagerVo pv = wmsShelfBillService.listPage(pq); + return rb.success().setData(pv); + } + + @ApiOperation("新增修改保存") + @PostMapping("/saveOrUpdate") + ResultBean saveOrUpdate(@RequestBody WmsShelfBillDto dto) { + return wmsShelfBillService.saveOrUpdateShelf(dto); + } + + @ApiOperation("删除/批量删除") + @DeleteMapping("/delBySids") + ResultBean delBySids(@RequestBody String[] sids) { + return wmsShelfBillService.delAllBySids(sids); + } + + @ApiOperation("详情") + @GetMapping("/details") + ResultBean details(@RequestParam("sid") String sid) { + return wmsShelfBillService.details(sid); + } + + /** + * 新增初始化 + * + * @param sid 收货单据sid + * @return + */ + @ApiOperation("新增初始化") + @GetMapping("/getInit") + ResultBean getInit(@RequestParam("sid") String sid,@RequestParam("orgPath")String orgPath,@RequestParam("userSid")String userSid) { + return wmsShelfBillService.getInit(sid,orgPath,userSid); + } + + @ApiOperation("确认") + @PostMapping("/confirm") + ResultBean confirm(@RequestBody WmsShelfBillDto dto) { + return wmsShelfBillService.confirm(dto); + } + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiwx/WxHomeRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiwx/WxHomeRest.java new file mode 100644 index 0000000000..70d00103de --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiwx/WxHomeRest.java @@ -0,0 +1,16 @@ +package com.yxt.wms.apiwx; + +import com.yxt.common.core.result.ResultBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController("com.yxt.wms.apiwx.WxHomeRest") +@RequestMapping("/apiwx/home") +public class WxHomeRest { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseArea.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseArea.java new file mode 100644 index 0000000000..8518704fab --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseArea.java @@ -0,0 +1,28 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; +import java.util.UUID; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsWarehouseArea extends BaseEntity { +// private String id; +// private String sid= UUID.randomUUID().toString(); +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// private Date createTime; +// private String remarks; +// private String isEnable; + private String areaName;//库位名称 + private String areaCode;//库位编码 + private String warehouseSid;//仓库sid + private String volume;//库位容量 + private String unit;//计量单位 + private String areaTypeSid;//货区类型 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaAllVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaAllVo.java new file mode 100644 index 0000000000..f2a58d43b9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaAllVo.java @@ -0,0 +1,56 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.base.wmswarehousearea; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(仓库)
    + * File: WmsWarehouseAreaVo.java
    + * Class: com.yxt.wms.api.wmswarehousearea.WmsWarehouseAreaVo
    + * Description: 库区 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-09 14:35:56
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库区 视图数据详情", description = "库区 视图数据详情") +public class WmsWarehouseAreaAllVo implements Vo { + + private String sid; + @ApiModelProperty("库位名称") + private String areaName; + @ApiModelProperty("库位编码") + private String areaCode; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaDto.java new file mode 100644 index 0000000000..21e878c5b4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaDto.java @@ -0,0 +1,28 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsWarehouseAreaDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String areaName;//库位名称 + private String areaCode;//库位编码 + private String warehouseSid;//仓库sid + private String volume;//库位容量 + private String unit;//计量单位 + private String areaTypeSid;//货区类型 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.java new file mode 100644 index 0000000000..e8837df2ec --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.java @@ -0,0 +1,24 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsWarehouseAreaMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsWarehouseAreaVo initialization (@Param("sid") String sid); + + @Select("select * from wms_warehouse_area where warehouseSid = #{ckSid}") + List selectAll(String ckSid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.xml new file mode 100644 index 0000000000..4cdd80de77 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaQuery.java new file mode 100644 index 0000000000..dc95bb8ee3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseAreaQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaService.java new file mode 100644 index 0000000000..d357cde69d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaService.java @@ -0,0 +1,93 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsWarehouseAreaService extends MybatisBaseService { + + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(StringUtils.isNotBlank(query.getName())){ + qw.like("areaName",query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + public ResultBean getAllType() { + ResultBean rb = ResultBean.fireFail(); + List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable",1)); + return rb.success().setData(pagging); + } + + public ResultBean saveOrUpdate(WmsWarehouseAreaDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsWarehouseArea wmsWarehouseArea = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseArea, "id", "sid"); + wmsWarehouseArea.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouseArea); + } else { + WmsWarehouseArea wmsWarehouseArea = new WmsWarehouseArea(); + sid = wmsWarehouseArea.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseArea, "id", "sid"); + wmsWarehouseArea.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseArea); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseArea wmsWarehouseArea = fetchBySid(sid); + if (null != wmsWarehouseArea) { + baseMapper.deleteById(wmsWarehouseArea.getId()); + } + return rb.success(); + } + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseArea wmsWarehouseArea = fetchBySid(sid); + if (null != wmsWarehouseArea) { + wmsWarehouseArea.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseArea); + } + return rb.success().setMsg("成功"); + } + + public List selectAll(String ckSid) { + return baseMapper.selectAll(ckSid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaVo.java new file mode 100644 index 0000000000..daf2d272c4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehousearea/WmsWarehouseAreaVo.java @@ -0,0 +1,34 @@ +package com.yxt.wms.biz.base.wmswarehousearea; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseAreaVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String areaName;//库位名称 + private String areaCode;//库位编码 + private String warehouseSid;//仓库sid + private String volume;//库位容量 + private String unit;//计量单位 + private String areaTypeSid;//货区类型 + private String warehouseName;//仓库名称 + private String areaTypeName;//货区类型名称 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaType.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaType.java new file mode 100644 index 0000000000..916b8443cf --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaType.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsWarehouseAreaType extends BaseEntity { + + private String warehouseAreaTypeName;//库位类型名称 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeDto.java new file mode 100644 index 0000000000..c368768fbb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeDto.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsWarehouseAreaTypeDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String warehouseAreaTypeName;//库位类型名称 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.java new file mode 100644 index 0000000000..dff49768f8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsWarehouseAreaTypeMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsWarehouseAreaTypeVo initialization (@Param("sid") String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.xml new file mode 100644 index 0000000000..c9a6c7995f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeQuery.java new file mode 100644 index 0000000000..203efd4f63 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseAreaTypeQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeService.java new file mode 100644 index 0000000000..f8f4d52bf6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeService.java @@ -0,0 +1,89 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsWarehouseAreaTypeService extends MybatisBaseService { + + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaTypeQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(StringUtils.isNotBlank(query.getName())){ + qw.like("areaName",query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + public ResultBean listAll() { + ResultBean rb = ResultBean.fireFail(); + List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable",1)); + return rb.success().setData(pagging); + } + + public ResultBean saveOrUpdate(WmsWarehouseAreaTypeDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsWarehouseAreaType wmsWarehouseArea = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseArea, "id", "sid"); + wmsWarehouseArea.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouseArea); + } else { + WmsWarehouseAreaType wmsWarehouseArea = new WmsWarehouseAreaType(); + sid = wmsWarehouseArea.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseArea, "id", "sid"); + wmsWarehouseArea.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseArea); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaTypeVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaType wmsWarehouseArea = fetchBySid(sid); + if (null != wmsWarehouseArea) { + baseMapper.deleteById(wmsWarehouseArea.getId()); + } + return rb.success(); + } + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseAreaType wmsWarehouseArea = fetchBySid(sid); + if (null != wmsWarehouseArea) { + wmsWarehouseArea.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseArea); + } + return rb.success().setMsg("成功"); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeVo.java new file mode 100644 index 0000000000..7909f2213a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseareatype/WmsWarehouseAreaTypeVo.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.base.wmswarehouseareatype; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseAreaTypeVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String warehouseAreaTypeName;//库位类型名称 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtend.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtend.java new file mode 100644 index 0000000000..2bdcd70163 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtend.java @@ -0,0 +1,31 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:36 + */ +@Data +public class WmsWarehouseExtend extends BaseEntity { + + private String warehouseName;//仓库名称 + private String warehouseCode;//仓库编码 + private String contacts;//联系人 + private String mob;//手机 + private String telephone;//联系电话 + private String manager;//主管 + private String areaSid;//地区sid + private String address;//地址 + private String longitude;//经度 + private String latitude;//纬度 + private String warehouseTypeKey;//仓库类型Key + private String warehouseTypeValue;//仓库类型value + private String usageStatus;//使用状态,0停用 1正常 + private String squareMeter;//平方米 + private String sortNo;//创建组织sid + private String useOrgSid;//创建组织sid + private String createOrgSid;//创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendDto.java new file mode 100644 index 0000000000..fd7d994b7d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendDto.java @@ -0,0 +1,36 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsWarehouseExtendDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String warehouseSid;//仓库sid + private String markupRate1;//加价率1 + private String markupRate2;//加价率2 + private String markupRate3;//加价率3 + private String markupRate4;//加价率4 + private String markupRate5;//加价率5 + + + + + + + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.java new file mode 100644 index 0000000000..981963ccad --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsWarehouseExtendMapper extends BaseMapper { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.xml new file mode 100644 index 0000000000..052328d163 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendQuery.java new file mode 100644 index 0000000000..e994faefc4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseExtendQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendService.java new file mode 100644 index 0000000000..23e462d31f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendService.java @@ -0,0 +1,64 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsWarehouseExtendService extends MybatisBaseService { + + + public ResultBean saveOrUpdate(WmsWarehouseExtendDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; +// for (WmsWarehouseExtendDto dto : dtos) { + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsWarehouseExtend wmsWarehouse = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouse); + } else { + WmsWarehouseExtend wmsWarehouse = new WmsWarehouseExtend(); + sid = wmsWarehouse.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouse); + } +// } + + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseExtendVo vo = new WmsWarehouseExtendVo(); + WmsWarehouseExtend wmsWarehouse = fetchBySid(sid); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (null != wmsWarehouse) { + BeanUtil.copyProperties(wmsWarehouse, vo); +// if (StringUtils.isNotBlank(wmsGoods.getPicUrl())) { +// vo.setPicUrl(fileUploadComponent.getUrlPrefix() + wmsGoods.getPicUrl()); +// } +// vo.setCreateTime(sdf.format(lpkGoods.getCreateTime())); + } + return rb.success().setData(vo); + } + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendVo.java new file mode 100644 index 0000000000..6198f59691 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseextend/WmsWarehouseExtendVo.java @@ -0,0 +1,43 @@ +package com.yxt.wms.biz.base.wmswarehouseextend; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseExtendVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String warehouseName;//仓库名称 + private String warehouseCode;//仓库编码 + private String contacts;//联系人 + private String mob;//手机 + private String telephone;//联系电话 + private String manager;//主管 + private String areaSid;//地区sid + private String address;//地址 + private String longitude;//经度 + private String latitude;//纬度 + private String warehouseTypeKey;//仓库类型Key + private String warehouseTypeValue;//仓库类型value + private String usageStatus;//使用状态,0停用 1正常 + private String squareMeter;//平方米 + private String sortNo;//创建组织sid + private String useOrgSid;//创建组织sid + private String createOrgSid;//创建组织sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfo.java new file mode 100644 index 0000000000..0f164290bf --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfo.java @@ -0,0 +1,41 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:36 + */ +@Data +public class WmsWarehouseInfo extends BaseEntity { + + private String warehouseName;//仓库名称 + private String warehouseCode;//仓库编码 + private String contacts;//联系人 + private String mob;//手机 + private String telephone;//联系电话 + private String manager;//主管 + private String areaSid;//地区sid + private String address;//地址 + private String longitude;//经度 + private String latitude;//纬度 + private String warehouseTypeKey;//仓库类型Key + private String warehouseTypeValue;//仓库类型value + private String usageStatus;//使用状态,0停用 1正常 + private String squareMeter;//平方米 + private String sortNo;//创建组织sid + private String useOrgSid;//创建组织sid + private String createOrgSid;//创建组织sid + + + + + + + + + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoAllVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoAllVo.java new file mode 100644 index 0000000000..3dce54a932 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoAllVo.java @@ -0,0 +1,54 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.base.wmswarehouseinfo; + + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(仓库)
    + * File: WmsWarehouseInfoVo.java
    + * Class: com.yxt.wms.api.wmswarehouseinfo.WmsWarehouseInfoVo
    + * Description: 仓库 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-09 14:35:56
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "仓库 视图数据详情", description = "仓库 视图数据详情") +public class WmsWarehouseInfoAllVo implements Vo { + + private String sid; + @ApiModelProperty("仓库名称") + private String warehouseName; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoDto.java new file mode 100644 index 0000000000..e976cf2cb5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoDto.java @@ -0,0 +1,42 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendDto; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsWarehouseInfoDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String warehouseName;//仓库名称 + private String warehouseCode;//仓库编码 + private String contacts;//联系人 + private String mob;//手机 + private String telephone;//联系电话 + private String manager;//主管 + private String areaSid;//地区sid + private String address;//地址 + private String longitude;//经度 + private String latitude;//纬度 + private String warehouseTypeKey;//仓库类型Key + private String warehouseTypeValue;//仓库类型value + private String usageStatus;//使用状态,0停用 1正常 + private String squareMeter;//平方米 + private String sortNo;//创建组织sid + private String useOrgSid;//创建组织sid + private String createOrgSid;//创建组织sid +// private List wmsWarehouseExtendDtos; + private WmsWarehouseExtendDto wmsWarehouseExtendDto; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.java new file mode 100644 index 0000000000..f702273f52 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.java @@ -0,0 +1,24 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaAllVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsWarehouseInfoMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + @Select("select * from wms_warehouse_info") + List selectAll(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.xml new file mode 100644 index 0000000000..69e01fe07d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoMapper.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoQuery.java new file mode 100644 index 0000000000..eb0b237654 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseInfoQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoService.java new file mode 100644 index 0000000000..f98021be00 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoService.java @@ -0,0 +1,125 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaAllVo; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtend; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendService; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsWarehouseInfoService extends MybatisBaseService { + + @Autowired + WmsWarehouseExtendService wmsWarehouseExtendService; + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseInfoQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(StringUtils.isNotBlank(query.getName())){ + qw.like("warehouseName",query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + public ResultBean listAll() { + ResultBean rb = ResultBean.fireFail(); + List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable",1)); + return rb.success().setData(pagging); + } + + public ResultBean saveOrUpdate(WmsWarehouseInfoDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsWarehouseInfo wmsWarehouse = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouse); +// for (WmsWarehouseExtendDto wmsWarehouseExtendDto : dto.getWmsWarehouseExtendDtos()) { +// wmsWarehouseExtendDto.setWarehouseSid(wmsWarehouse.getSid()); +// } + dto.getWmsWarehouseExtendDto().setWarehouseSid(wmsWarehouse.getSid()); + wmsWarehouseExtendService.saveOrUpdate(dto.getWmsWarehouseExtendDto()); + } else { + WmsWarehouseInfo wmsWarehouse = new WmsWarehouseInfo(); + sid = wmsWarehouse.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouse); +// for (WmsWarehouseExtendDto wmsWarehouseExtendDto : dto.getWmsWarehouseExtendDtos()) { +// wmsWarehouseExtendDto.setWarehouseSid(wmsWarehouse.getSid()); +// } + dto.getWmsWarehouseExtendDto().setWarehouseSid(wmsWarehouse.getSid()); + wmsWarehouseExtendService.saveOrUpdate(dto.getWmsWarehouseExtendDto()); + } + + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseInfoVo vo = new WmsWarehouseInfoVo(); + WmsWarehouseInfo wmsWarehouse = fetchBySid(sid); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + BeanUtil.copyProperties(wmsWarehouse, vo); + List list=wmsWarehouseExtendService.list(new QueryWrapper().eq("warehouseSid",vo.getSid())); + List list1=new ArrayList<>(); + for (WmsWarehouseExtend wmsWarehouseExtend : list) { + WmsWarehouseExtendVo vo1= new WmsWarehouseExtendVo(); + BeanUtil.copyProperties(wmsWarehouseExtend, vo1); + list1.add(vo1); + } + vo.setWmsWarehouseExtendVos(list1); + return rb.success().setData(vo); + } + + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseInfo wmsWarehouse = fetchBySid(sid); + if (null != wmsWarehouse) { + baseMapper.deleteById(wmsWarehouse.getId()); + } + return rb.success(); + } + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseInfo wmsWarehouse = fetchBySid(sid); + if (null != wmsWarehouse) { + wmsWarehouse.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouse); + } + return rb.success().setMsg("成功"); + } + + public List selectAll() { + return baseMapper.selectAll(); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoVo.java new file mode 100644 index 0000000000..21a32ef693 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouseinfo/WmsWarehouseInfoVo.java @@ -0,0 +1,47 @@ +package com.yxt.wms.biz.base.wmswarehouseinfo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendDto; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendVo; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseInfoVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String warehouseName;//仓库名称 + private String warehouseCode;//仓库编码 + private String contacts;//联系人 + private String mob;//手机 + private String telephone;//联系电话 + private String manager;//主管 + private String areaSid;//地区sid + private String address;//地址 + private String longitude;//经度 + private String latitude;//纬度 + private String warehouseTypeKey;//仓库类型Key + private String warehouseTypeValue;//仓库类型value + private String usageStatus;//使用状态,0停用 1正常 + private String squareMeter;//平方米 + private String sortNo;//创建组织sid + private String useOrgSid;//创建组织sid + private String createOrgSid;//创建组织sid + private List wmsWarehouseExtendVos; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java new file mode 100644 index 0000000000..1aca44ba12 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRack.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; +import java.util.UUID; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsWarehouseRack extends BaseEntity { +// private String id; +// private String sid= UUID.randomUUID().toString(); +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// private Date createTime; +// private String remarks; +// private String isEnable; + private String rackName;//货架名称 + private String rackCode;//货架编码 + private String warehouseSid;//仓库sid + private String locationSid;//库位sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackDto.java new file mode 100644 index 0000000000..96edca1e29 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackDto.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsWarehouseRackDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String rackName;//货架名称 + private String rackCode;//货架编码 + private String warehouseSid;//仓库sid + private String locationSid;//库位sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java new file mode 100644 index 0000000000..2755312d82 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.java @@ -0,0 +1,19 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsWarehouseRackMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsWarehouseRackVo initialization (@Param("sid") String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml new file mode 100644 index 0000000000..13f5fbdd00 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackQuery.java new file mode 100644 index 0000000000..4ee91bcea1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseRackQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java new file mode 100644 index 0000000000..608cdd68cd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackService.java @@ -0,0 +1,90 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsWarehouseRackService extends MybatisBaseService { + + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseRackQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if(StringUtils.isNotBlank(query.getName())){ + qw.like("rackName",query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + public ResultBean getAllType() { + ResultBean rb = ResultBean.fireFail(); + List pagging = baseMapper.selectList(new QueryWrapper().eq("isEnable",1)); + return rb.success().setData(pagging); + } + + public ResultBean saveOrUpdate(WmsWarehouseRackDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsWarehouseRack wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsWarehouseRack wmsWarehouseRack = new WmsWarehouseRack(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseRackVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseRack wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsWarehouseRack wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackVo.java new file mode 100644 index 0000000000..e23416e0e3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/base/wmswarehouserack/WmsWarehouseRackVo.java @@ -0,0 +1,33 @@ +package com.yxt.wms.biz.base.wmswarehouserack; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsWarehouseRackVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String rackName;//货架名称 + private String rackCode;//货架编码 + private String warehouseSid;//仓库sid + private String locationSid;//库位sid + private String warehouseName;//仓库名称 + private String locationName;//库位名称 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservation.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservation.java new file mode 100644 index 0000000000..111702c457 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservation.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservation extends BaseEntity { + + private String applyDate;//申请时间 + private String externalCode;//外部编码 + private String documentCode;//单据编码 + private String documentType;//单据类型 + private String handoverStatus;//交接状态 + private String handoverTime;//交接时间 + private String warehouseSid;//仓库sid + private String warehouseAreaSid;//货位sid + private String supplierSid;//供应商sid + private String supplierName;//供应商名称 + private String waybillNumber;//运单号 + private String applicant;//申请人 + private String reservationDate;//预约时间 + + + + + + + + + + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationDto.java new file mode 100644 index 0000000000..a16b5144ff --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationDto.java @@ -0,0 +1,36 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailDto; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String applyDate;//申请时间 + private String externalCode;//外部编码 + private String documentCode;//单据编码 + private String documentType;//单据类型 + private String handoverStatus;//交接状态 + private String handoverTime;//交接时间 + private String warehouseSid;//仓库sid + private String warehouseAreaSid;//货位sid + private String supplierSid;//供应商sid + private String waybillNumber;//运单号 + private String applicant;//申请人 + private String reservationDate;//预约时间 + private List warehousingReservationDetails;//明细 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.java new file mode 100644 index 0000000000..a8344fee1d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Mapper +public interface WarehousingReservationMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.xml new file mode 100644 index 0000000000..9734ef1679 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationQuery.java new file mode 100644 index 0000000000..00603f4e74 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationQuery.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationQuery implements Query { + private String goodsName; + private String documentType;//入库类型 1 采购入库 2调拨入库 3其他入库 + private String handoverStatus;//入库状态 1在途 2部分收货 3收货完成 4关闭 + private String supplierName;//供应商名称 + private String externalCode;//外部编码 + private String documentCode;//单据编码 + private String waybillNumber;//运单号 + private String areaName;//库位 + private String interval; //单据时间间隔 0 今天 1近7天 2 近30天 3 三个月前 + private String type;//类型 + private String startDate;//开始时间 + private String endDate;//结束时间 +// private String +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationService.java new file mode 100644 index 0000000000..9858ec4f60 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationService.java @@ -0,0 +1,175 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtend; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendService; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendVo; +import com.yxt.wms.biz.inventory.warehousingreservationdetail.WarehousingReservationDetailService; +import com.yxt.wms.feign.base.basesupplierinfo.BaseSupplierInfoDetailsVo; +import com.yxt.wms.feign.base.basesupplierinfo.BaseSupplierInfoFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Service +public class WarehousingReservationService extends MybatisBaseService { + + @Autowired + WmsWarehouseExtendService wmsWarehouseExtendService; + @Resource + BaseSupplierInfoFeign baseSupplierInfoFeign; + @Autowired + WarehousingReservationDetailService warehousingReservationDetailService; + private QueryWrapper createQueryWrapper(WarehousingReservationQuery query) { + + QueryWrapper qw = new QueryWrapper<>(); + if(StringUtils.isNotBlank(query.getDocumentType())){ + qw.like("a.documentType",query.getDocumentType()); + } + if(StringUtils.isNotBlank(query.getHandoverStatus())){ + qw.eq("a.handoverStatus",query.getHandoverStatus()); + } + if(StringUtils.isNotBlank(query.getExternalCode())){ + qw.like("a.externalCode",query.getExternalCode()); + } + if(StringUtils.isNotBlank(query.getSupplierName())){ + qw.like("a.supplierName",query.getSupplierName()); + } + if(StringUtils.isNotBlank(query.getDocumentCode())){ + qw.like("a.documentCode",query.getDocumentCode()); + } + if(StringUtils.isNotBlank(query.getWaybillNumber())){ + qw.like("a.waybillNumber",query.getWaybillNumber()); + } + if(StringUtils.isNotBlank(query.getGoodsName())){ + qw.like("goodsName",query.getGoodsName()); + } + if(StringUtils.isNotBlank(query.getAreaName())){ + qw.like("a.areaName",query.getAreaName()); + } + if(StringUtils.isNotBlank(query.getStartDate())|| StringUtils.isNotBlank(query.getEndDate())){ + if(StringUtils.isNotBlank(query.getStartDate())){ + qw.apply( "date_format (a.applyDate,'%Y-%m-%d') >= date_format('" + query.getStartDate() + "','%Y-%m-%d')"); + } + if(StringUtils.isNotBlank(query.getEndDate())){ + qw.apply("date_format (r.applyDate,'%Y-%m-%d') <= date_format('" + query.getEndDate() + "','%Y-%m-%d')"); + } + }else{ + if(StringUtils.isNotBlank(query.getInterval())){ + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + if(query.getInterval().equals("0")){ + qw.apply("date_format (a.applyDate,'%Y-%m-%d') >= date_format('" + sdf.format(new Date()) + "','%Y-%m-%d')"); + }else if(query.getInterval().equals("1")){ + Date ac =DateUtil.offsetDay(new Date(),-7); + qw.apply("date_format (a.applyDate,'%Y-%m-%d') >= date_format('" + sdf.format(ac) + "','%Y-%m-%d')"); + }else if(query.getInterval().equals("2")){ + Date ac=DateUtil.offsetMonth(new Date(),-1); + qw.apply("date_format (a.applyDate,'%Y-%m-%d') >= date_format('" + sdf.format(ac) + "','%Y-%m-%d')"); + }else if(query.getInterval().equals("3")){ + Date ac =DateUtil.offsetMonth(new Date(),-3); + qw.apply("date_format (a.applyDate,'%Y-%m-%d') >= date_format('" + sdf.format(ac) + "','%Y-%m-%d')"); + } + } + } + return qw; + } + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservationQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + public ResultBean saveOrUpdate(WarehousingReservationDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WarehousingReservation wmsWarehouse = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouse); + } else { + WarehousingReservation wmsWarehouse = new WarehousingReservation(); + sid = wmsWarehouse.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouse); + } + + return rb.success().setMsg("成功"); + } + public ResultBean save(WarehousingReservationDto dto) { + ResultBean rb = ResultBean.fireFail(); + SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); + WarehousingReservation wmsWarehouse = new WarehousingReservation(); + String code="YYRK"+sdf.format(new Date()); + WarehousingReservation warehousingReservation= baseMapper.selectOne(new QueryWrapper() + .like("documentCode",code).orderByDesc("documentCode").apply("limit 1")); + if(warehousingReservation!=null){ + wmsWarehouse.setDocumentCode(code+getNext(warehousingReservation.getDocumentCode())); + }else{ + wmsWarehouse.setDocumentCode(code+"0001"); + } + BaseSupplierInfoDetailsVo supplierInfoDetailsVo= baseSupplierInfoFeign.fetchDetailsBySid(dto.getSupplierSid()).getData(); + wmsWarehouse.setSupplierName(supplierInfoDetailsVo.getSupplierName()); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouse); + warehousingReservationDetailService.save(dto.getWarehousingReservationDetails()); + return rb.success().setMsg("成功"); + } + + + public static String getNext(String code) { + String newC=code.substring(code.length()-4); + int startValue=Integer.parseInt(newC); + AtomicInteger val = new AtomicInteger(startValue); + int nextVal = val.incrementAndGet(); + return String.format("%04d", nextVal); + } + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservationVo vo = new WarehousingReservationVo(); + WarehousingReservation wmsWarehouse = fetchBySid(sid); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + BeanUtil.copyProperties(wmsWarehouse, vo); +// vo.setWmsWarehoseExtendVos(list1); + return rb.success().setData(vo); + } + + + + + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservation wmsWarehouse = fetchBySid(sid); + if (null != wmsWarehouse) { + wmsWarehouse.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouse); + } + return rb.success().setMsg("成功"); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationVo.java new file mode 100644 index 0000000000..1bc50f8731 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservation/WarehousingReservationVo.java @@ -0,0 +1,43 @@ +package com.yxt.wms.biz.inventory.warehousingreservation; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String applyDate;//申请时间 + private String externalCode;//外部编码 + private String documentCode;//单据编码 + private String documentType;//单据类型 + private String documentValue;//单据类型vaule + private String handoverStatus;//交接状态 + private String handoverValue;//交接状态value + private String handoverTime;//交接时间 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名 + private String warehouseAreaSid;//货位sid + private String warehouseAreaName;//货位sid + private String supplierSid;//供应商sid + private String supplierName;//供应商名 + private String waybillNumber;//运单号 + private String applicant;//申请人 + private String reservationDate;//预约时间 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetail.java new file mode 100644 index 0000000000..418e480158 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetail.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationDetail extends BaseEntity { + + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品code + private String unit;//单位 + private String barCode;//条码 + private String skuCode;//商品规格code + private String appointmentQuantity;//预约数量 + private String actualQuantity;//实际数量 + private String price;//单价 + private String appointmentAmount;//v预约金额 + private String actualAmount;//实际金额 + private String freight;//运费 + private String orderSid;//预约sid + + + + + + + + + + + + + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailDto.java new file mode 100644 index 0000000000..eafbc16261 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailDto.java @@ -0,0 +1,35 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationDetailDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品code + private String unit;//单位 + private String barCode;//条码 + private String skuCode;//商品规格code + private String skuSid;//规格sid + private String appointmentQuantity;//预约数量 + private String actualQuantity;//实际数量 + private String price;//单价 + private String appointmentAmount;//v预约金额 + private String actualAmount;//实际金额 + private String freight;//运费 + private String orderSid;//预约sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.java new file mode 100644 index 0000000000..92cb4b050b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Mapper +public interface WarehousingReservationDetailMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.xml new file mode 100644 index 0000000000..4fe5506217 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailQuery.java new file mode 100644 index 0000000000..11fff45f48 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailQuery.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationDetailQuery implements Query { + private String goodsName; + private String documentType;//入库类型 1 采购入库 2调拨入库 3其他入库 + private String handoverStatus;//入库状态 1在途 2部分收货 3收货完成 4关闭 + private String supplierName;//供应商名称 + private String externalCode;//外部编码 + private String documentCode;//单据编码 + private String waybillNumber;//运单号 + private String areaName;//库位 + private String interval; //单据时间间隔 0 今天 1近7天 2 近30天 3 三个月前 + private String type; + private String startDate; + private String endDate; +// private String +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailService.java new file mode 100644 index 0000000000..d2b6568906 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailService.java @@ -0,0 +1,107 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouseextend.WmsWarehouseExtendService; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.wms.feign.base.basesupplierinfo.BaseSupplierInfoDetailsVo; +import com.yxt.wms.feign.base.basesupplierinfo.BaseSupplierInfoFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Service +public class WarehousingReservationDetailService extends MybatisBaseService { + + @Autowired + WmsWarehouseExtendService wmsWarehouseExtendService; + @Resource + private BaseGoodsSkuFeign baseGoodsSkuFeign; + + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservationDetailQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + public ResultBean saveOrUpdate(WarehousingReservationDetailDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WarehousingReservationDetail wmsWarehouse = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setModifyTime(new Date()); + baseMapper.updateById(wmsWarehouse); + } else { + WarehousingReservationDetail wmsWarehouse = new WarehousingReservationDetail(); + sid = wmsWarehouse.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouse); + } + + return rb.success().setMsg("成功"); + } + public ResultBean save(List dtos) { + ResultBean rb = ResultBean.fireFail(); + for (WarehousingReservationDetailDto dto : dtos) { + WarehousingReservationDetail wmsWarehouse = new WarehousingReservationDetail(); + BeanUtil.copyProperties(dto, wmsWarehouse, "id", "sid"); + wmsWarehouse.setCreateTime(new DateTime()); + BaseGoodsSkuDetailsVo vo=baseGoodsSkuFeign.getDetails(dto.getSkuSid()).getData(); + wmsWarehouse.setGoodsName(vo.getGoodsName()); + wmsWarehouse.setUnit(vo.getGoodsUnitName()); + wmsWarehouse.setGoodsCode(vo.getGoodsCode()); + wmsWarehouse.setBarCode(vo.getBarCode()); + wmsWarehouse.setSkuCode(vo.getGoodsSkuCode()); + baseMapper.insert(wmsWarehouse); + } + return rb.success().setMsg("成功"); + } + + + + public ResultBean> selByReservationSid(String sid) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservationDetailVo vo = new WarehousingReservationDetailVo(); + WarehousingReservationDetail wmsWarehouse = fetchBySid(sid); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + BeanUtil.copyProperties(wmsWarehouse, vo); + return rb.success().setData(vo); + } + + + public ResultBean updateIsEnable(String sid,String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WarehousingReservationDetail wmsWarehouse = fetchBySid(sid); + if (null != wmsWarehouse) { + wmsWarehouse.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouse); + } + return rb.success().setMsg("成功"); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailVo.java new file mode 100644 index 0000000000..7f77bca6bd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/warehousingreservationdetail/WarehousingReservationDetailVo.java @@ -0,0 +1,39 @@ +package com.yxt.wms.biz.inventory.warehousingreservationdetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/3/26 16:36 + */ +@Data +public class WarehousingReservationDetailVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品code + private String unit;//单位 + private String barCode;//条码 + private String skuCode;//商品规格code + private String appointmentQuantity;//预约数量 + private String actualQuantity;//实际数量 + private String price;//单价 + private String appointmentAmount;//v预约金额 + private String actualAmount;//实际金额 + private String freight;//运费 + private String orderSid;//预约sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java new file mode 100644 index 0000000000..eb472b459e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBill.java @@ -0,0 +1,51 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: 预期到货通知单 + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Data +public class WmsAnsBill extends BaseEntity { + + @ApiModelProperty("外部单号(业务单据编号)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("业务类型key(采购预约、调拨预约、其他预约)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购预约、调拨预约、其他预约)") + private String busTypeValue; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("货物状态(在途、部分收货、已收货、已取消)") + private Integer billState; + @ApiModelProperty("审核状态(待审核、审核通过、审核拒绝)") + private String reviewStatus; + @ApiModelProperty("拒绝原因") + private String refuseReason; + @ApiModelProperty("联系人") + private String contact; + @ApiModelProperty("联系人手机") + private String mobile; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner; + @ApiModelProperty("预计到货日期") + private Date deliveryDate; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java new file mode 100644 index 0000000000..5a01e90fd6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillDto.java @@ -0,0 +1,55 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Data +public class WmsAnsBillDto { + + private String sid; + + @ApiModelProperty("外部单号(业务单据编号)") + private String sourceBillNo; + @ApiModelProperty("业务类型key(采购预约、调拨预约、其他预约)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购预约、调拨预约、其他预约)") + private String busTypeValue; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("货物状态(在途、部分收货、已收货、已取消)") + private Integer billState; + @ApiModelProperty("审核状态(待审核、审核通过、审核拒绝)") + private String reviewStatus; + @ApiModelProperty("拒绝原因") + private String refuseReason; + @ApiModelProperty("联系人") + private String contact; + @ApiModelProperty("联系人手机") + private String mobile; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner; + @ApiModelProperty("预计到货日期") + private Date deliveryDate; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + + private List wmsAnsBillDetailList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.java new file mode 100644 index 0000000000..0454caa6d1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.java @@ -0,0 +1,24 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsBillDetail; +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsBillDetailVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Mapper +public interface WmsAnsBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage listPages(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + WmsAnsDetailsVo details(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.xml new file mode 100644 index 0000000000..851085adb9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillQuery.java new file mode 100644 index 0000000000..c825aa5557 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillQuery.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Data +public class WmsAnsBillQuery implements Query { + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("开始时间") + private String createTimeStart; + @ApiModelProperty("结束时间") + private String createTimeEnd; + @ApiModelProperty("业务类型") + private String busTypeKey; + @ApiModelProperty("供应商") + private String supplierName; + @ApiModelProperty("预期到货日期开始时间") + private String deliveryDateStart; + @ApiModelProperty("预期到货日期结束时间") + private String deliveryDateEnd; + //单据状态 + private String billState; + + @ApiModelProperty("审核状态") + private String reviewStatus; + + @ApiModelProperty("外部单号(业务单据编号)") + private String sourceBillNo; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillService.java new file mode 100644 index 0000000000..e224813e93 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillService.java @@ -0,0 +1,139 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsansbilldetail.*; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillQuery; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Service +public class WmsAnsBillService extends MybatisBaseService { + + @Autowired + private WmsAnsBillDetailService wmsAnsBillDetailService; + + public ResultBean saveOrUpdateBill(WmsAnsBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsAnsBill wmsAnsBill = new WmsAnsBill(); + BeanUtil.copyProperties(dto, wmsAnsBill, "sid"); + sid = wmsAnsBill.getSid(); + List wmsAnsBillDetailList = dto.getWmsAnsBillDetailList(); + wmsAnsBillDetailList.removeAll(Collections.singleton(null)); + if (!wmsAnsBillDetailList.isEmpty()) { + wmsAnsBillDetailService.saveOrUpdateDetailsList(sid, wmsAnsBillDetailList); + } else { + return rb.setMsg("单据明细不能为空"); + } + baseMapper.insert(wmsAnsBill); + + } else { + WmsAnsBill wmsAnsBill = fetchBySid(sid); + if (wmsAnsBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsAnsBill, "sid"); + List wmsAnsBillDetailList = dto.getWmsAnsBillDetailList(); + wmsAnsBillDetailList.removeAll(Collections.singleton(null)); + if (!wmsAnsBillDetailList.isEmpty()) { + wmsAnsBillDetailService.saveOrUpdateDetailsList(sid, wmsAnsBillDetailList); + } else { + return rb.setMsg("单据明细不能为空"); + } + baseMapper.updateById(wmsAnsBill); + + } + return rb.success().setData(sid); + } + + public PagerVo listPage(PagerQuery pagerQuery) { + WmsAnsBillDetailQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public PagerVo listPages(PagerQuery pagerQuery) { + WmsAnsBillQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (query != null) { + //单据编号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wab.billNo", query.getBillNo()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wab.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wab.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + //业务类型 + if (StringUtils.isNotBlank(query.getBusTypeKey())) { + qw.eq("wab.busTypeKey", query.getBusTypeKey()); + } + //供应商 + if (StringUtils.isNotBlank(query.getSupplierName())) { + qw.like("wab.supplierName", query.getSupplierName()); + } + //预期到货日期开始时间-预期到货日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getDeliveryDateStart()), "date_format (wab.deliveryDate,'%Y-%m-%d') >= date_format('" + query.getDeliveryDateStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getDeliveryDateEnd()), "date_format (wab.deliveryDate,'%Y-%m-%d') <= date_format('" + query.getDeliveryDateEnd() + "','%Y-%m-%d')" + ); + //单据状态 + if (StringUtils.isNotBlank(query.getBillState())) { + qw.like("wab.billState", query.getBillState()); + } + + //审核状态 + if (StringUtils.isNotBlank(query.getReviewStatus())) { + qw.like("wab.reviewStatus", query.getReviewStatus()); + } + //外部编号 + if (StringUtils.isNotBlank(query.getSourceBillNo())) { + qw.like("wab.sourceBillNo", query.getSourceBillNo()); + } + } + + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.listPages(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsAnsDetailsVo wmsAnsDetailsVo = baseMapper.details(sid); + if (wmsAnsDetailsVo != null) { + List list = wmsAnsBillDetailService.selectByBillSid(sid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + wmsAnsDetailsVo.setList(list); + } + } else { + return rb.setMsg("该单据不存在"); + } + return rb.success().setData(wmsAnsDetailsVo); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillVo.java new file mode 100644 index 0000000000..0448ba00cf --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsBillVo.java @@ -0,0 +1,53 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Data +public class WmsAnsBillVo { + + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("外部单号(业务单据编号)") + private String sourceBillNo; + @ApiModelProperty("业务类型value(采购预约、调拨预约、其他预约)") + private String busTypeValue; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("联系人") + private String contact; + @ApiModelProperty("联系人手机") + private String mobile; + @ApiModelProperty("预计到货日期") + private String deliveryDate; + + //单据状态 + private String billState; + + @ApiModelProperty("审核状态(待审核、审核通过、审核拒绝)") + private String reviewStatus; + @ApiModelProperty("拒绝原因") + private String refuseReason; + +/* @ApiModelProperty("货物状态(在途、部分收货、已收货、已取消)") + private String billStateValue; + @ApiModelProperty("货主") + private String goodsOwner;*/ + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsDetailsVo.java new file mode 100644 index 0000000000..5908055cec --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbill/WmsAnsDetailsVo.java @@ -0,0 +1,59 @@ +package com.yxt.wms.biz.inventory.wmsansbill; + +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsListDetailsVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Data +public class WmsAnsDetailsVo { + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("外部单号(业务单据编号)") + private String sourceBillNo; + @ApiModelProperty("业务类型key(采购预约、调拨预约、其他预约)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购预约、调拨预约、其他预约)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("预计到货日期") + private String deliveryDate; + + //单据状态 + private String billState; + + @ApiModelProperty("审核状态(待审核、审核通过、审核拒绝)") + private String reviewStatus; + + /* @ApiModelProperty("货物状态(在途、部分收货、已收货、已取消)") + private Integer billState;*/ + + @ApiModelProperty("拒绝原因") + private String refuseReason; + /* @ApiModelProperty("联系人") + private String contact; + @ApiModelProperty("联系人手机") + private String mobile; + + @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner;*/ + + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetail.java new file mode 100644 index 0000000000..9941897dc3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetail.java @@ -0,0 +1,47 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Data +public class WmsAnsBillDetail extends BaseEntity { + + @ApiModelProperty("单据sid") + private String billSid; + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("单位成本(采购价)") + private String cost; + @ApiModelProperty("预约数量(采购订单数量)") + private String orderCount; + @ApiModelProperty("待入库数量-根据收货单计算") + private Integer waitInCount; + @ApiModelProperty("实际入库数量-根据收货单计算") + private Integer actualInCount; + @ApiModelProperty("税额") + private BigDecimal taxAmount; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; + @ApiModelProperty("金额") + private BigDecimal amount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailDto.java new file mode 100644 index 0000000000..1c9b56870f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailDto.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Data +public class WmsAnsBillDetailDto { + + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("单位成本(采购价)") + private String cost; + @ApiModelProperty("预约数量(采购订单数量)") + private String orderCount; + @ApiModelProperty("税额") + private String taxAmount; + @ApiModelProperty("含税价") + private String taxPrice; + @ApiModelProperty("金额") + private String amount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.java new file mode 100644 index 0000000000..fc76c4804d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Mapper +public interface WmsAnsBillDetailMapper extends BaseMapper { + int deleteDetails(String sid); + + List selectByBillSid(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.xml new file mode 100644 index 0000000000..30609e67d5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailMapper.xml @@ -0,0 +1,25 @@ + + + + + delete + from wms_ans_bill_detail + where billSid = #{sid} + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailQuery.java new file mode 100644 index 0000000000..ca39b64a99 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsAnsBillDetailQuery implements Query { +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailService.java new file mode 100644 index 0000000000..47c79de71d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailService.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/9 + **/ +@Service +public class WmsAnsBillDetailService extends MybatisBaseService { + public void saveOrUpdateDetailsList(String sid, List wmsAnsBillDetailList) { + baseMapper.deleteDetails(sid); + wmsAnsBillDetailList.forEach(v->{ + WmsAnsBillDetail wmsAnsBillDetail = new WmsAnsBillDetail(); + BeanUtil.copyProperties(v,wmsAnsBillDetail,"sid"); + wmsAnsBillDetail.setBillSid(sid); + baseMapper.insert(wmsAnsBillDetail); + }); + } + + public List selectByBillSid(String sid) { + return baseMapper.selectByBillSid(sid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailVo.java new file mode 100644 index 0000000000..e82d86abd0 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsBillDetailVo.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsAnsBillDetailVo { + + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsListDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsListDetailsVo.java new file mode 100644 index 0000000000..2476e8aa09 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsansbilldetail/WmsAnsListDetailsVo.java @@ -0,0 +1,58 @@ +package com.yxt.wms.biz.inventory.wmsansbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Data +public class WmsAnsListDetailsVo { + @ApiModelProperty("商品名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + + //仓库 + private String warehouseName; + //库位 + private String warehouseRack; + + //预约数量 + @ApiModelProperty("预约数量(采购订单数量)") + private String orderCount; + //待收货数量 + @ApiModelProperty("待入库数量-根据收货单计算") + private Integer waitInCount; + //已收货数量 + @ApiModelProperty("实际入库数量-根据收货单计算") + private Integer actualInCount; + //入库价 + @ApiModelProperty("单位成本(采购价)") + private String cost; + @ApiModelProperty("税额") + private String taxAmount; + @ApiModelProperty("含税价") + private String taxPrice; + //采购金额 + @ApiModelProperty("金额") + private String amount; + + + /* @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid;*/ + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBill.java new file mode 100644 index 0000000000..6585d24f06 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBill.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBill extends BaseEntity { + + @ApiModelProperty("出库单sid") + private String sourceBillSid; + @ApiModelProperty("来源单号(出库单)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据状态") + private Integer billState; + @ApiModelProperty("挂起状态(1挂起,0不挂起,2解锁)") + private Integer isHandUp; + @ApiModelProperty("优先级") + private Integer priority; + @ApiModelProperty("实际发货时间") + private Date actualDeliveTime; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillDto.java new file mode 100644 index 0000000000..4d2b7fd658 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillDto.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.yxt.wms.biz.inventory.wmsdistributebilldetail.WmsDistributeBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillDto { + + @ApiModelProperty("出库单sid") + private String sourceBillSid; + @ApiModelProperty("来源单号(出库单)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("制单人sid") + private String createBySid; + private String createTime; + @ApiModelProperty("单据状态") + private String billState; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + + private List detailList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillInitVo.java new file mode 100644 index 0000000000..a051d7b62f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillInitVo.java @@ -0,0 +1,42 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.yxt.wms.biz.inventory.wmsdistributebilldetail.WmsDistributeBillDetailVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillInitVo { + + //单据编号 + private String billNo; + + //制单人 + @ApiModelProperty("制单人姓名") + private String createByName; + + //单据日期 + @ApiModelProperty("单据日期") + private String createTime; + + //来源单号 + @ApiModelProperty("来源单号(出库单)") + private String sourceBillNo; + + //单据状态 + @ApiModelProperty("单据状态") + private String billState; + + //备注 + private String remarks; + + private List detailsList = new ArrayList<>(); + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.java new file mode 100644 index 0000000000..a86bce51d3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Mapper +public interface WmsDistributeBillMapper extends BaseMapper { +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.xml new file mode 100644 index 0000000000..a58327a508 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillQuery.java new file mode 100644 index 0000000000..66674950bc --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillQuery.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillQuery implements Query { + + //单据编号 + @ApiModelProperty("单据编号") + private String billNo; + + //单据日期开始时间 + private String createTimeStart; + + //单据日期结束时间 + private String createTimeEnd; + + //业务类型 + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + + //单据状态 + @ApiModelProperty("单据状态") + private String billState; + + @ApiModelProperty("挂起状态(1挂起,0不挂起,2解锁)") + private String isHandUp; + @ApiModelProperty("优先级") + private String priority; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillService.java new file mode 100644 index 0000000000..532adf4747 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillService.java @@ -0,0 +1,35 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Service +public class WmsDistributeBillService extends MybatisBaseService { + public PagerVo listPage(PagerQuery pagerQuery) { + return null; + } + + public ResultBean getInit(String sid) { + return null; + } + + public ResultBean details(String sid) { + return null; + } + + public ResultBean saveOrUpdateBill(WmsDistributeBillDto dto) { + return null; + } + + public ResultBean confirm(WmsDistributeBillDto dto) { + return null; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillVo.java new file mode 100644 index 0000000000..e27593eb44 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebill/WmsDistributeBillVo.java @@ -0,0 +1,35 @@ +package com.yxt.wms.biz.inventory.wmsdistributebill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillVo { + + private String sid; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("来源单号(出库单)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + + @ApiModelProperty("单据状态") + private String billState; + @ApiModelProperty("优先级") + private String priority; + @ApiModelProperty("挂起状态(1挂起,0不挂起,2解锁)") + private String isHandUp; + + @ApiModelProperty("实际发货时间") + private String actualDeliveTime; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetail.java new file mode 100644 index 0000000000..f6cb4c9281 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetail.java @@ -0,0 +1,50 @@ +package com.yxt.wms.biz.inventory.wmsdistributebilldetail; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillDetail extends BaseEntity { + @ApiModelProperty("出库单明细sid") + private String outBillDetailSid; + @ApiModelProperty("单据sid") + private String billSid; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("配货数量") + private BigDecimal distributeCount; + @ApiModelProperty("发货数量") + private BigDecimal deliveryCount; + @ApiModelProperty("状态(配货中/已完成)") + private Integer billState; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailDto.java new file mode 100644 index 0000000000..10fc9423a4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailDto.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsdistributebilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillDetailDto { + + @ApiModelProperty("出库单明细sid") + private String outBillDetailSid; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("配货数量") + private String distributeCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailVo.java new file mode 100644 index 0000000000..fd9c7bc717 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsdistributebilldetail/WmsDistributeBillDetailVo.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsdistributebilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsDistributeBillDetailVo { + + @ApiModelProperty("出库单明细sid") + private String outBillDetailSid; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("配货数量") + private String distributeCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsGoodsInventoryVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsGoodsInventoryVo.java new file mode 100644 index 0000000000..8e57a679a1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsGoodsInventoryVo.java @@ -0,0 +1,20 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/3/25 16:54 + */ +@Data +public class WmsGoodsInventoryVo implements Vo { + + private String goodsSkuOwnSpec;//型号 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseRackName; //货位 + private String count;//库存数量 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java new file mode 100644 index 0000000000..522fc03084 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventory.java @@ -0,0 +1,60 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.UUID; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsInventory extends BaseEntity { + + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("商品ID(唯一编码,入库时生成,生成规则为商品编码+YYMMdd+4位流水)") + private String goodsID; + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("现有量") + private BigDecimal count; + @ApiModelProperty("分配量(锁定数量,出库申请通过,但未实际出库)") + private BigDecimal allocateCount; + @ApiModelProperty("拣货量") + private BigDecimal pickCount; + @ApiModelProperty("冻结量") + private BigDecimal freezeCount; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("首次入库日期-计算库龄的依据") + private Date firstInDate; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeExportVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeExportVo.java new file mode 100644 index 0000000000..d91750d98a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeExportVo.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/1 14:04 + */ +@Data +public class WmsInventoryAgeExportVo { + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName;//商品名称 + @ExportEntityMap(CnName = "商品Sku名称", EnName = "goodsSkuTitle") + private String goodsSkuTitle;//商品Sku名称 + @ExportEntityMap(CnName = "零件号", EnName = "goodsSkuCode") + private String goodsSkuCode;//零件号 + @ExportEntityMap(CnName = "规格型号", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec; //规格型号 + @ExportEntityMap(CnName = "计量单位", EnName = "unit") + private String unit;//计量单位 + @ExportEntityMap(CnName = "仓库名称", EnName = "warehouseName") + private String warehouseName;//仓库名称 + @ExportEntityMap(CnName = "库区名称", EnName = "warehouseArea") + private String warehouseArea;//库区名称 + @ExportEntityMap(CnName = "货架名称", EnName = "warehouseRackName") + private String warehouseRackName;//货架名称 + @ExportEntityMap(CnName = "库存数量", EnName = "count") + private String count;//库存数量 + @ExportEntityMap(CnName = "库龄", EnName = "age") + private String age;//库龄 + @ExportEntityMap(CnName = "入库日期", EnName = "firstInDate") + private String firstInDate; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeQuery.java new file mode 100644 index 0000000000..53731c24db --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeQuery.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/3/25 16:54 + */ +@Data +public class WmsInventoryAgeQuery implements Query { + private String startDate; + private String endDate; + private String warehouseName;//仓库名称 +// @ApiModelProperty("商品类别名称") +// private String goodsTypeName; +// private String busTypeValue;//业务类型value(采购入库、维修出入库、销售出入库等) + private String goodsSpuName;//商品名称 + private String goodsSkuCode;//零件号 + private String ageStart;//库龄开始 + private String ageEnd;//库龄开始 + // private String queryName; //单号,来源单号,供应商 + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeVo.java new file mode 100644 index 0000000000..a69aee0d53 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAgeVo.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Fan + * @description + * @date 2024/3/25 16:54 + */ +@Data +public class WmsInventoryAgeVo implements Vo { + + private String sid; + private String goodsSpuName;//商品名称 + private String goodsSkuTitle;//商品Sku名称 + private String goodsSkuCode;//零件号 + private String goodsSkuOwnSpec; //规格型号 + private String unit;//计量单位 + private String warehouseName;//仓库名称 + private String warehouseArea;//库区名称 + private String warehouseRackName;//货架名称 + private String count;//库存数量 + private String age;//库龄 + //来源单号 + @ApiModelProperty("首次入库日期-计算库龄的依据") + private String firstInDate; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectList.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectList.java new file mode 100644 index 0000000000..92e3835cdd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectList.java @@ -0,0 +1,39 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryAlloSelectList { + + //sid + private String sid; + //商品名称 + private String goodsSpuName; + //零件号 + private String goodsSkuCode; + //规格 + private String goodsSkuOwnSpec; + //车型 + private String carModel; + //商品单位 + private String unit; + //仓库sid + private String warehouseSid; + //仓库名称 + private String warehouseName; + //库位sid + private String warehouseRackSid; + //库位编码 + private String warehouseRackCode; + //库位名称 + private String areaName; + //含税价 + private String taxPrice; + //库存数量 + private String count; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectQuery.java new file mode 100644 index 0000000000..74306e8e56 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryAlloSelectQuery.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryAlloSelectQuery implements Query { + + //组织sid + private String orgSid; + //商品名称 + private String goodsName; + //商品类别sid + private String goodsTypeSid; + //商品拼音 + private String goodsPY; + //品牌sid + private String brandSid; + //零件号 + private String goodsSkuCode; + //规格 + private String title; + //其他查询条件 + private String otherQuery; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListQuery.java new file mode 100644 index 0000000000..2c47fecf4b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListQuery.java @@ -0,0 +1,21 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/19 + **/ +@Data +public class WmsInventoryBillListQuery implements Query { + //创建时间开始 + private String createTimeStart; + //创建时间结束 + private String createTimeEnd; + //业务类型 + private String busTypeKey; + + private String sid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListVo.java new file mode 100644 index 0000000000..bb2f5ecc16 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryBillListVo.java @@ -0,0 +1,53 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/19 + **/ +@Data +public class WmsInventoryBillListVo { + + //商品名称 + private String goodsSpuName; + //商品标题 + private String goodsSkuTitle; + //商品编码 + private String goodsSkuCode; + //规格型号 + private String goodsSkuOwnSpec; + //计量单位 + private String unit; + //仓库名称 + private String warehouseName; + + //库区名称 + private String warehouseArea; + //货架名称 + private String warehouseRackName; + //业务类型 + private String busTypeValue; + //单位成本 + private String cost; + //销售价1 + private String price1; + //销售价2: + private String price2; + //科目 + private String subject; + //制单人 + private String createByName; + //创建时间 + private String createTime; + + //单号 + private String billNo; + //来源单号 + private String sourceBillNo; + //供应商 + private String billObjName; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryDto.java new file mode 100644 index 0000000000..d8acfbf81f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryDto.java @@ -0,0 +1,48 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String goodsID;//商品ID(唯一编码,入库时生成) + private String goodsSid;//商品sid + private String billSid;//入库单sid + private String billDetailSid;//入库单明细sid + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + private String unit;//计量单位 + private String count;//库存数量 + private String minimumPrice;//销售底价 + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String isShowDiscount;//是否显示折扣标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstInDate;//首次入库日期-计算库龄的依据 + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + private String sortNo;//排序 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + + private String goodSpuSid; + private String goodsSkuSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectList.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectList.java new file mode 100644 index 0000000000..fe2e17e2af --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectList.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryHandleSelectList { + + //商品ID + private String goodsID; + //商品名称 + private String goodsSpuName; + //图号 + private String goodsSkuCode; + //供应商 + private String supplierName; + //规格 + private String goodsSkuOwnSpec; + //商品单位 + private String unit; + //仓库sid + private String warehouseSid; + //仓库名称 + private String warehouseName; + //库位sid + private String warehouseRackSid; + //库位编码 + private String warehouseRackCode; + //库位名称 + private String areaName; + //库存数量 + private String count; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectQuery.java new file mode 100644 index 0000000000..1e77f89674 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryHandleSelectQuery.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryHandleSelectQuery implements Query { + + //组织sid + private String orgSid; + //商品名称 + private String goodsName; + //图号 + private String goodsSkuCode; + //仓库 + private String warehouseName; + //库位 + private String areaName; + //供应商 + private String supplierName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInitVo.java new file mode 100644 index 0000000000..f0b2895baa --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInitVo.java @@ -0,0 +1,49 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/18 + **/ +@Data +public class WmsInventoryInitVo { + + private String sid; + + //仓库 + private String warehouseName; + //供应商 + private String billObjName; + //最近采购时间 + //最近销售时间 + //数量 + private String count; + //进价 + //税额 + //含税价 + //销售价格1 + private String price1; + //销售价格2 + private String price2; + //销售价格3 + private String price3; + //销售价格4 + private String price4; + //销售价格5 + private String price5; + //销售底价 + private String minimumPrice; + //货位 + private String warehouseArea; + //折扣标志 + private int isShowDiscount; + //三包价格 + private String freePrice; + //首保价格 + private String firstMaintainPrice; + //排序 + private int sortNo; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectList.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectList.java new file mode 100644 index 0000000000..7550255082 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectList.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryInvenSelectList { + + //sid + private String sid; + //商品名称 + private String goodsSpuName; + //商品编码 + private String goodsSkuCode; + //型号 + private String goodsSkuOwnSpec; + //商品单位 + private String unit; + //仓库sid + private String warehouseSid; + //仓库名称 + private String warehouseName; + //库位sid + private String warehouseRackSid; + //库位编码 + private String warehouseRackCode; + //库位名称 + private String areaName; + //账面数量 + private String count; + //销售单价 + private String salesPrice; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectQuery.java new file mode 100644 index 0000000000..973c77b21e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryInvenSelectQuery.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryInvenSelectQuery implements Query { + + //组织sid + private String orgSid; + //商品名称 + private String goodsName; + //商品类别sid + private String goodsTypeSid; + //商品拼音 + private String goodsPY; + //品牌sid + private String brandSid; + //零件号 + private String goodsSkuCode; + //规格 + private String title; + //其他查询条件 + private String otherQuery; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java new file mode 100644 index 0000000000..5a852dc6c7 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.java @@ -0,0 +1,53 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsInventoryMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + WmsInventoryVo initialization(@Param("sid") String sid); + + int updatePrice1(@Param("price") String price, @Param("list") List stringList); + + int updatePrice2(@Param("price") String price, @Param("list") List stringList); + + int updatePrice3(@Param("price") String price, @Param("list") List stringList); + + int updatePrice4(@Param("price") String price, @Param("list") List stringList); + + int updatePrice5(@Param("price") String price, @Param("list") List stringList); + + IPage getBillList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw, @Param("sid") String sid); + + List listExcel(@Param(Constants.WRAPPER) QueryWrapper qw); + + IPage listPageSales(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage getPackageGoodsVo(IPage page,@Param(Constants.WRAPPER) QueryWrapper qw); + + IPage inventoryAgeList(IPage page,@Param(Constants.WRAPPER) QueryWrapper qw); + + List ageExportExcel(@Param(Constants.WRAPPER) QueryWrapper qw); + + WmsGoodsInventoryVo selectInvenBySkuSid(String skuSid); + + IPage invenGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage alloGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage returnGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage handleGoodsListPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml new file mode 100644 index 0000000000..1ad780b69f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryMapper.xml @@ -0,0 +1,306 @@ + + + + + + + + + + + update wms_inventory + set price1 = #{price} where sid in + + #{item} + + + + + update wms_inventory + set price2 = #{price} where sid in + + #{item} + + + + + update wms_inventory + set price3 = #{price} where sid in + + #{item} + + + + + update wms_inventory + set price4 = #{price} where sid in + + #{item} + + + + + update wms_inventory + set price5 = #{price} where sid in + + #{item} + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageQuery.java new file mode 100644 index 0000000000..e8d724c2cb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageQuery.java @@ -0,0 +1,28 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/3/12 15:33 + */ +@Data +public class WmsInventoryPackageQuery implements Query { + private String useOrgSid; + @ApiModelProperty("商品名称") + private String goodsName; // 商品名称 + @ApiModelProperty("零件号") + private String goodsCode; // 商品编码(图号) + @ApiModelProperty("库存") + private String kuCun; + @ApiModelProperty("仓库名称") + private String warehouse; // 仓库名称 + @ApiModelProperty("货位") + private String warehouseArea; + @ApiModelProperty("商品分类") + private String goodsTypeName; + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageVo.java new file mode 100644 index 0000000000..9ad3fc2ca5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryPackageVo.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/3/12 10:00 + */ +@Data +public class WmsInventoryPackageVo { + + @ApiModelProperty("商品sid") + private String goodsSid; // 商品sid + @ApiModelProperty("商品名称") + private String goodsName; // 商品名称 + @ApiModelProperty("商品编码(图号)") + private String goodsCode; // 商品编码(图号) + @ApiModelProperty("车型sid") + private String goodsModelSid; // 车型sid + @ApiModelProperty("车型") + private String goodsModel; // 车型 + @ApiModelProperty("单位") + private String unit; // 单位 + @ApiModelProperty("规格") + private String specification; // 规格 + @ApiModelProperty("数量") + private String count; // 数量 + @ApiModelProperty("销售价") + private String price; // 销售价 + @ApiModelProperty("仓库名称") + private String warehouse; // 仓库名称 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("货位") + private String warehouseArea; + @ApiModelProperty("备注") + private String remarks; // 备注 + @ApiModelProperty("三包价") + private String freePrice; // 三包价 + @ApiModelProperty("商品分类") + private String goodsTypeName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryQuery.java new file mode 100644 index 0000000000..d52e5b5702 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryQuery.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryQuery implements Query { + @ApiModelProperty("goodsID") + private String goodsID; + + @ApiModelProperty("商品名称") + private String goodsSpuName; + + @ApiModelProperty("商品编码") + private String goodsSkuCode; + + @ApiModelProperty("仓库") + private String warehouseName; + + @ApiModelProperty("库位编码") + private String warehouseRackCode; + + @ApiModelProperty("批次号") + private String batchNumber; + + //供应商 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectList.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectList.java new file mode 100644 index 0000000000..759fee25ab --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectList.java @@ -0,0 +1,21 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryReturnSelectList { + + //商品名称 + private String goodsName; + //零件号 + private String goodsSkuCode; + //规格 + private String goodsSkuOwnSpec; + //单位 + private String unit; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectQuery.java new file mode 100644 index 0000000000..aac1a6277f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryReturnSelectQuery.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class WmsInventoryReturnSelectQuery implements Query { + + //组织sid + private String orgSid; + //商品名称 + private String goodsName; + //商品类别sid + private String goodsTypeSid; + //商品拼音 + private String goodsPY; + //品牌sid + private String brandSid; + //零件号 + private String goodsSkuCode; + //规格 + private String title; + //其他查询条件 + private String otherQuery; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesQuery.java new file mode 100644 index 0000000000..1216c1334e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesQuery.java @@ -0,0 +1,16 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/3/20 15:14 + */ +@Data +public class WmsInventorySalesQuery implements Query { + + private String queryName; //名称 + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesVo.java new file mode 100644 index 0000000000..b30d60630c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySalesVo.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author Fan + * @description + * @date 2024/3/20 15:14 + */ +@Data +public class WmsInventorySalesVo implements Vo { + + private String inventorySid; + private String goodsID; + private String goodSpuSid;//商品基础信息sid + private String goodsSpuName;//商品名称 + private String goodsSkuSid;//商品Skusid + private String goodsSkuTitle;//商品Sku名称 + private String goodsSkuCode;//商品编码(图号) + private String unit;//计量单位 + private String currentCount;//库存数量 + private String warehouseSid;//仓库sid + private String warehouse;//仓库名称 + private String price;//销售价 + +} + + diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySaveDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySaveDto.java new file mode 100644 index 0000000000..eb3123cb10 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventorySaveDto.java @@ -0,0 +1,57 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/19 + **/ +@Data +public class WmsInventorySaveDto { + + private String sid; + @ApiModelProperty("创建者sid") + private String createBySid; + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; + @ApiModelProperty("商品ID(唯一编码,入库时生成,生成规则为商品编码+YYMMdd+4位流水)") + private String goodsID; + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("现有量") + private String count; + @ApiModelProperty("分配量") + private String allocateCount; + @ApiModelProperty("拣货量") + private String pickCount; + @ApiModelProperty("冻结量") + private String freezeCount; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("首次入库日期") + private String firstInDate; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java new file mode 100644 index 0000000000..a2083b5a31 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryService.java @@ -0,0 +1,472 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventorybill.WmsInventoryBill; +import com.yxt.wms.biz.inventory.wmsinventorybill.WmsInventoryBillService; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsInventoryService extends MybatisBaseService { + + @Autowired + private WmsInventoryBillService wmsInventoryBillService; + @Resource + private BaseGoodsSkuFeign baseGoodsSkuFeign; + + public PagerVo listPage(PagerQuery pq) { + WmsInventoryQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("a.goodsID", query.getGoodsID()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("a.warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("a.goodsSkuCode", query.getGoodsSkuCode()); + } + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("a.goodsSpuName", query.getGoodsSpuName()); + } + if (StringUtils.isNotBlank(query.getBatchNumber())) { + qw.like("a.batchNumber", query.getBatchNumber()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + /** + * 入库 + * + * @param dto + * @return + */ + public ResultBean warehousing(WmsInventoryDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory wmsInventory = baseMapper.selectOne(new QueryWrapper().eq("goodsSid", dto.getGoodsSid()).eq("warehouseSid", dto.getWarehouseSid())); + if (null == wmsInventory) { + WmsInventory wms = new WmsInventory(); + BeanUtil.copyProperties(dto, wms, "sid", "id"); + wms.setFirstInDate(new Date()); + baseMapper.insert(wms); + return rb.success().setData(wms); + } else { + wmsInventory.setCount(new BigDecimal(Double.valueOf(dto.getCount()) + Double.valueOf(wmsInventory.getCount().toString()))); + baseMapper.updateById(wmsInventory); + } + return rb.success().setData(wmsInventory); + } + + /** + * 出库 + * + * @param dto + * @return + */ + public ResultBean outWarehousing(WmsInventoryDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory wmsInventory = baseMapper.selectOne(new QueryWrapper().eq("goodsSid", dto.getGoodsSid()).eq("warehouseSid", dto.getWarehouseSid())); + double exisInventory = Double.valueOf(wmsInventory.getCount().toString()); + double out = Double.valueOf(dto.getCount()); + if (null == wmsInventory) { + return rb.setMsg("此仓库没有相应的商品库存"); + } + if (exisInventory < -out) { + return rb.setMsg("库存不足"); + } + wmsInventory.setCount(new BigDecimal(exisInventory + out)); + baseMapper.updateById(wmsInventory); + return rb.success().setData(wmsInventory); + } + + public ResultBean saveOrUpdate(WmsInventoryDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsInventory wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsInventory wmsWarehouseRack = new WmsInventory(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + + public ResultBean updateIsEnable(String sid, String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean updateWmsInventory(WmsInventoryUpdateDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + WmsInventory wmsInventory = fetchBySid(sid); + if (wmsInventory == null) { + return rb.setMsg("该库存信息不存在"); + } + BeanUtil.copyProperties(dto, wmsInventory, "sid"); + baseMapper.updateById(wmsInventory); + return rb.success(); + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + List sidss = Arrays.asList(sids); + delBySids(sids); + return rb.success().setMsg("删除成功"); + } + + /* public ResultBean init(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory wmsInventory = fetchBySid(sid); + if (wmsInventory == null) { + return rb.setData(new WmsInventoryInitVo()).setMsg("该库存信息不存在"); + } + WmsInventoryInitVo wmsInventoryInitVo = new WmsInventoryInitVo(); + BeanUtil.copyProperties(wmsInventory, wmsInventoryInitVo); + WmsInventoryBill wmsInventoryBill = wmsInventoryBillService.fetchBySid(wmsInventory.getBillSid()); + if (wmsInventoryBill != null) { + wmsInventoryInitVo.setBillObjName(wmsInventoryBill.getBillObjName()); + } + return rb.success().setData(wmsInventoryInitVo); + }*/ + + /* public ResultBean updatePrice(WmsInventoryUpdatePrice wmsInventoryUpdatePrice) { + ResultBean rb = ResultBean.fireFail(); + List stringList = wmsInventoryUpdatePrice.getSidsList(); + stringList.removeAll(Collections.singleton(null)); + String price = wmsInventoryUpdatePrice.getPrice(); + if (!stringList.isEmpty()) { + int type = wmsInventoryUpdatePrice.getType(); + switch (type) { + case 1: + baseMapper.updatePrice1(price, stringList); + break; + case 2: + baseMapper.updatePrice2(price, stringList); + break; + case 3: + baseMapper.updatePrice3(price, stringList); + break; + case 4: + baseMapper.updatePrice4(price, stringList); + break; + case 5: + baseMapper.updatePrice5(price, stringList); + break; + default: + break; + } + } + return rb.success(); + } +*/ + /* public PagerVo getBillList(PagerQuery pagerQuery) { + WmsInventoryBillListQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (b.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (b.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + if (StringUtils.isNotBlank(query.getBusTypeKey())) { + qw.eq("b.busTypeKey", query.getBusTypeKey()); + } + } + + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.getBillList(page, qw, query.getSid()); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } +*/ + public List listExcel(WmsInventoryQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("goodsSpuName", query.getGoodsSpuName()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("warehouseName", query.getWarehouseName()); + } + } + List list = baseMapper.listExcel(qw); + list.removeAll(Collections.singleton(null)); + return list; + } + + public ResultBean updateInventoryCount(WmsUpdateCountQuery query) { + ResultBean rb = ResultBean.fireFail(); + String sid = query.getSid(); + WmsInventory inventory = fetchBySid(sid); + if (null != inventory) { + if (null != inventory.getCount()) { + BigDecimal inventoryCount = inventory.getCount(); + BigDecimal count = query.getCount(); + if (query.getAddOrReduce() == 0) { + //增加库存 + inventory.setCount(inventoryCount.add(count)); + } else if (query.getAddOrReduce() == 1) { + //减少库存 + inventory.setCount(inventoryCount.subtract(count)); + } + baseMapper.updateById(inventory); + } + } + return rb.success(); + } + + public PagerVo listPageSales(PagerQuery pq) { + WmsInventorySalesQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getQueryName())) { + qw.like("i.goodsSpuName", query.getQueryName()); + } + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.like("i.useOrgSid", query.getUseOrgSid()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPageSales(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean> getPackageGoodsVo(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryPackageQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) { + qw.and(wrapper -> wrapper.like("v.goodsSpuName", query.getName()) + .or().like("v.goodsSkuCode", query.getName()) + ); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsName())) { + qw.like("v.goodsSpuName", query.getGoodsName()); + } + //零件号 + if (StringUtils.isNotBlank(query.getGoodsCode())) { + qw.like("v.goodsSkuCode", query.getGoodsCode()); + } + //库存 + if (StringUtils.isNotBlank(query.getKuCun())) { + if (query.getKuCun().equals("有库存")) { + qw.apply("v.count > 0"); + } else if (query.getKuCun().equals("无库存")) { + qw.apply("v.count <= 0"); + } + } + //仓库名称 + if (StringUtils.isNotBlank(query.getWarehouse())) { + qw.like("v.warehouseName", query.getWarehouse()); + } + //货位 + if (StringUtils.isNotBlank(query.getWarehouseArea())) { + qw.like("v.warehouseArea", query.getWarehouseArea()); + } + qw.eq("1", "1"); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.getPackageGoodsVo(page, qw); + List records = pagging.getRecords(); + records.removeAll(Collections.singleton(null)); + if (!records.isEmpty()) { + for (WmsInventoryPackageVo record : records) { + BaseGoodsSkuDetailsVo skuDetailsVo = baseGoodsSkuFeign.getDetails(record.getGoodsSid()).getData(); + if (null != skuDetailsVo) { + if (StringUtils.isNotBlank(skuDetailsVo.getGoodsTypeName())) { + record.setGoodsTypeName(skuDetailsVo.getGoodsTypeName()); + } + } + } + } + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + + public PagerVo inventoryAgeList(PagerQuery pq) { + WmsInventoryAgeQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("w.useOrgSid", query.getUseOrgSid()); + } + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("w.goodsSpuName", query.getGoodsSpuName()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("w.warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("w.goodsSkuCode", query.getGoodsSkuCode()); + } + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "date_format (w.firstInDate,'%Y-%m-%d') >= date_format('" + query.getStartDate() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getEndDate()), "date_format (w.firstInDate,'%Y-%m-%d') <= date_format('" + query.getEndDate() + "','%Y-%m-%d')" + ); + qw.apply(StringUtils.isNotBlank(query.getAgeStart()), "w.age >=" + query.getAgeStart()). + apply(StringUtils.isNotBlank(query.getAgeEnd()), "w.age <=" + query.getAgeStart() + ); + qw.eq("1", "1"); + qw.orderByDesc("w.firstInDate"); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.inventoryAgeList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List ageExportExcel(WmsInventoryAgeQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("w.useOrgSid", query.getUseOrgSid()); + } + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("w.goodsSpuName", query.getGoodsSpuName()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("w.warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("w.goodsSkuCode", query.getGoodsSkuCode()); + } + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "date_format (w.firstInDate,'%Y-%m-%d') >= date_format('" + query.getStartDate() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getEndDate()), "date_format (w.firstInDate,'%Y-%m-%d') <= date_format('" + query.getEndDate() + "','%Y-%m-%d')" + ); + qw.apply(StringUtils.isNotBlank(query.getAgeStart()), "w.age >=" + query.getAgeStart()). + apply(StringUtils.isNotBlank(query.getAgeEnd()), "w.age <=" + query.getAgeStart() + ); + qw.eq("1", "1"); + qw.orderByDesc("w.firstInDate"); + List list = baseMapper.ageExportExcel(qw); + return list; + } + + public WmsGoodsInventoryVo selectInvenBySkuSid(String skuSid) { + return baseMapper.selectInvenBySkuSid(skuSid); + } + + public ResultBean> invenGoodsListPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryInvenSelectQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.invenGoodsListPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + + public ResultBean> alloGoodsListPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAlloSelectQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.alloGoodsListPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + + public ResultBean fetchEntityBySid(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventory inventory = fetchBySid(sid); + return rb.success().setData(inventory); + } + + public ResultBean saveWmsInventory(WmsInventorySaveDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsInventory wmsInventory = new WmsInventory(); + BeanUtil.copyProperties(dto, wmsInventory, "sid"); + sid = wmsInventory.getSid(); + baseMapper.insert(wmsInventory); + } else { + WmsInventory wmsInventory = fetchBySid(sid); + if (wmsInventory == null) { + return rb.setMsg("该商品库存不存在"); + } + BeanUtil.copyProperties(dto, wmsInventory, "sid"); + baseMapper.updateById(wmsInventory); + } + return rb.success().setData(sid); + } + + public ResultBean> returnGoodsListPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryReturnSelectQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.returnGoodsListPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } + + public ResultBean> handleGoodsListPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryHandleSelectQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getGoodsName())) { + qw.like("wi.goodsSpuName", query.getGoodsName()); + } + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wi.goodsSkuCode", query.getGoodsSkuCode()); + } + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wi.warehouseName", query.getWarehouseName()); + } + if (StringUtils.isNotBlank(query.getAreaName())) { + qw.like("wwa.areaName", query.getAreaName()); + } + if (StringUtils.isNotBlank(query.getSupplierName())) { + qw.like("wb.supplierName", query.getSupplierName()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.handleGoodsListPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return rb.success().setData(p); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdateDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdateDto.java new file mode 100644 index 0000000000..e371ed42e8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdateDto.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/18 + **/ +@Data +public class WmsInventoryUpdateDto { + private String sid; + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + + private String minimumPrice;//销售底价 + private String warehouseAreaSid;//库区sid + private String warehouseArea;//库区名称 + + private int isShowDiscount;//是否显示折扣标志,1是。0否 + + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + + private int sortNo;//排序 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdatePrice.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdatePrice.java new file mode 100644 index 0000000000..20bcc2f5b1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryUpdatePrice.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/19 + **/ +@Data +public class WmsInventoryUpdatePrice { + + @ApiModelProperty("销售价1/2/3/4/5") + private int type; + + private List sidsList = new ArrayList<>(); + + private String price; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVo.java new file mode 100644 index 0000000000..8dda47d28d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVo.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryVo implements Vo { + + private String sid; + @ApiModelProperty("商品ID") + private String goodsID; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位名称") + private String warehouseRackCode; + @ApiModelProperty("现有库存") + private String count; + @ApiModelProperty("分配库存") + private String allocateCount; + @ApiModelProperty("可用库存") + private String useCount; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("首次入库日期") + private String firstInDate; + @ApiModelProperty("库龄") + private String dateAge; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVoExcelVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVoExcelVo.java new file mode 100644 index 0000000000..5d651ac601 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsInventoryVoExcelVo.java @@ -0,0 +1,54 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/19 + **/ +@Data +public class WmsInventoryVoExcelVo { + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName; + @ExportEntityMap(CnName = "商品编码(图号)", EnName = "goodsSkuCode") + private String goodsSkuCode; + @ExportEntityMap(CnName = "规格型号", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec;//规格型号 + @ExportEntityMap(CnName = "销售价格1", EnName = "price1") + private String price1;//销售价格1 + @ExportEntityMap(CnName = "销售价格2", EnName = "price2") + private String price2;//销售价格2 + @ExportEntityMap(CnName = "销售价格3", EnName = "price3") + private String price3;//销售价格3 + @ExportEntityMap(CnName = "销售价格4", EnName = "price4") + private String price4;//销售价格4 + @ExportEntityMap(CnName = "销售价格5", EnName = "price5") + private String price5;//销售价格5 + @ExportEntityMap(CnName = "计量单位", EnName = "unit") + private String unit;//计量单位 + @ExportEntityMap(CnName = "库存数量", EnName = "count") + private String count;//库存数量 + @ExportEntityMap(CnName = "销售底价", EnName = "minimumPrice") + private String minimumPrice;//销售底价 + @ExportEntityMap(CnName = "三包价格", EnName = "freePrice") + private String freePrice;//三包价格 + @ExportEntityMap(CnName = "首保价格", EnName = "firstMaintainPrice") + private String firstMaintainPrice;//首保价格 + @ExportEntityMap(CnName = "仓库名称", EnName = "warehouseName") + private String warehouseName;//仓库名称 + @ExportEntityMap(CnName = "库区名称", EnName = "warehouseArea") + private String warehouseArea;//库区名称 + @ExportEntityMap(CnName = "货架名称", EnName = "warehouseRackName") + private String warehouseRackName;//warehouseRackName + @ExportEntityMap(CnName = "首次入库日期", EnName = "firstInDate") + private String firstInDate;//首次入库日期-计算库龄的依据 + @ExportEntityMap(CnName = "锁定数量", EnName = "lockCount") + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + @ExportEntityMap(CnName = "排序", EnName = "sortNo") + private String sortNo; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsUpdateCountQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsUpdateCountQuery.java new file mode 100644 index 0000000000..847929c2d8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventory/WmsUpdateCountQuery.java @@ -0,0 +1,17 @@ +package com.yxt.wms.biz.inventory.wmsinventory; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Fan + * @description + * @date 2024/3/20 9:14 + */ +@Data +public class WmsUpdateCountQuery { + private String sid; + private BigDecimal count; + private Integer addOrReduce; // 0增加 1减少 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBill.java new file mode 100644 index 0000000000..9a8f9df01c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBill.java @@ -0,0 +1,31 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsInventoryAllocateBill extends BaseEntity { + + private String billNo;//单据编号 + private String createDate;//制单日期 + private String createUserSid;//制单人sid + private String createByName;//制单人姓名 + private String outOrgSid;//调出分公司sid + private String inOrgSid;//调入分公司sid + private String count;//调拨数量 + private String amount;//调拨金额 + private String confirmSid;//确认人sid + private String confirmName;//确认人姓名 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date finishTime;//完成时间 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDetailsVoNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDetailsVoNew.java new file mode 100644 index 0000000000..79e81f0694 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDetailsVoNew.java @@ -0,0 +1,99 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocateBillDetailDtoNew; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocatebillDetailDetailsVoNew; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(调拨单)
    + * File: WmsInventoryAllocatebillVo.java
    + * Class: com.yxt.wms.api.wmsinventoryallocatebill.WmsInventoryAllocatebillVo
    + * Description: (调拨单)-调出方操作 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-25 16:04:08
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "(调拨单)-调出方操作 视图数据详情", description = "(调拨单)-调出方操作 视图数据详情") +public class WmsInventoryAllocateBillDetailsVoNew implements Vo { + + private String sid; + + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("调出分公司sid") + private String outOrgSid; + @ApiModelProperty("调入分公司sid") + private String inOrgSid; + @ApiModelProperty("调拨数量") + private BigDecimal count; + @ApiModelProperty("调拨金额") + private BigDecimal amount; + @ApiModelProperty("确认人sid") + private String confirmSid; + @ApiModelProperty("确认人姓名") + private String confirmName; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("完成时间") + private Date finishTime; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("调拨单商品明细") + private List wmsInventoryAllocateBillDetailNewList; + + /* + * 页面展示 + * */ + @ApiModelProperty("调出分公司名称") + private String outOrgName; + @ApiModelProperty("调入分公司名称") + private String inOrgName; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDto.java new file mode 100644 index 0000000000..40caa49fcf --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDto.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryAllocateBillDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String goodsID;//商品ID(唯一编码,入库时生成) + private String goodsSid;//商品sid + private String billSid;//入库单sid + private String billDetailSid;//入库单明细sid + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + private String unit;//计量单位 + private String count;//库存数量 + private String minimumPrice;//销售底价 + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String isShowDiscount;//是否显示折扣标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstInDate;//首次入库日期-计算库龄的依据 + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + private String sortNo;//排序 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDtoNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDtoNew.java new file mode 100644 index 0000000000..cdf396b410 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillDtoNew.java @@ -0,0 +1,59 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocateBillDetailDtoNew; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryAllocateBillDtoNew implements Dto { + + private String sid; + + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("调出分公司sid") + private String outOrgSid; + @ApiModelProperty("调入分公司sid") + private String inOrgSid; + @ApiModelProperty("调拨数量") + private BigDecimal count; + @ApiModelProperty("调拨金额") + private BigDecimal amount; + @ApiModelProperty("确认人sid") + private String confirmSid; + @ApiModelProperty("确认人姓名") + private String confirmName; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("完成时间") + private Date finishTime; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("调拨单商品明细") + private List wmsInventoryAllocateBillDetailNewList; + + /* + * 页面展示 + * */ + @ApiModelProperty("调出分公司名称") + private String outOrgName; + @ApiModelProperty("调入分公司名称") + private String inOrgName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.java new file mode 100644 index 0000000000..4fe6bdc32e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.java @@ -0,0 +1,20 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsInventoryAllocateBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsInventoryAllocateBillVo initialization (@Param("sid") String sid); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.xml new file mode 100644 index 0000000000..19517a608d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQuery.java new file mode 100644 index 0000000000..c9e620dcf8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryAllocateBillQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQueryNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQueryNew.java new file mode 100644 index 0000000000..bf2af60ec3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillQueryNew.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryAllocateBillQueryNew implements Query { + + @ApiModelProperty("创建开始日期") + private String createStartTime; + @ApiModelProperty("创建结束日期") + private String createEndTime; + @ApiModelProperty("门店") + private String createOrgSid; + @ApiModelProperty("状态") + private String state; + @ApiModelProperty("单据范围") + private String billFW; + @ApiModelProperty("其他查询条件") + private String otherQuery; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillService.java new file mode 100644 index 0000000000..609e0a00b5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillService.java @@ -0,0 +1,196 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocateBillDetailDtoNew; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocateBillDetailService; +import com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail.WmsInventoryAllocatebillDetailDetailsVoNew; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsInventoryAllocateBillService extends MybatisBaseService { + + @Autowired + private WmsInventoryAllocateBillDetailService wmsInventoryAllocateBillDetailService; + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) { + qw.like("rackName", query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventoryAllocateBillQueryNew query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + /** + * 入库 + * @param dto + * @return + */ +// public ResultBean warehousing(WmsInventoryAllocateBillDto dto) { +// ResultBean rb = ResultBean.fireFail(); +// WmsInventoryAllocateBill wmsInventory=baseMapper.selectOne(new QueryWrapper().eq("goodsSid",dto.getGoodsSid()).eq("warehouseSid",dto.getWarehouseSid())); +// if(null==wmsInventory){ +// WmsInventoryAllocateBill wms=new WmsInventoryAllocateBill(); +// BeanUtil.copyProperties(dto,wms,"sid","id"); +// wms.setFirstInDate(new Date()); +// baseMapper.insert(wms); +// return rb.success().setData(wms); +// }else{ +// wmsInventory.setCount(String.valueOf(Double.valueOf(dto.getCount())+Double.valueOf(wmsInventory.getCount()))); +// baseMapper.updateById(wmsInventory); +// } +// return rb.success().setData(wmsInventory); +// } + + /** + * 出库 + * + * @param dto + * @return + */ + public ResultBean outWarehousing(WmsInventoryAllocateBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBill wmsInventory = baseMapper.selectOne(new QueryWrapper().eq("goodsSid", dto.getGoodsSid()).eq("warehouseSid", dto.getWarehouseSid())); + double exisInventory = Double.valueOf(wmsInventory.getCount()); + double out = Double.valueOf(dto.getCount()); + if (null == wmsInventory) { + return rb.setMsg("此仓库没有相应的商品库存"); + } + if (exisInventory < -out) { + return rb.setMsg("库存不足"); + } + wmsInventory.setCount(String.valueOf(exisInventory + out)); + baseMapper.updateById(wmsInventory); + return rb.success().setData(wmsInventory); + } + + public ResultBean saveOrUpdate(WmsInventoryAllocateBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsInventoryAllocateBill wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsInventoryAllocateBill wmsWarehouseRack = new WmsInventoryAllocateBill(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBill wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + + public ResultBean updateIsEnable(String sid, String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBill wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public WmsInventoryAllocateBillDetailsVoNew fetchDetailsVoBySid(String sid) { + WmsInventoryAllocateBill entity = fetchBySid(sid); + WmsInventoryAllocateBillDetailsVoNew vo = new WmsInventoryAllocateBillDetailsVoNew(); + BeanUtil.copyProperties(entity, vo); + List wmsInventoryAllocatebillDetailDetailsVoNews = wmsInventoryAllocateBillDetailService.selByMainSid(sid); + vo.setWmsInventoryAllocateBillDetailNewList(wmsInventoryAllocatebillDetailDetailsVoNews); + return vo; + } + + public void delAll(String[] sids) { + delBySids(sids); + for (String sid : sids) { + wmsInventoryAllocateBillDetailService.delByMainSid(sid); + } + } + + public void saveOrUpdateDto(WmsInventoryAllocateBillDtoNew dto) { + String dtoSid = dto.getSid(); + List wmsInventoryAllocateBillDetailNewList = dto.getWmsInventoryAllocateBillDetailNewList(); + if (StringUtils.isBlank(dtoSid)) { + String sid = this.insertByDto(dto); + for (WmsInventoryAllocateBillDetailDtoNew wmsInventoryAllocateBillDetailDtoNew : wmsInventoryAllocateBillDetailNewList) { + wmsInventoryAllocateBillDetailDtoNew.setBillSid(sid); + wmsInventoryAllocateBillDetailService.saveOrUpdateDto(wmsInventoryAllocateBillDetailDtoNew); + } + return; + } + this.updateByDto(dto); + wmsInventoryAllocateBillDetailService.delByMainSid(dtoSid); + for (WmsInventoryAllocateBillDetailDtoNew wmsInventoryAllocateBillDetailDtoNew : wmsInventoryAllocateBillDetailNewList) { + wmsInventoryAllocateBillDetailDtoNew.setBillSid(dtoSid); + wmsInventoryAllocateBillDetailService.saveOrUpdateDto(wmsInventoryAllocateBillDetailDtoNew); + } + } + + public String insertByDto(WmsInventoryAllocateBillDtoNew dto) { + WmsInventoryAllocateBill entity = new WmsInventoryAllocateBill(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + return entity.getSid(); + } + + public void updateByDto(WmsInventoryAllocateBillDtoNew dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + } + + public void allocation(WmsInventoryAllocateBillDtoNew dto) { + + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVo.java new file mode 100644 index 0000000000..cd190d6ee5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVo.java @@ -0,0 +1,52 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryAllocateBillVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String goodsID;//商品ID(唯一编码,入库时生成) + private String goodsSid;//商品sid + private String billSid;//入库单sid + private String billDetailSid;//入库单明细sid + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + private String unit;//计量单位 + private String count;//库存数量 + private String minimumPrice;//销售底价 + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String isShowDiscount;//是否显示折扣标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstInDate;//首次入库日期-计算库龄的依据 + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + private String sortNo;//排序 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + private String goodsName; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVoNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVoNew.java new file mode 100644 index 0000000000..e27f3da957 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebill/WmsInventoryAllocateBillVoNew.java @@ -0,0 +1,56 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebill; + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(调拨单)
    + * File: WmsInventoryAllocatebillVo.java
    + * Class: com.yxt.wms.api.wmsinventoryallocatebill.WmsInventoryAllocatebillVo
    + * Description: (调拨单)-调出方操作 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-25 16:04:08
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "(调拨单)-调出方操作 视图数据对象", description = "(调拨单)-调出方操作 视图数据对象") +public class WmsInventoryAllocateBillVoNew implements Vo { + + private String sid; + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("制单日期") + private String createDate; + @ApiModelProperty("完成标志") + private String state; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("完成时间") + private Date finishTime; + @ApiModelProperty("调出门店") + private String outOrg; + @ApiModelProperty("调入门店") + private String inOrg; + @ApiModelProperty("调拨数量") + private BigDecimal count; + @ApiModelProperty("调拨金额") + private BigDecimal amount; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("门店") + private String createOrgName; + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetail.java new file mode 100644 index 0000000000..08cf194b52 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetail.java @@ -0,0 +1,41 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsInventoryAllocateBillDetail extends BaseEntity { +// private String id; +// private String sid= UUID.randomUUID().toString(); +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// private Date createTime; +// private String remarks; +// private String isEnable; + private String billSid;//商品ID(唯一编码,入库时生成) + private String inventorySid;//商品sid + private String goodsSid;//入库单sid + private String goodsName;//入库单明细sid + private String goodsCode;//销售价格1 + private String specification;//销售价格2 + private String goodsModel;//销售价格3 + private String unit;//销售价格4 + private String outWarehouseSid;//销售价格5 + private String outWarehouseName;//计量单位 + private String warehouseAreasid;//库存数量 + private String warehouseArea;//销售底价 + private String taxPrice;//三包价格 + private String stockCount;//首保价格 + private String inWarehouseSid;//仓库sid + private String inWarehouseName;//仓库名称 + private String count;//货位 + private String amount;//是否显示折扣标志 + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDto.java new file mode 100644 index 0000000000..35f19d0160 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDto.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryAllocateBillDetailDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private String goodsID;//商品ID(唯一编码,入库时生成) + private String goodsSid;//商品sid + private String billSid;//入库单sid + private String billDetailSid;//入库单明细sid + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + private String unit;//计量单位 + private String count;//库存数量 + private String minimumPrice;//销售底价 + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String isShowDiscount;//是否显示折扣标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstInDate;//首次入库日期-计算库龄的依据 + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + private String sortNo;//排序 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDtoNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDtoNew.java new file mode 100644 index 0000000000..b5918d5de1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailDtoNew.java @@ -0,0 +1,62 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryAllocateBillDetailDtoNew implements Dto { + + private String sid; + + @ApiModelProperty("盘点单sid") + private String billSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; + @ApiModelProperty("库存数量") + private BigDecimal stockCount; + @ApiModelProperty("调入仓库sid") + private String inWarehouseSid; + @ApiModelProperty("调入仓库名称") + private String inWarehouseName; + @ApiModelProperty("调入库位sid") + private String inWarehouseRackSid; + @ApiModelProperty("调入库位编码") + private String inWarehouseRackCode; + @ApiModelProperty("调拨数量") + private BigDecimal count; + @ApiModelProperty("调拨金额(调拨数量*含税价)") + private BigDecimal amount; + + /* + * 页面展示 + * */ + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("零件号") + private String goodsSkuCode; + @ApiModelProperty("规格") + private String goodsSkuOwnSpec; + @ApiModelProperty("车型") + private String carModel; + @ApiModelProperty("商品单位") + private String unit; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.java new file mode 100644 index 0000000000..b180edf53c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.java @@ -0,0 +1,27 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsInventoryAllocateBillDetailMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsInventoryAllocateBillDetailVo initialization (@Param("sid") String sid); + + @Delete("delete from wms_inventory_allocatebill_detail where billSid = #{billSid}") + void delByMainSid(String billSid); + + List selByMainSid(String billSid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.xml new file mode 100644 index 0000000000..17f4650950 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailMapper.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailQuery.java new file mode 100644 index 0000000000..f308001c54 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryAllocateBillDetailQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailService.java new file mode 100644 index 0000000000..0ffb6f792b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailService.java @@ -0,0 +1,157 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsInventoryAllocateBillDetailService extends MybatisBaseService { + + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetailQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) { + qw.like("rackName", query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } + + /** + * 入库 + * @param dto + * @return + */ +// public ResultBean warehousing(WmsInventoryAllocateBillDetailDto dto) { +// ResultBean rb = ResultBean.fireFail(); +// WmsInventoryAllocateBillDetail wmsInventory=baseMapper.selectOne(new QueryWrapper().eq("goodsSid",dto.getGoodsSid()).eq("warehouseSid",dto.getWarehouseSid())); +// if(null==wmsInventory){ +// WmsInventoryAllocateBillDetail wms=new WmsInventoryAllocateBillDetail(); +// BeanUtil.copyProperties(dto,wms,"sid","id"); +// wms.setFirstInDate(new Date()); +// baseMapper.insert(wms); +// return rb.success().setData(wms); +// }else{ +// wmsInventory.setCount(String.valueOf(Double.valueOf(dto.getCount())+Double.valueOf(wmsInventory.getCount()))); +// baseMapper.updateById(wmsInventory); +// } +// return rb.success().setData(wmsInventory); +// } + + /** + * 出库 + * + * @param dto + * @return + */ + public ResultBean outWarehousing(WmsInventoryAllocateBillDetailDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetail wmsInventory = baseMapper.selectOne(new QueryWrapper().eq("goodsSid", dto.getGoodsSid()).eq("warehouseSid", dto.getWarehouseSid())); + double exisInventory = Double.valueOf(wmsInventory.getCount()); + double out = Double.valueOf(dto.getCount()); + if (null == wmsInventory) { + return rb.setMsg("此仓库没有相应的商品库存"); + } + if (exisInventory < -out) { + return rb.setMsg("库存不足"); + } + wmsInventory.setCount(String.valueOf(exisInventory + out)); + baseMapper.updateById(wmsInventory); + return rb.success().setData(wmsInventory); + } + + public ResultBean saveOrUpdate(WmsInventoryAllocateBillDetailDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsInventoryAllocateBillDetail wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsInventoryAllocateBillDetail wmsWarehouseRack = new WmsInventoryAllocateBillDetail(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetailVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetail wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + + public ResultBean updateIsEnable(String sid, String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryAllocateBillDetail wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public void delByMainSid(String billSid) { + baseMapper.delByMainSid(billSid); + } + + public List selByMainSid(String billSid) { + return baseMapper.selByMainSid(billSid); + } + + public void saveOrUpdateDto(WmsInventoryAllocateBillDetailDtoNew dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventoryAllocateBillDetailDtoNew dto) { + WmsInventoryAllocateBillDetail entity = new WmsInventoryAllocateBillDetail(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventoryAllocateBillDetailDtoNew dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailVo.java new file mode 100644 index 0000000000..d306c1e7cd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocateBillDetailVo.java @@ -0,0 +1,52 @@ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryAllocateBillDetailVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String state; + private String isDelete; + private String goodsID;//商品ID(唯一编码,入库时生成) + private String goodsSid;//商品sid + private String billSid;//入库单sid + private String billDetailSid;//入库单明细sid + private String price1;//销售价格1 + private String price2;//销售价格2 + private String price3;//销售价格3 + private String price4;//销售价格4 + private String price5;//销售价格5 + private String unit;//计量单位 + private String count;//库存数量 + private String minimumPrice;//销售底价 + private String freePrice;//三包价格 + private String firstMaintainPrice;//首保价格 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String isShowDiscount;//是否显示折扣标志 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date firstInDate;//首次入库日期-计算库龄的依据 + private String lockCount;//锁定数量,计算字段,出库申请通过,但未实际出库 + private String sortNo;//排序 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + private String goodsName; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocatebillDetailDetailsVoNew.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocatebillDetailDetailsVoNew.java new file mode 100644 index 0000000000..77c605f0f9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryallocatebilldetail/WmsInventoryAllocatebillDetailDetailsVoNew.java @@ -0,0 +1,98 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryallocatebilldetail; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(调拨单)
    + * File: WmsInventoryAllocatebillDetailVo.java
    + * Class: com.yxt.wms.api.wmsinventoryallocatebilldetail.WmsInventoryAllocatebillDetailVo
    + * Description: (调拨单-明细) 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-25 16:04:08
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "(调拨单-明细) 视图数据详情", description = "(调拨单-明细) 视图数据详情") +public class WmsInventoryAllocatebillDetailDetailsVoNew implements Vo { + + private String sid; + + @ApiModelProperty("盘点单sid") + private String billSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; + @ApiModelProperty("库存数量") + private BigDecimal stockCount; + @ApiModelProperty("调入仓库sid") + private String inWarehouseSid; + @ApiModelProperty("调入仓库名称") + private String inWarehouseName; + @ApiModelProperty("调入库位sid") + private String inWarehouseRackSid; + @ApiModelProperty("调入库位编码") + private String inWarehouseRackCode; + @ApiModelProperty("调拨数量") + private BigDecimal count; + @ApiModelProperty("调拨金额(调拨数量*含税价)") + private BigDecimal amount; + + /* + * 页面展示 + * */ + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("零件号") + private String goodsSkuCode; + @ApiModelProperty("规格") + private String goodsSkuOwnSpec; + @ApiModelProperty("车型") + private String carModel; + @ApiModelProperty("商品单位") + private String unit; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatch.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatch.java new file mode 100644 index 0000000000..942452093e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatch.java @@ -0,0 +1,85 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatch.java
    + * Class: com.yxt.wms.api.wmsinventorybatch.WmsInventoryBatch
    + * Description: 商品库存-批次属性.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "商品库存-批次属性", description = "商品库存-批次属性") +@TableName("wms_inventory_batch") +public class WmsInventoryBatch extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; // 批次号(入库日期+生产日期,如240320-240109) + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("收货日期") + private Date deliveryDate; // 收货日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("生产日期") + private Date manufactureDate; // 生产日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDate; // 有效期(根据spu中有效天数、生产日期计算) + @ApiModelProperty("商品质检状态(良品、残品等)") + private Integer qualityState; // 商品质检状态(良品、残品等) + @ApiModelProperty("货主sid") + private String goodsOwnerSid; // 货主sid + @ApiModelProperty("货主名称") + private String goodsOwner; // 货主名称 + @ApiModelProperty("供应商sid") + private String supplierSid; // 供应商sid + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("入库单sid") + private String billSid; // 入库单sid + @ApiModelProperty("入库单号") + private String billNo; // 入库单号 + @ApiModelProperty("入库单明细sid") + private String billDetailSid; // 入库单明细sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDetailsVo.java new file mode 100644 index 0000000000..1b182bb655 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDetailsVo.java @@ -0,0 +1,89 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchVo.java
    + * Class: com.yxt.wms.api.wmsinventorybatch.WmsInventoryBatchVo
    + * Description: 商品库存-批次属性 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "商品库存-批次属性 视图数据详情", description = "商品库存-批次属性 视图数据详情") +public class WmsInventoryBatchDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; // 批次号(入库日期+生产日期,如240320-240109) + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("收货日期") + private Date deliveryDateStart; // 收货日期 + private Date deliveryDateEnd; // 收货日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("生产日期") + private Date manufactureDateStart; // 生产日期 + private Date manufactureDateEnd; // 生产日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDateStart; // 有效期(根据spu中有效天数、生产日期计算) + private Date expirationDateEnd; // 有效期(根据spu中有效天数、生产日期计算) + @ApiModelProperty("商品质检状态(良品、残品等)") + private Integer qualityState; // 商品质检状态(良品、残品等) + @ApiModelProperty("货主sid") + private String goodsOwnerSid; // 货主sid + @ApiModelProperty("货主名称") + private String goodsOwner; // 货主名称 + @ApiModelProperty("供应商sid") + private String supplierSid; // 供应商sid + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("入库单sid") + private String billSid; // 入库单sid + @ApiModelProperty("入库单号") + private String billNo; // 入库单号 + @ApiModelProperty("入库单明细sid") + private String billDetailSid; // 入库单明细sid + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDto.java new file mode 100644 index 0000000000..0fc88a9ba3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchDto.java @@ -0,0 +1,89 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + + +import com.yxt.common.core.dto.Dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchDto.java
    + * Class: com.yxt.wms.api.wmsinventorybatch.WmsInventoryBatchDto
    + * Description: 商品库存-批次属性 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "商品库存-批次属性 数据传输对象", description = "商品库存-批次属性 数据传输对象") +public class WmsInventoryBatchDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; // 批次号(入库日期+生产日期,如240320-240109) + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("收货日期") + private Date deliveryDateStart; // 收货日期 + private Date deliveryDateEnd; // 收货日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("生产日期") + private Date manufactureDateStart; // 生产日期 + private Date manufactureDateEnd; // 生产日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDateStart; // 有效期(根据spu中有效天数、生产日期计算) + private Date expirationDateEnd; // 有效期(根据spu中有效天数、生产日期计算) + @ApiModelProperty("商品质检状态(良品、残品等)") + private Integer qualityState; // 商品质检状态(良品、残品等) + @ApiModelProperty("货主sid") + private String goodsOwnerSid; // 货主sid + @ApiModelProperty("货主名称") + private String goodsOwner; // 货主名称 + @ApiModelProperty("供应商sid") + private String supplierSid; // 供应商sid + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("入库单sid") + private String billSid; // 入库单sid + @ApiModelProperty("入库单号") + private String billNo; // 入库单号 + @ApiModelProperty("入库单明细sid") + private String billDetailSid; // 入库单明细sid + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.java new file mode 100644 index 0000000000..0d220a9c4b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.java @@ -0,0 +1,60 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchMapper.java
    + * Class: com.yxt.wms.biz.wmsinventorybatch.WmsInventoryBatchMapper
    + * Description: 商品库存-批次属性.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventoryBatchMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_batch") + List selectListVo(); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.xml new file mode 100644 index 0000000000..33190ce7a9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchQuery.java new file mode 100644 index 0000000000..4aa5da5722 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchQuery.java @@ -0,0 +1,87 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + + +import com.yxt.common.core.query.Query; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchQuery.java
    + * Class: com.yxt.wms.api.wmsinventorybatch.WmsInventoryBatchQuery
    + * Description: 商品库存-批次属性 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "商品库存-批次属性 查询条件", description = "商品库存-批次属性 查询条件") +public class WmsInventoryBatchQuery implements Query { + + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; // 批次号(入库日期+生产日期,如240320-240109) + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("收货日期") + private Date deliveryDateStart; // 收货日期 + private Date deliveryDateEnd; // 收货日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("生产日期") + private Date manufactureDateStart; // 生产日期 + private Date manufactureDateEnd; // 生产日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDateStart; // 有效期(根据spu中有效天数、生产日期计算) + private Date expirationDateEnd; // 有效期(根据spu中有效天数、生产日期计算) + @ApiModelProperty("商品质检状态(良品、残品等)") + private Integer qualityState; // 商品质检状态(良品、残品等) + @ApiModelProperty("货主sid") + private String goodsOwnerSid; // 货主sid + @ApiModelProperty("货主名称") + private String goodsOwner; // 货主名称 + @ApiModelProperty("供应商sid") + private String supplierSid; // 供应商sid + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("入库单sid") + private String billSid; // 入库单sid + @ApiModelProperty("入库单号") + private String billNo; // 入库单号 + @ApiModelProperty("入库单明细sid") + private String billDetailSid; // 入库单明细sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchService.java new file mode 100644 index 0000000000..cec6e7f522 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchService.java @@ -0,0 +1,95 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.stereotype.Service; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchService.java
    + * Class: com.yxt.wms.biz.wmsinventorybatch.WmsInventoryBatchService
    + * Description: 商品库存-批次属性 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventoryBatchService extends MybatisBaseService { + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventoryBatchQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventoryBatchDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventoryBatchDto dto){ + WmsInventoryBatch entity = new WmsInventoryBatch(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventoryBatchDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventoryBatch entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventoryBatchDetailsVo fetchDetailsVoBySid(String sid){ + WmsInventoryBatch entity = fetchBySid(sid); + WmsInventoryBatchDetailsVo vo = new WmsInventoryBatchDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchVo.java new file mode 100644 index 0000000000..3d2a40fc91 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybatch/WmsInventoryBatchVo.java @@ -0,0 +1,89 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorybatch; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(库存)
    + * File: WmsInventoryBatchVo.java
    + * Class: com.yxt.wms.api.wmsinventorybatch.WmsInventoryBatchVo
    + * Description: 商品库存-批次属性 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-30 14:05:11
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "商品库存-批次属性 视图数据对象", description = "商品库存-批次属性 视图数据对象") +public class WmsInventoryBatchVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("批次号(入库日期+生产日期,如240320-240109)") + private String batchNumber; // 批次号(入库日期+生产日期,如240320-240109) + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("收货日期") + private Date deliveryDateStart; // 收货日期 + private Date deliveryDateEnd; // 收货日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("生产日期") + private Date manufactureDateStart; // 生产日期 + private Date manufactureDateEnd; // 生产日期 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDateStart; // 有效期(根据spu中有效天数、生产日期计算) + private Date expirationDateEnd; // 有效期(根据spu中有效天数、生产日期计算) + @ApiModelProperty("商品质检状态(良品、残品等)") + private Integer qualityState; // 商品质检状态(良品、残品等) + @ApiModelProperty("货主sid") + private String goodsOwnerSid; // 货主sid + @ApiModelProperty("货主名称") + private String goodsOwner; // 货主名称 + @ApiModelProperty("供应商sid") + private String supplierSid; // 供应商sid + @ApiModelProperty("供应商名称") + private String supplierName; // 供应商名称 + @ApiModelProperty("入库单sid") + private String billSid; // 入库单sid + @ApiModelProperty("入库单号") + private String billNo; // 入库单号 + @ApiModelProperty("入库单明细sid") + private String billDetailSid; // 入库单明细sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsQuery.java new file mode 100644 index 0000000000..bbd61b8ad4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsQuery.java @@ -0,0 +1,14 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class InStorageDetailsQuery { + + private String sid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsVo.java new file mode 100644 index 0000000000..ee5ba0ac88 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/InStorageDetailsVo.java @@ -0,0 +1,42 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailInDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/21 + **/ +@Data +public class InStorageDetailsVo { + + private String sid; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType;//(入库、出库) + @ApiModelProperty("单据日期") + private String createDate; + @ApiModelProperty("用户sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value") + private String busTypeValue;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + private List wmsInventoryBillDetailDtos = new ArrayList<>(); + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsQuery.java new file mode 100644 index 0000000000..72dcb5279a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsQuery.java @@ -0,0 +1,14 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/22 + **/ +@Data +public class OutStorageDetailsQuery { + + private String sid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsVo.java new file mode 100644 index 0000000000..992a1783c3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/OutStorageDetailsVo.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailOutDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/22 + **/ +@Data +public class OutStorageDetailsVo { + + private String sid; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType;//(入库、出库) + @ApiModelProperty("单据日期") + private String createDate; + @ApiModelProperty("用户sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value") + private String busTypeValue;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + private List wmsInventoryBillDetailDtos = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBill.java new file mode 100644 index 0000000000..f4f3dab883 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBill.java @@ -0,0 +1,34 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsInventoryBill extends BaseEntity { + private String sourceBillSid;//来源单sid + private String billNo;//单据编号 + private String billType;//单据类型(入库、出库) + private String createByName;//制单人姓名 + private String busTypeKey;//业务类型key(采购入库、维修出入库、销售出入库等) + private String busTypeValue;//业务类型value(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("客户/供应商sid") + private String billObjSid; + @ApiModelProperty("客户/供应商名称") + private String billObjName; + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + private Date outTime;//实际出/入库时间 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillDto.java new file mode 100644 index 0000000000..4698e13a44 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillDto.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailDto; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryBillDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private Integer state;//0正常,1作废;申请-审批中-完成-作废 + private String sourceBillSid;//来源单sid + private String billNo;//单据编号 + private String billType;//单据类型(入库、出库) + private String createDate;//单据日期 + private String createBySid;//制单人 + private String createByName;//制单人姓名 + private String busTypeKey;//业务类型key(采购入库、维修出入库、销售出入库等) + private String busTypeValue;//业务类型value(采购入库、维修出入库、销售出入库等) + private String warehouseManagerSid;//库管操作人sid + private String warehouseManager;//库管操作人 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String outTime;//实际出库时间 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid + private List wmsInventoryBillDetailDtos; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillExcelVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillExcelVo.java new file mode 100644 index 0000000000..8e37d2a733 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillExcelVo.java @@ -0,0 +1,36 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/25 + **/ +@Data +public class WmsInventoryBillExcelVo { + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ExportEntityMap(CnName = "单据编号", EnName = "billNo") + private String billNo; + @ExportEntityMap(CnName = "制单人姓名", EnName = "createByName") + private String createByName; + @ExportEntityMap(CnName = "单据日期", EnName = "createDate") + private String createDate; + @ExportEntityMap(CnName = "单据类型", EnName = "billType") + private String billType; + @ExportEntityMap(CnName = "业务类型", EnName = "busTypeValue") + private String busTypeValue; + @ExportEntityMap(CnName = "客户/供应商名称", EnName = "billObjName") + private String billObjName; + @ExportEntityMap(CnName = "库管操作人", EnName = "warehouseManager") + private String warehouseManager; + @ExportEntityMap(CnName = "备注", EnName = "remarks") + private String remarks; + @ExportEntityMap(CnName = "来源单", EnName = "sourceBillSid") + private String sourceBillSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillInDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillInDto.java new file mode 100644 index 0000000000..9dcb92dee1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillInDto.java @@ -0,0 +1,47 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailDto; +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailInDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/14 + **/ +@Data +public class WmsInventoryBillInDto { + + + private String sid; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType;//(入库、出库) + @ApiModelProperty("单据日期") + private String createDate; + @ApiModelProperty("用户sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value") + private String busTypeValue;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + private String orgPath; + private List wmsInventoryBillDetailDtos = new ArrayList<>(); + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.java new file mode 100644 index 0000000000..54dfca5232 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsInventoryBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsInventoryBillVo initialization (@Param("sid") String sid); + + InStorageDetailsVo inDetails(String sid); + + OutStorageDetailsVo outDetails(String sid); + + List listExcel(@Param(Constants.WRAPPER)QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.xml new file mode 100644 index 0000000000..5896533b10 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillOutDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillOutDto.java new file mode 100644 index 0000000000..28936b86c1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillOutDto.java @@ -0,0 +1,42 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailInDto; +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.WmsInventoryBillDetailOutDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/14 + **/ +@Data +public class WmsInventoryBillOutDto { + + private String sid; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType;//(入库、出库) + @ApiModelProperty("单据日期") + private String createDate; + @ApiModelProperty("用户sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value") + private String busTypeValue;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + private String orgPath; + private List wmsInventoryBillDetailDtos = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillQuery.java new file mode 100644 index 0000000000..8fd764de52 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillQuery.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryBillQuery implements Query { + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人") + private String createByName; + @ApiModelProperty("库管操作人") + private String warehouseManager; + @ApiModelProperty("单据日期开始时间") + private String createDateStart; + @ApiModelProperty("单据日期结束时间") + private String createDateEnd; + @ApiModelProperty("用户sid") + private String createBySid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillService.java new file mode 100644 index 0000000000..a16f8f4ebf --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillService.java @@ -0,0 +1,311 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.base.wmswarehouseinfo.WmsWarehouseInfo; +import com.yxt.wms.biz.base.wmswarehouseinfo.WmsWarehouseInfoService; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseArea; +import com.yxt.wms.biz.base.wmswarehousearea.WmsWarehouseAreaService; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryVoExcelVo; +import com.yxt.wms.biz.inventory.wmsinventorybilldetail.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsInventoryBillService extends MybatisBaseService { + @Autowired + WmsInventoryBillDetailService wmsInventoryBillDetailService; + @Autowired + WmsInventoryService wmsInventoryService; + @Autowired + WmsWarehouseInfoService wmsWarehouseService; + @Autowired + WmsWarehouseAreaService wmsWarehouseAreaService; + + public PagerVo listPage(PagerQuery pq) { + WmsInventoryBillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + /*if(StringUtils.isNotBlank(query.getName())){ + qw.like("rackName",query.getName()); + }*/ + //单据编号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wib.billNo", query.getBillNo()); + } + //制单人 + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.like("wib.createByName", query.getBillNo()); + } + //库管操作人 + if (StringUtils.isNotBlank(query.getWarehouseManager())) { + qw.like("wib.warehouseManager", query.getWarehouseManager()); + } + //单据开始时间-单据结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateDateStart()), "date_format (wib.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateDateStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateDateEnd()), "date_format (wib.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateDateEnd() + "','%Y-%m-%d')" + ); + if (StringUtils.isNotBlank(query.getCreateBySid())) { + qw.eq("wib.createBySid", query.getCreateBySid()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + @Transactional + public ResultBean inStorage2(WmsInventoryBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBill wmsInventoryBill = new WmsInventoryBill(); + BeanUtil.copyProperties(dto, wmsInventoryBill, "ids", "id"); + //入库单 + baseMapper.insert(wmsInventoryBill); + for (WmsInventoryBillDetailDto wmsInventoryBillDetailDto : dto.getWmsInventoryBillDetailDtos()) { + WmsInventoryBillDetail detail = new WmsInventoryBillDetail(); +// WmsGoods wmsGoods = wmsGoodsService.getOne(new QueryWrapper().eq("sid", wmsInventoryBillDetailDto.getGoodsSid())); + WmsWarehouseInfo wmsWarehouse = wmsWarehouseService.getOne(new QueryWrapper().eq("sid", wmsInventoryBillDetailDto.getWarehouseSid())); + WmsWarehouseArea wmsWarehouseArea = wmsWarehouseAreaService.getOne(new QueryWrapper().eq("warehouseSid", wmsWarehouse.getSid())); + //加库存 + wmsInventoryBillDetailDto.getWmsInventoryDtos().setBillSid(wmsInventoryBill.getSid()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setGoodsSid(wmsInventoryBillDetailDto.getGoodsSid()); +// wmsInventoryBillDetailDto.getWmsInventoryDtos().setUnit(wmsGoods.getUnit()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setWarehouseSid(wmsInventoryBillDetailDto.getWarehouseSid()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setWarehouseName(wmsWarehouse.getWarehouseName()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setCount(wmsInventoryBillDetailDto.getCount()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setWarehouseArea(wmsWarehouseArea.getAreaName()); + WmsInventory wmsInventory = wmsInventoryService.warehousing(wmsInventoryBillDetailDto.getWmsInventoryDtos()).getData(); + + //入库单明细 + BeanUtil.copyProperties(wmsInventoryBillDetailDto, detail, "sid", "id"); +// detail.setGoodsName(wmsGoods.getGoodsName()); +// detail.setGoodsCode(wmsGoods.getGoodsCode()); +// detail.setUnit(wmsGoods.getUnit()); + detail.setWarehouseName(wmsWarehouse.getWarehouseName()); + detail.setWarehouseArea(wmsWarehouseArea.getAreaName()); + detail.setInventorySid(wmsInventory.getSid()); + detail.setBillSid(wmsInventoryBill.getSid()); + detail.setCurrentCount(wmsInventory.getCount().toString());// + wmsInventoryBillDetailService.save(detail); + } + return rb.success(); + } + + @Transactional + public ResultBean outStorage2(WmsInventoryBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBill wmsInventoryBill = new WmsInventoryBill(); + BeanUtil.copyProperties(dto, wmsInventoryBill, "sid", "id"); + baseMapper.insert(wmsInventoryBill); + for (WmsInventoryBillDetailDto wmsInventoryBillDetailDto : dto.getWmsInventoryBillDetailDtos()) { + wmsInventoryBillDetailDto.setCount("-" + wmsInventoryBillDetailDto.getCount()); + wmsInventoryBillDetailDto.setTaxAmount("-" + wmsInventoryBillDetailDto.getTaxAmount()); + wmsInventoryBillDetailDto.setTaxPrice("-" + wmsInventoryBillDetailDto.getTaxPrice()); + wmsInventoryBillDetailDto.setAmount("-" + wmsInventoryBillDetailDto.getAmount()); + WmsInventoryBillDetail detail = new WmsInventoryBillDetail(); +// WmsGoods wmsGoods = wmsGoodsService.getOne(new QueryWrapper().eq("sid", wmsInventoryBillDetailDto.getGoodsSid())); + WmsWarehouseInfo wmsWarehouse = wmsWarehouseService.getOne(new QueryWrapper().eq("sid", wmsInventoryBillDetailDto.getWarehouseSid())); + WmsWarehouseArea wmsWarehouseArea = wmsWarehouseAreaService.getOne(new QueryWrapper().eq("warehouseSid", wmsWarehouse.getSid())); + //减库存 + wmsInventoryBillDetailDto.getWmsInventoryDtos().setGoodsSid(wmsInventoryBillDetailDto.getGoodsSid()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setWarehouseSid(wmsInventoryBillDetailDto.getWarehouseSid()); + wmsInventoryBillDetailDto.getWmsInventoryDtos().setCount(wmsInventoryBillDetailDto.getCount()); + ResultBean rb1 = wmsInventoryService.outWarehousing(wmsInventoryBillDetailDto.getWmsInventoryDtos()); + if (!rb1.getCode().equals("200")) { + return rb1; + } + WmsInventory wmsInventory = rb1.getData(); + //出库单明细 + BeanUtil.copyProperties(wmsInventoryBillDetailDto, detail, "sid", "id"); +// detail.setGoodsName(wmsGoods.getGoodsName()); +// detail.setGoodsCode(wmsGoods.getGoodsCode()); +// detail.setUnit(wmsGoods.getUnit()); + detail.setWarehouseName(wmsWarehouse.getWarehouseName()); + detail.setWarehouseArea(wmsWarehouseArea.getAreaName()); + detail.setInventorySid(wmsInventory.getSid()); + detail.setBillSid(wmsInventoryBill.getSid()); + detail.setCurrentCount(wmsInventory.getCount().toString());// + wmsInventoryBillDetailService.save(detail); + } + return rb.success(); + } + + public ResultBean saveOrUpdate(WmsInventoryBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsInventoryBill wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsInventoryBill wmsWarehouseRack = new WmsInventoryBill(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBillVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBill wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + + public ResultBean updateIsEnable(String sid, String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBill wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + @Transactional + public ResultBean inStorage(WmsInventoryBillInDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsInventoryBill wmsInventoryBill = new WmsInventoryBill(); + String orgPath = dto.getOrgPath(); + BeanUtil.copyProperties(dto, wmsInventoryBill, "sid"); + baseMapper.insert(wmsInventoryBill); + sid = wmsInventoryBill.getSid(); + List wmsInventoryBillDetailDtos = dto.getWmsInventoryBillDetailDtos(); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + if (!wmsInventoryBillDetailDtos.isEmpty()) { + wmsInventoryBillDetailService.saveOrUpdateIn(wmsInventoryBillDetailDtos, sid); + } + } else { + WmsInventoryBill wmsInventoryBill = fetchBySid(sid); + if (wmsInventoryBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsInventoryBill); + baseMapper.updateById(wmsInventoryBill); + List wmsInventoryBillDetailDtos = dto.getWmsInventoryBillDetailDtos(); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + if (!wmsInventoryBillDetailDtos.isEmpty()) { + wmsInventoryBillDetailService.saveOrUpdateIn(wmsInventoryBillDetailDtos, sid); + } + } + return rb.success().setData(sid); + } + + @Transactional + public ResultBean outStorage(WmsInventoryBillOutDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsInventoryBill wmsInventoryBill = new WmsInventoryBill(); + BeanUtil.copyProperties(dto, wmsInventoryBill, "sid"); + sid = wmsInventoryBill.getSid(); + List wmsInventoryBillDetailDtos = dto.getWmsInventoryBillDetailDtos(); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + if (!wmsInventoryBillDetailDtos.isEmpty()) { + wmsInventoryBillDetailService.saveOrUpdateOut(wmsInventoryBillDetailDtos, sid); + } + baseMapper.insert(wmsInventoryBill); + } else { + WmsInventoryBill wmsInventoryBill = fetchBySid(sid); + if (wmsInventoryBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsInventoryBill); + List wmsInventoryBillDetailDtos = dto.getWmsInventoryBillDetailDtos(); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + if (!wmsInventoryBillDetailDtos.isEmpty()) { + wmsInventoryBillDetailService.saveOrUpdateOut(wmsInventoryBillDetailDtos, sid); + } + baseMapper.updateById(wmsInventoryBill); + } + return rb.success().setData(sid); + } + + + public ResultBean inDetails(InStorageDetailsQuery inStorageDetailsQuery) { + ResultBean rb = ResultBean.fireFail(); + InStorageDetailsVo inStorageDetailsVo = baseMapper.inDetails(inStorageDetailsQuery.getSid()); + if (inStorageDetailsVo != null) { + List wmsInventoryBillDetailDtos = wmsInventoryBillDetailService.selectByBillSid(inStorageDetailsQuery.getSid()); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + inStorageDetailsVo.setWmsInventoryBillDetailDtos(wmsInventoryBillDetailDtos); + } else { + return rb.setData(new InStorageDetailsVo()).setMsg("该单据不存在"); + } + return rb.success().setData(inStorageDetailsVo); + } + + public ResultBean outDetails(OutStorageDetailsQuery outStorageDetailsQuery) { + ResultBean rb = ResultBean.fireFail(); + OutStorageDetailsVo outStorageDetailsVo = baseMapper.outDetails(outStorageDetailsQuery.getSid()); + if (outStorageDetailsVo != null) { + List wmsInventoryBillDetailDtos = wmsInventoryBillDetailService.selectByBillSidOut(outStorageDetailsQuery.getSid()); + wmsInventoryBillDetailDtos.removeAll(Collections.singleton(null)); + outStorageDetailsVo.setWmsInventoryBillDetailDtos(wmsInventoryBillDetailDtos); + } else { + return rb.setMsg("该单据不存在"); + } + return rb.success().setData(outStorageDetailsVo); + } + + public List listExcel(WmsInventoryBillQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + if (query != null) { + //单据编号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wib.billNo", query.getBillNo()); + } + //制单人 + if (StringUtils.isNotBlank(query.getCreateByName())) { + qw.like("wib.createByName", query.getBillNo()); + } + //库管操作人 + if (StringUtils.isNotBlank(query.getWarehouseManager())) { + qw.like("wib.warehouseManager", query.getWarehouseManager()); + } + //单据开始时间-单据结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateDateStart()), "date_format (wib.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateDateStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateDateEnd()), "date_format (wib.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateDateEnd() + "','%Y-%m-%d')" + ); + if (StringUtils.isNotBlank(query.getCreateBySid())) { + qw.eq("wib.createBySid", query.getCreateBySid()); + } + } + List list = baseMapper.listExcel(qw); + list.removeAll(Collections.singleton(null)); + return list; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillVo.java new file mode 100644 index 0000000000..86e39b1f33 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybill/WmsInventoryBillVo.java @@ -0,0 +1,69 @@ +package com.yxt.wms.biz.inventory.wmsinventorybill; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryBillVo implements Vo { + /*private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String isDelete; + private String state;//0正常,1作废;申请-审批中-完成-作废 + private String sourceBillSid;//来源单sid + private String billNo;//单据编号 + private String billType;//单据类型(入库、出库) + private String createDate;//单据日期 + private String createBySid;//制单人 + private String createByName;//制单人姓名 + private String busTypeKey;//业务类型key(采购入库、维修出入库、销售出入库等) + private String busTypeValue;//业务类型value(采购入库、维修出入库、销售出入库等) + private String warehouseManagerSid;//库管操作人sid + private String warehouseManager;//库管操作人 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String outTime;//实际出库时间 + private String useOrgSid;//使用组织sid + private String createOrgSid;//创建组织sid*/ + + private String sid; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType;//(入库、出库) + @ApiModelProperty("单据日期") + private String createDate; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value") + private String busTypeValue;//(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("客户/供应商名称") + private String billObjName; + @ApiModelProperty("库管操作人sid") + private String warehouseManagerSid; + @ApiModelProperty("库管操作人") + private String warehouseManager; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("实际出库时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private String outTime; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetail.java new file mode 100644 index 0000000000..7e43b28911 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetail.java @@ -0,0 +1,91 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wangpengfei + * @date 2024/2/28 8:38 + */ +@Data +public class WmsInventoryBillDetail extends BaseEntity { + /* private String billSid;//单据sid + private String inventorySid;//商品库存sid + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品编码(图号) + private String specification;//规格 + private String goodsModel;//型号 + private String currentCount;//出入库后的库存量 + private String unit;//计量单位 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String cost;//单位成本(进货价) + private String count;//数量(出库为负) + private String taxAmount;//税额(出库为负) + private String taxPrice;//含税价(出库为负) + private String amount;//金额(出库为负) + private String price1;//销售价1 + private String price2;//销售价2 + private String subjectSid;//科目sid(出库时) + private String subject;//科目(出库时) + private String operTime;//操作时间 + private String operUserSid;//操作人*/ + private String billSid;//单据sid + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("出入库后的库存量") + private String currentCount; + @ApiModelProperty("计量单位") + private String unit; + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + @ApiModelProperty("库区sid") + private String warehouseAreaSid; + @ApiModelProperty("库区名称") + private String warehouseArea; + @ApiModelProperty("货架sid") + private String warehouseRackSid; + @ApiModelProperty("货架名称") + private String warehouseRackName; + @ApiModelProperty("单位成本(进货价)") + private BigDecimal cost; + @ApiModelProperty("数量(出库为负)") + private BigDecimal count; + @ApiModelProperty("税额(出库为负)") + private BigDecimal taxAmount; + @ApiModelProperty("含税价(出库为负)") + private BigDecimal taxPrice; + @ApiModelProperty("金额(出库为负)") + private BigDecimal amount; + @ApiModelProperty("销售价1") + private BigDecimal price1; + @ApiModelProperty("销售价2") + private BigDecimal price2; + @ApiModelProperty("科目sid(出库时)") + private String subjectSid; + @ApiModelProperty("科目(出库时)") + private String subject; + @ApiModelProperty("操作时间") + private String operTime; + @ApiModelProperty("操作人") + private String operUserSid; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailDto.java new file mode 100644 index 0000000000..735379c6a6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailDto.java @@ -0,0 +1,51 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.dto.Dto; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryDto; +import com.yxt.wms.biz.inventory.wmsinventorybill.WmsInventoryBillDto; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:38 + */ +@Data +public class WmsInventoryBillDetailDto implements Dto { + private String id; + private String sid; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String remarks; + private String isEnable; + private Integer state; + private String billSid;//单据sid + private String inventorySid;//商品库存sid + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品编码(图号) + private String specification;//规格 + private String goodsModel;//型号 + private String currentCount;//出入库后的库存量 + private String unit;//计量单位 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String cost;//单位成本(进货价) + private String count;//数量(出库为负) + private String taxAmount;//税额(出库为负) + private String taxPrice;//含税价(出库为负) + private String amount;//金额(出库为负) + private String price1;//销售价1 + private String price2;//销售价2 + private String subjectSid;//科目sid(出库时) + private String subject;//科目(出库时) + private String operTime;//操作时间 + private String operUserSid;//操作人 + private WmsInventoryDto wmsInventoryDtos; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailInDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailInDto.java new file mode 100644 index 0000000000..730eedc372 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailInDto.java @@ -0,0 +1,52 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/14 + **/ +@Data +public class WmsInventoryBillDetailInDto { + + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("出入库后的库存量") + private String currentCount; + @ApiModelProperty("计量单位") + private String unit; + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + @ApiModelProperty("库区sid") + private String warehouseAreaSid; + @ApiModelProperty("库区名称") + private String warehouseArea; + private String warehouseRackSid;//货架sid + private String warehouseRackName;//货架名称 + private String cost;//单位成本(进货价) + private String count;//数量(出库为负) + private String taxAmount;//税额(出库为负) + private String taxPrice;//含税价(出库为负) + private String amount;//金额(出库为负) + private String price1;//销售价1 + private String price2;//销售价2 + private String subjectSid;//科目sid(出库时) + private String subject;//科目(出库时) + private String operTime;//操作时间 + private String operUserSid;//操作人 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.java new file mode 100644 index 0000000000..0182b86b32 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.java @@ -0,0 +1,28 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Mapper +public interface WmsInventoryBillDetailMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + WmsInventoryBillDetailVo initialization (@Param("sid") String sid); + + int deleteByBillSid(String billSid); + + String selectNum(String goodsId); + + List selectByBillSid(String sid); + + List selectByBillSidOut(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.xml new file mode 100644 index 0000000000..ac50d47d36 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + DELETE + FROM wms_inventory_bill_detail + where billSid = #{billSid} + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailOutDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailOutDto.java new file mode 100644 index 0000000000..e75ee0f62d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailOutDto.java @@ -0,0 +1,64 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/14 + **/ +@Data +public class WmsInventoryBillDetailOutDto { + + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("出入库后的库存量") + private String currentCount; + @ApiModelProperty("计量单位") + private String unit; + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + @ApiModelProperty("库区sid") + private String warehouseAreaSid; + @ApiModelProperty("库区名称") + private String warehouseArea; + @ApiModelProperty("货架sid") + private String warehouseRackSid; + @ApiModelProperty("货架名称") + private String warehouseRackName; + @ApiModelProperty("单位成本(进货价)") + private String cost; + @ApiModelProperty("数量(出库为负)") + private String count; + @ApiModelProperty("税额(出库为负)") + private String taxAmount; + @ApiModelProperty("含税价(出库为负)") + private String taxPrice; + @ApiModelProperty("金额(出库为负)") + private String amount; + @ApiModelProperty("销售价1") + private String price1; + @ApiModelProperty("销售价2") + private String price2; + @ApiModelProperty("科目sid(出库时)") + private String subjectSid; + @ApiModelProperty("科目(出库时)") + private String subject; + @ApiModelProperty("操作时间") + private String operTime; + @ApiModelProperty("操作人") + private String operUserSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailQuery.java new file mode 100644 index 0000000000..ff6fe69f0d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailQuery.java @@ -0,0 +1,13 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryBillDetailQuery implements Query { + private String name; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailService.java new file mode 100644 index 0000000000..944a364e28 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailService.java @@ -0,0 +1,186 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryDto; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.wms.utils.Rule; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author wangpengfei + * @date 2024/2/26 13:40 + */ +@Service +public class WmsInventoryBillDetailService extends MybatisBaseService { + @Autowired + WmsInventoryBillDetailService wmsInventoryBillService; + @Resource + BaseGoodsSkuFeign baseGoodsSkuFeign; + @Autowired + private WmsInventoryService wmsInventoryService; + + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBillDetailQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getName())) { + qw.like("rackName", query.getName()); + } + + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + List records = pagging.getRecords(); + return rb.success().setData(p); + } +// public ResultBean InOrOutStorage(WmsInventoryBillDetailDto dto) { +// ResultBean rb = ResultBean.fireFail(); +// WmsInventoryBillDetail wmsInventoryBill=new WmsInventoryBillDetail(); +// BeanUtil.copyProperties(dto,wmsInventoryBill,"ids","id"); +// baseMapper.insert(wmsInventoryBill); +// for (WmsInventoryBillDetailDto wmsInventoryBillDto : dto.getWmsInventoryBillDtoList()) { +//// WmsInventoryBill wmsInventoryBill1=new +//// wmsInventoryBillService.save(); +// } +// return rb.success(); +// } + + public ResultBean saveOrUpdate(WmsInventoryBillDetailDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = ""; + if (StringUtils.isNotBlank(dto.getSid())) { + sid = dto.getSid(); + WmsInventoryBillDetail wmsWarehouseRack = fetchBySid(dto.getSid()); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + baseMapper.updateById(wmsWarehouseRack); + } else { + WmsInventoryBillDetail wmsWarehouseRack = new WmsInventoryBillDetail(); + sid = wmsWarehouseRack.getSid(); + BeanUtil.copyProperties(dto, wmsWarehouseRack, "id", "sid"); + wmsWarehouseRack.setCreateTime(new DateTime()); + baseMapper.insert(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public ResultBean initialization(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBillDetailVo vo = baseMapper.initialization(sid); + return rb.success().setData(vo); + } + + + public ResultBean delete(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBillDetail wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + baseMapper.deleteById(wmsWarehouseRack.getId()); + } + return rb.success(); + } + + public ResultBean updateIsEnable(String sid, String isEnable) { + ResultBean rb = ResultBean.fireFail(); + WmsInventoryBillDetail wmsWarehouseRack = fetchBySid(sid); + if (null != wmsWarehouseRack) { + wmsWarehouseRack.setIsEnable(Integer.parseInt(isEnable)); + baseMapper.updateById(wmsWarehouseRack); + } + return rb.success().setMsg("成功"); + } + + public void saveOrUpdateIn(List wmsInventoryBillDetailDtos, String billSid) { + baseMapper.deleteByBillSid(billSid); + wmsInventoryBillDetailDtos.forEach(v -> { + //入库单的明细 + WmsInventoryBillDetail wmsInventoryBillDetail = new WmsInventoryBillDetail(); + //添加库存商品-台账 + String goodsId = getGoodsId(v.getGoodsSkuSid()); + ResultBean resultBean = baseGoodsSkuFeign.getDetails(v.getGoodsSkuSid()); + if (resultBean.getSuccess()) { + BaseGoodsSkuDetailsVo baseGoodsSkuDetailsVo = resultBean.getData(); + //注:入库操作时,需要根据商品oodsSkusid对应的商品类别取是否一品一码, + // 若为是,则一物生成一条库存,若为否,则每个goodsskusid生成一条库存。 + if (baseGoodsSkuDetailsVo.getIsGoodsID() == 0) { + WmsInventoryDto wmsInventoryDto = new WmsInventoryDto(); + wmsInventoryDto.setBillDetailSid(wmsInventoryBillDetail.getSid()); + wmsInventoryDto.setBillSid(billSid); + wmsInventoryDto.setGoodsID(goodsId); + wmsInventoryDto.setGoodsSkuSid(v.getGoodsSkuSid()); + wmsInventoryDto.setGoodSpuSid(v.getGoodSpuSid()); + wmsInventoryService.saveOrUpdate(wmsInventoryDto); + + } else { + + + } + } + + BeanUtil.copyProperties(v, wmsInventoryBillDetail); + wmsInventoryBillDetail.setBillSid(billSid); + baseMapper.insert(wmsInventoryBillDetail); + + }); + + } + + /** + * 商品ID《唯一编码,入库时生成,生成规则为商品编码+YYodd+4位流水》 + * + * @param goodsSkuSid + * @return + */ + private String getGoodsId(String goodsSkuSid) { + String goodsId = ""; + ResultBean resultBean = baseGoodsSkuFeign.getDetails(goodsSkuSid); + if (resultBean.getSuccess()) { + BaseGoodsSkuDetailsVo baseGoodsSkuDetailsVo = resultBean.getData(); + goodsId = baseGoodsSkuDetailsVo.getGoodsCode(); + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + goodsId = goodsId + date; + String i = baseMapper.selectNum(goodsId); + if (StringUtils.isNotBlank(i)) { + goodsId = Rule.getBillNo(goodsId, Integer.valueOf(i).intValue()); + } else { + goodsId = Rule.getBillNo(goodsId, 0); + } + } + return goodsId; + } + + public void saveOrUpdateOut(List wmsInventoryBillDetailDtos, String billSid) { + baseMapper.deleteByBillSid(billSid); + wmsInventoryBillDetailDtos.forEach(v -> { + WmsInventoryBillDetail wmsInventoryBillDetail = new WmsInventoryBillDetail(); + BeanUtil.copyProperties(v, wmsInventoryBillDetail); + wmsInventoryBillDetail.setBillSid(billSid); + baseMapper.insert(wmsInventoryBillDetail); + }); + + } + + public List selectByBillSid(String sid) { + return baseMapper.selectByBillSid(sid); + } + + public List selectByBillSidOut(String sid) { + return baseMapper.selectByBillSidOut(sid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailVo.java new file mode 100644 index 0000000000..b6572cf789 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorybilldetail/WmsInventoryBillDetailVo.java @@ -0,0 +1,50 @@ +package com.yxt.wms.biz.inventory.wmsinventorybilldetail; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +import java.util.Date; + +/** + * @author wangpengfei + * @date 2024/2/26 13:37 + */ +@Data +public class WmsInventoryBillDetailVo implements Vo { + private String id; + private String sid; + private String lockVersion; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date modifyTime; + private String remarks; + private String isEnable; + private String isDelete; + private String state; + private String billSid;//单据sid + private String inventorySid;//商品库存sid + private String goodsSid;//商品sid + private String goodsName;//商品名称 + private String goodsCode;//商品编码(图号) + private String specification;//规格 + private String goodsModel;//型号 + private String currentCount;//出入库后的库存量 + private String unit;//计量单位 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseArea;//货位 + private String cost;//单位成本(进货价) + private String count;//数量(出库为负) + private String taxAmount;//税额(出库为负) + private String taxPrice;//含税价(出库为负) + private String amount;//金额(出库为负) + private String price1;//销售价1 + private String price2;//销售价2 + private String subjectSid;//科目sid(出库时) + private String subject;//科目(出库时) + private String operTime;//操作时间 + private String operUserSid;//操作人 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbill.java new file mode 100644 index 0000000000..3c80ebab22 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbill.java @@ -0,0 +1,76 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbill.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbill.WmsInventoryCheckbill
    + * Description: 库存盘点.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:01
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点", description = "库存盘点") +@TableName("wms_inventory_checkbill") +public class WmsInventoryCheckbill extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("单据编号") + private String billNo; // 单据编号 + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("盘点类型") + private String checkType; // 盘点类型 + @ApiModelProperty("盘点状态(盘点中1,盘点完成2)") + private Integer checkState; // 盘点状态(盘点中1,盘点完成2) + @ApiModelProperty("盘盈数量") + private BigDecimal profitCount; // 盘盈数量 + @ApiModelProperty("盘盈金额") + private BigDecimal profitAmount; // 盘盈金额 + @ApiModelProperty("盘亏数量") + private BigDecimal lossCount; // 盘亏数量 + @ApiModelProperty("盈亏金额") + private BigDecimal lossAmount; // 盈亏金额 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDetailsVo.java new file mode 100644 index 0000000000..a81ed25cf5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDetailsVo.java @@ -0,0 +1,85 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + + +import com.yxt.common.core.vo.Vo; + +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDetailsVo; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillVo.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbill.WmsInventoryCheckbillVo
    + * Description: 库存盘点 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点 视图数据详情", description = "库存盘点 视图数据详情") +public class WmsInventoryCheckbillDetailsVo implements Vo { + + private String sid; + + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("盘点类型") + private String checkType; + @ApiModelProperty("盘点状态(盘点中1,盘点完成2)") + private Integer checkState; + @ApiModelProperty("盘盈数量") + private BigDecimal profitCount; + @ApiModelProperty("盘盈金额") + private BigDecimal profitAmount; + @ApiModelProperty("盘亏数量") + private BigDecimal lossCount; + @ApiModelProperty("盘亏金额") + private BigDecimal lossAmount; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("盘库明细") + private List wmsInventoryCheckbillDetailList; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDto.java new file mode 100644 index 0000000000..907e19d9ac --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillDto.java @@ -0,0 +1,84 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + + +import com.yxt.common.core.dto.Dto; + +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDto; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDto.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbill.WmsInventoryCheckbillDto
    + * Description: 库存盘点 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:01
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点 数据传输对象", description = "库存盘点 数据传输对象") +public class WmsInventoryCheckbillDto implements Dto { + + private String sid; + + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("盘点类型") + private String checkType; + @ApiModelProperty("盘点状态(盘点中1,盘点完成2)") + private Integer checkState; + @ApiModelProperty("盘盈数量") + private BigDecimal profitCount; + @ApiModelProperty("盘盈金额") + private BigDecimal profitAmount; + @ApiModelProperty("盘亏数量") + private BigDecimal lossCount; + @ApiModelProperty("盘亏金额") + private BigDecimal lossAmount; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("盘库明细") + private List wmsInventoryCheckbillDetailList; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java new file mode 100644 index 0000000000..b721bf1c43 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.java @@ -0,0 +1,60 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillMapper.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbill.WmsInventoryCheckbillMapper
    + * Description: 库存盘点.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventoryCheckbillMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_checkbill") + List selectListVo(); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml new file mode 100644 index 0000000000..f0ea6ba867 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillQuery.java new file mode 100644 index 0000000000..bd46dc8226 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillQuery.java @@ -0,0 +1,60 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillQuery.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbill.WmsInventoryCheckbillQuery
    + * Description: 库存盘点 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:01
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点 查询条件", description = "库存盘点 查询条件") +public class WmsInventoryCheckbillQuery implements Query { + + @ApiModelProperty("创建开始日期") + private String createStartTime; + @ApiModelProperty("创建结束日期") + private String createEndTime; + @ApiModelProperty("其他查询条件") + private String otherQuery; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java new file mode 100644 index 0000000000..52dbab7ee6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillService.java @@ -0,0 +1,142 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDetailsVo; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDto; +import com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailService; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillService.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbill.WmsInventoryCheckbillService
    + * Description: 库存盘点 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventoryCheckbillService extends MybatisBaseService { + + @Autowired + private WmsInventoryCheckbillDetailService wmsInventoryCheckbillDetailService; + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventoryCheckbillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getOtherQuery())){ + qw.and(wrapper -> wrapper.like("pb.billNo", query.getOtherQuery())); + } + String createStartTime = query.getCreateStartTime(); + String createEndTime = query.getCreateEndTime(); + qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (pb.createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')"). + apply(StringUtils.isNotEmpty(createEndTime), "date_format (pb.createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')" + ); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + for (WmsInventoryCheckbillVo record : pagging.getRecords()) { + Integer checkState = record.getCheckState(); + if (checkState == 1){ + record.setCheckStateName("盘点中"); + }else if (checkState == 2){ + record.setCheckStateName("盘点完成"); + } + } + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventoryCheckbillDto dto){ + String dtoSid = dto.getSid(); + List wmsInventoryCheckbillDetailList = dto.getWmsInventoryCheckbillDetailList(); + if (StringUtils.isBlank(dtoSid)) { + String sid = this.insertByDto(dto); + for (WmsInventoryCheckbillDetailDto wmsInventoryCheckbillDetailDto : wmsInventoryCheckbillDetailList) { + wmsInventoryCheckbillDetailDto.setBillSid(sid); + wmsInventoryCheckbillDetailService.saveOrUpdateDto(wmsInventoryCheckbillDetailDto); + } + return; + } + this.updateByDto(dto); + wmsInventoryCheckbillDetailService.delByMainSid(dtoSid); + for (WmsInventoryCheckbillDetailDto wmsInventoryCheckbillDetailDto : wmsInventoryCheckbillDetailList) { + wmsInventoryCheckbillDetailDto.setBillSid(dtoSid); + wmsInventoryCheckbillDetailService.saveOrUpdateDto(wmsInventoryCheckbillDetailDto); + } + } + + public String insertByDto(WmsInventoryCheckbillDto dto){ + WmsInventoryCheckbill entity = new WmsInventoryCheckbill(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + return entity.getSid(); + } + + public void updateByDto(WmsInventoryCheckbillDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventoryCheckbill entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventoryCheckbillDetailsVo fetchDetailsVoBySid(String sid){ + WmsInventoryCheckbill entity = fetchBySid(sid); + WmsInventoryCheckbillDetailsVo vo = new WmsInventoryCheckbillDetailsVo(); + BeanUtil.copyProperties(entity, vo); + List wmsInventoryCheckbillDetailDetailsVos = wmsInventoryCheckbillDetailService.selByMainSid(sid); + vo.setWmsInventoryCheckbillDetailList(wmsInventoryCheckbillDetailDetailsVos); + return vo; + } + + public void inven(WmsInventoryCheckbillDto dto) { + saveOrUpdateDto(dto); + List wmsInventoryCheckbillDetailList = dto.getWmsInventoryCheckbillDetailList(); + for (WmsInventoryCheckbillDetailDto wmsInventoryCheckbillDetailDto : wmsInventoryCheckbillDetailList) { + + } + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillVo.java new file mode 100644 index 0000000000..9abaec0708 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbill/WmsInventoryCheckbillVo.java @@ -0,0 +1,82 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbill; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillVo.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbill.WmsInventoryCheckbillVo
    + * Description: 库存盘点 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:01
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点 视图数据对象", description = "库存盘点 视图数据对象") +public class WmsInventoryCheckbillVo implements Vo { + + private String sid; + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("制单日期") + private String createDate; + @ApiModelProperty("盘点状态(盘点中1,盘点完成2)") + private Integer checkState; + @ApiModelProperty("盘点状态(盘点中1,盘点完成2)") + private String checkStateName; + @ApiModelProperty("完成时间") + private String completeDate; + @ApiModelProperty("盘盈数量") + private BigDecimal profitCount; + @ApiModelProperty("盘盈金额") + private BigDecimal profitAmount; + @ApiModelProperty("盘亏数量") + private BigDecimal lossCount; + @ApiModelProperty("盈亏金额") + private BigDecimal lossAmount; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("门店") + private String createOrgName; + @ApiModelProperty("id") + private String id; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetail.java new file mode 100644 index 0000000000..16855d8d01 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetail.java @@ -0,0 +1,76 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetail.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetail
    + * Description: 库存盘点-明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点-明细", description = "库存盘点-明细") +@TableName("wms_inventory_checkbill_detail") +public class WmsInventoryCheckbillDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点单sid") + private String billSid; // 盘点单sid + @ApiModelProperty("商品库存sid") + private String inventorySid; // 商品库存sid + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库") + private String warehouseName; // 仓库 + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; // 含税价 + @ApiModelProperty("账面数量") + private BigDecimal bookCount; // 账面数量 + @ApiModelProperty("实盘数量") + private BigDecimal realCount; // 实盘数量 + @ApiModelProperty("现场照片(多张中间用英文逗号分隔)") + private String picUrl; // 现场照片(多张中间用英文逗号分隔) + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDetailsVo.java new file mode 100644 index 0000000000..2ec6ded503 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDetailsVo.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailVo.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailVo
    + * Description: 库存盘点-明细 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点-明细 视图数据详情", description = "库存盘点-明细 视图数据详情") +public class WmsInventoryCheckbillDetailDetailsVo implements Vo { + + private String sid; + + /* + * 数据库字段 + * */ + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("盘点状态(0正常、2盘亏、1盘盈)") + private String state; + @ApiModelProperty("盘点单sid") + private String billSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; + @ApiModelProperty("账面数量") + private BigDecimal bookCount; + @ApiModelProperty("实盘数量") + private BigDecimal realCount; + @ApiModelProperty("现场照片") + private List picUrls = new ArrayList<>(); + + /* + * 页面展示字段 + * */ + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("零件号") + private String goodsSkuCode; + @ApiModelProperty("车型") + private String carModel; + @ApiModelProperty("商品单位") + private String unit; + + /* + * 盘点接口需要字段 + * */ + @ApiModelProperty("盈亏数") + private BigDecimal proAndLossCount; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDto.java new file mode 100644 index 0000000000..254457b5a1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailDto.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailDto.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailDto
    + * Description: 库存盘点-明细 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点-明细 数据传输对象", description = "库存盘点-明细 数据传输对象") +public class WmsInventoryCheckbillDetailDto implements Dto { + + private String sid; + + /* + * 数据库字段 + * */ + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("盘点状态(0正常、2盘亏、1盘盈)") + private String state; + @ApiModelProperty("盘点单sid") + private String billSid; + @ApiModelProperty("商品库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("含税价") + private BigDecimal taxPrice; + @ApiModelProperty("账面数量") + private BigDecimal bookCount; + @ApiModelProperty("实盘数量") + private BigDecimal realCount; + @ApiModelProperty("现场照片") + private List picUrls = new ArrayList<>(); + + /* + * 页面展示字段 + * */ + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("零件号") + private String goodsSkuCode; + @ApiModelProperty("车型") + private String carModel; + @ApiModelProperty("商品单位") + private String unit; + + /* + * 盘点接口需要字段 + * */ + @ApiModelProperty("盈亏数") + private BigDecimal proAndLossCount; +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.java new file mode 100644 index 0000000000..58e698310b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.java @@ -0,0 +1,66 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailMapper.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailMapper
    + * Description: 库存盘点-明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventoryCheckbillDetailMapper extends BaseMapper { + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_checkbill_detail") + List selectListVo(); + + @Delete("delete from wms_inventory_checkbill_detail where billSid = #{dtoSid}") + void delByMainSid(String dtoSid); + + List selByMainSid(String billSid); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.xml new file mode 100644 index 0000000000..c6e96f52ce --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailQuery.java new file mode 100644 index 0000000000..b7bacc84dd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailQuery.java @@ -0,0 +1,54 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailQuery.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailQuery
    + * Description: 库存盘点-明细 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点-明细 查询条件", description = "库存盘点-明细 查询条件") +public class WmsInventoryCheckbillDetailQuery implements Query { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailService.java new file mode 100644 index 0000000000..c981ef26bd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailService.java @@ -0,0 +1,105 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailService.java
    + * Class: com.yxt.wms.biz.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailService
    + * Description: 库存盘点-明细 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventoryCheckbillDetailService extends MybatisBaseService { + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventoryCheckbillDetailQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventoryCheckbillDetailDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventoryCheckbillDetailDto dto){ + WmsInventoryCheckbillDetail entity = new WmsInventoryCheckbillDetail(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventoryCheckbillDetailDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventoryCheckbillDetail entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventoryCheckbillDetailDetailsVo fetchDetailsVoBySid(String sid){ + WmsInventoryCheckbillDetail entity = fetchBySid(sid); + WmsInventoryCheckbillDetailDetailsVo vo = new WmsInventoryCheckbillDetailDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void delByMainSid(String dtoSid) { + baseMapper.delByMainSid(dtoSid); + } + + public List selByMainSid(String billSid) { + return baseMapper.selByMainSid(billSid); + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailVo.java new file mode 100644 index 0000000000..7a0a3cc024 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorycheckbilldetail/WmsInventoryCheckbillDetailVo.java @@ -0,0 +1,54 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorycheckbilldetail; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: yxt-wms(仓储)
    + * File: WmsInventoryCheckbillDetailVo.java
    + * Class: com.yxt.wms.api.wmsinventorycheckbilldetail.WmsInventoryCheckbillDetailVo
    + * Description: 库存盘点-明细 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-03-22 09:25:02
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存盘点-明细 视图数据对象", description = "库存盘点-明细 视图数据对象") +public class WmsInventoryCheckbillDetailVo implements Vo { + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecord.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecord.java new file mode 100644 index 0000000000..e14ac6a75f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecord.java @@ -0,0 +1,102 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecord.java
    + * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecord
    + * Description: 库存出入库记录.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录", description = "库存出入库记录") +@TableName("wms_inventory_record") +public class WmsInventoryRecord extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private BigDecimal currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDetailsVo.java new file mode 100644 index 0000000000..c5cfb952f4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDetailsVo.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordVo.java
    + * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordVo
    + * Description: 库存出入库记录 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录 视图数据详情", description = "库存出入库记录 视图数据详情") +public class WmsInventoryRecordDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private BigDecimal currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java new file mode 100644 index 0000000000..73ec98db71 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordDto.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + + +import com.yxt.common.core.dto.Dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordDto.java
    + * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordDto
    + * Description: 库存出入库记录 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录 数据传输对象", description = "库存出入库记录 数据传输对象") +public class WmsInventoryRecordDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private BigDecimal currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordListVo.java new file mode 100644 index 0000000000..fd563f7dd6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordListVo.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 库存出入库记录 + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsInventoryRecordListVo { + + @ApiModelProperty("来源单编号") + private String billNo; + @ApiModelProperty("单据类型") + private String billType; + @ApiModelProperty("发生时间") + private String createTime; + @ApiModelProperty("业务类型") + private String busTypeValue; + @ApiModelProperty("客户/供应商") + private String billObjName; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("数量") + private String count; + @ApiModelProperty("出入库后的库存量") + private String currentCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.java new file mode 100644 index 0000000000..9ea6fbccb3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.java @@ -0,0 +1,85 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.WmsInAndOutboundVo; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.WmsInventoryCountDetailsVo; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.WmsInventoryCountReportVo; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.WmsInventoryDetailsRecordVo; +import com.yxt.wms.biz.inventory.wmsoldinventory.WmsOldInventoryDetailsListVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordMapper.java
    + * Class: inventroy.biz.wmsinventoryrecord.WmsInventoryRecordMapper
    + * Description: 库存出入库记录.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventoryRecordMapper extends BaseMapper { + + //@Update("update wms_inventory_record set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_record") + List selectListVo(); + + String selInItCountBySettleTime(@Param("settleTime") String settleTime); + + List selInboundAndOutboundCount(@Param(Constants.WRAPPER) QueryWrapper qw); + + IPage inventoryInboundAndOutboundStats(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage inventoryDetailsRecord(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List getWmsInventoryRecordList(String sid); + + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List listExcel(@Param(Constants.WRAPPER) QueryWrapper qw); + + List getDetailsList(String sid); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.xml new file mode 100644 index 0000000000..0e9370f28a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordQuery.java new file mode 100644 index 0000000000..3c775921d0 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordQuery.java @@ -0,0 +1,101 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + + +import com.yxt.common.core.query.Query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordQuery.java
    + * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordQuery
    + * Description: 库存出入库记录 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录 查询条件", description = "库存出入库记录 查询条件") +public class WmsInventoryRecordQuery implements Query { + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private BigDecimal currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java new file mode 100644 index 0000000000..e799d81697 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordService.java @@ -0,0 +1,318 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.report.*; +import com.yxt.wms.biz.inventory.wmsoldinventory.WmsOldInventoryDetailsListVo; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordService.java
    + * Class: inventroy.biz.wmsinventoryrecord.WmsInventoryRecordService
    + * Description: 库存出入库记录 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventoryRecordService extends MybatisBaseService { + private QueryWrapper createQueryWrapper(WmsInventoryRecordQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventoryRecordQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventoryRecordDto dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventoryRecordDto dto) { + WmsInventoryRecord entity = new WmsInventoryRecord(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventoryRecordDto dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventoryRecord entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventoryRecordDetailsVo fetchDetailsVoBySid(String sid) { + WmsInventoryRecord entity = fetchBySid(sid); + WmsInventoryRecordDetailsVo vo = new WmsInventoryRecordDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public WmsInventoryCountReportVo inventoryStats(PagerQuery pq) { + WmsInventoryCountReportVo vo = new WmsInventoryCountReportVo(); + WmsInventoryCountReportQuery query = pq.getParams(); + if (StringUtils.isBlank(query.getStartDate()) || StringUtils.isBlank(query.getEndDate()) || StringUtils.isBlank(query.getSettleTime())) { + return vo; + } + String inItCount = "";//期初数量 + String inboundCount = "";//入库数量 + String outboundCount = "";//出库数量 + String changeCount = "";//变化数量 + String settleCount = "";//结存数量 + if (StringUtils.isNotBlank(query.getSettleTime())) { + inItCount = baseMapper.selInItCountBySettleTime(query.getSettleTime()); + } + QueryWrapper qw = new QueryWrapper<>(); + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "r.createTime >= '" + query.getStartDate() + "'"). + apply(StringUtils.isNotBlank(query.getEndDate()), "r.createTime <= '" + query.getEndDate() + "'" + ); + qw.eq("1", 1); + qw.groupBy("r.billType"); + List reportVo = baseMapper.selInboundAndOutboundCount(qw); + if (!reportVo.isEmpty()) { + for (WmsInAndOutboundVo wmsInAndOutboundVo : reportVo) { + if (StringUtils.isNotBlank(wmsInAndOutboundVo.getBillType())) { + if (wmsInAndOutboundVo.getBillType().equals("1")) { + inboundCount = wmsInAndOutboundVo.getCount(); + } else if (wmsInAndOutboundVo.getBillType().equals("0")) { + outboundCount = wmsInAndOutboundVo.getCount(); + } + } + } + } + changeCount = (new BigDecimal(inboundCount).subtract(new BigDecimal(outboundCount))).toString(); + settleCount = (new BigDecimal(inItCount).add(new BigDecimal(changeCount))).toString(); + vo.setInItAmount(inItCount); + vo.setInboundAmount(inboundCount); + vo.setOutboundAmount(outboundCount); + vo.setChangeCount(changeCount); + vo.setSettleAmount(settleCount); + return vo; + } + + public PagerVo inventoryInboundStats(PagerQuery pq) { + WmsInventoryCountReportQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "r.createTime >= '" + query.getStartDate() + "'"). + apply(StringUtils.isNotBlank(query.getEndDate()), "r.createTime <= '" + query.getEndDate() + "'" + ); + qw.eq("r.billType", "1"); + qw.groupBy("r.busTypeKey"); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.inventoryInboundAndOutboundStats(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public PagerVo inventoryOutboundStats(PagerQuery pq) { + WmsInventoryCountReportQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "r.createTime >= '" + query.getStartDate() + "'"). + apply(StringUtils.isNotBlank(query.getEndDate()), "r.createTime <= '" + query.getEndDate() + "'" + ); + qw.eq("r.billType", "0"); + qw.groupBy("r.busTypeKey"); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.inventoryInboundAndOutboundStats(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public PagerVo inventoryDetailsRecord(PagerQuery pq) { + WmsInventoryDetailsRecordQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + qw.apply(StringUtils.isNotBlank(query.getStartDate()), "r.createTime >= '" + query.getStartDate() + "'"). + apply(StringUtils.isNotBlank(query.getEndDate()), "r.createTime <= '" + query.getEndDate() + "'" + ); + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getBusTypeValue())) { + qw.like("r.busTypeValue", query.getBusTypeValue()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("r.goodsSpuName", query.getGoodsSpuName()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("r.warehouseName", query.getWarehouseName()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("r.goodsSkuCode", query.getGoodsSkuCode()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.inventoryDetailsRecord(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean> getWmsInventoryRecordList(String sid) { + ResultBean> rb = ResultBean.fireFail(); + List list = baseMapper.getWmsInventoryRecordList(sid); + list.removeAll(Collections.singleton(null)); + return rb.success().setData(list); + } + + public PagerVo listPage(PagerQuery pagerQuery) { + WmsInventoryRecordsQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wir.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wir.goodsSpuName", query.getGoodsSpuName()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wir.goodsSkuCode", query.getGoodsSkuCode()); + } + //仓库名称 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wir.warehouseName", query.getWarehouseName()); + } + //库位编号 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wir.warehouseRackCode", query.getWarehouseRackCode()); + } + //客户/供应商名称 + if (StringUtils.isNotBlank(query.getBillObjName())) { + qw.like("wir.billObjName", query.getBillObjName()); + } + //批次号 + if (StringUtils.isNotBlank(query.getBatchNumber())) { + qw.like("wir.batchNumber", query.getBatchNumber()); + } + //来源单据编号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wir.billNo", query.getBillNo()); + } + //单据类型 + if (StringUtils.isNotBlank(query.getBillType())) { + qw.like("wir.billType", query.getBillType()); + } + //业务类型 + if (StringUtils.isNotBlank(query.getBusTypeValue())) { + qw.like("wir.busTypeValue", query.getBusTypeValue()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wir.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(com.yxt.common.base.utils.StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wir.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List listExcel(WmsInventoryRecordsQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wir.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wir.goodsSpuName", query.getGoodsSpuName()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wir.goodsSkuCode", query.getGoodsSkuCode()); + } + //仓库名称 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wir.warehouseName", query.getWarehouseName()); + } + //库位编号 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wir.warehouseRackCode", query.getWarehouseRackCode()); + } + //客户/供应商名称 + if (StringUtils.isNotBlank(query.getBillObjName())) { + qw.like("wir.billObjName", query.getBillObjName()); + } + //批次号 + if (StringUtils.isNotBlank(query.getBatchNumber())) { + qw.like("wir.batchNumber", query.getBatchNumber()); + } + //来源单据编号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wir.billNo", query.getBillNo()); + } + //单据类型 + if (StringUtils.isNotBlank(query.getBillType())) { + qw.like("wir.billType", query.getBillType()); + } + //业务类型 + if (StringUtils.isNotBlank(query.getBusTypeValue())) { + qw.like("wir.busTypeValue", query.getBusTypeValue()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wir.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wir.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + List list = baseMapper.listExcel(qw); + list.removeAll(Collections.singleton(null)); + return list; + } + + public List getDetailsList(String sid) { + return baseMapper.getDetailsList(sid); + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordVo.java new file mode 100644 index 0000000000..4e8111cd15 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordVo.java @@ -0,0 +1,103 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + + +import com.yxt.common.core.vo.Vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * Project: wms(yxt)
    + * File: WmsInventoryRecordVo.java
    + * Class: inventroy.api.wmsinventoryrecord.WmsInventoryRecordVo
    + * Description: 库存出入库记录 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-08 17:27:39
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存出入库记录 视图数据对象", description = "库存出入库记录 视图数据对象") +public class WmsInventoryRecordVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("库存sid") + private String inventorySid; // 库存sid + @ApiModelProperty("商品ID") + private String goodsID; // 商品ID + @ApiModelProperty("来源单sid(业务单sid)") + private String sourceBillSid; // 来源单sid(业务单sid) + @ApiModelProperty("来源单据编号") + private String billNo; // 来源单据编号 + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; // 单据类型(1入库、0出库) + @ApiModelProperty("业务类型key(采购入库、维修出入库、销售出入库等)") + private String busTypeKey; // 业务类型key(采购入库、维修出入库、销售出入库等) + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("客户/供应商sid,出库是为客户,入库时为供应商") + private String billObjSid; // 客户/供应商sid,出库是为客户,入库时为供应商 + @ApiModelProperty("客户/供应商名称") + private String billObjName; // 客户/供应商名称 + @ApiModelProperty("批次号") + private String batchNumber; // 批次号 + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; // 商品基础信息Sid + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; // 商品Skusid + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("出入库后的库存量") + private BigDecimal currentCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private BigDecimal count; // 数量 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位sid") + private String warehouseRackSid; // 库位sid + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsExcelVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsExcelVo.java new file mode 100644 index 0000000000..4b67ca4957 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsExcelVo.java @@ -0,0 +1,66 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsInventoryRecordsExcelVo { + + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ApiModelProperty("商品ID") + @ExportEntityMap(CnName = "商品ID", EnName = "goodsID") + private String goodsID; + @ApiModelProperty("商品名称") + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName; + @ApiModelProperty("商品编码") + @ExportEntityMap(CnName = "商品编码", EnName = "goodsSkuCode") + private String goodsSkuCode; + @ApiModelProperty("规格") + @ExportEntityMap(CnName = "规格", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec; + @ApiModelProperty("单位") + @ExportEntityMap(CnName = "单位", EnName = "unit") + private String unit; + @ApiModelProperty("仓库") + @ExportEntityMap(CnName = "仓库", EnName = "warehouseName") + private String warehouseName; + @ApiModelProperty("库位") + @ExportEntityMap(CnName = "库位", EnName = "warehouseRackCode") + private String warehouseRackCode; + @ApiModelProperty("来源单号") + @ExportEntityMap(CnName = "来源单号", EnName = "billNo") + private String billNo; + + + @ApiModelProperty("单据类型(1入库、0出库)") + @ExportEntityMap(CnName = "单据类型", EnName = "billType") + private String billType; + @ExportEntityMap(CnName = "发生时间", EnName = "createTime") + private String createTime; + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + @ExportEntityMap(CnName = "业务类型", EnName = "busTypeValue") + private String busTypeValue; + @ApiModelProperty("客户/供应商名称") + @ExportEntityMap(CnName = "客户/供应商名称", EnName = "billObjName") + private String billObjName; + @ApiModelProperty("批次号") + @ExportEntityMap(CnName = "批次号", EnName = "batchNumber") + private String batchNumber; + @ApiModelProperty("数量") + @ExportEntityMap(CnName = "数量", EnName = "count") + private String count; + @ApiModelProperty("出入库后的库存量") + @ExportEntityMap(CnName = "出入库后的库存量", EnName = "currentCount") + private String currentCount; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsQuery.java new file mode 100644 index 0000000000..dbe71e0216 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsQuery.java @@ -0,0 +1,39 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsInventoryRecordsQuery implements Query { + + @ApiModelProperty("商品ID") + private String goodsID; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("客户/供应商名称") + private String billObjName; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("来源单据编号") + private String billNo; + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; + @ApiModelProperty("发生开始时间") + private String createTimeStart; + @ApiModelProperty("发生结束时间") + private String createTimeEnd; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsVo.java new file mode 100644 index 0000000000..640b872590 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/WmsInventoryRecordsVo.java @@ -0,0 +1,46 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsInventoryRecordsVo { + + @ApiModelProperty("商品ID") + private String goodsID; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("来源单据编号") + private String billNo; + @ApiModelProperty("单据类型(1入库、0出库)") + private String billType; + private String createTime; + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; + @ApiModelProperty("客户/供应商名称") + private String billObjName; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("出入库后的库存量") + private String currentCount; + @ApiModelProperty("数量") + private String count; + @ApiModelProperty("计量单位") + private String unit; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInAndOutboundVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInAndOutboundVo.java new file mode 100644 index 0000000000..5ed95ed88d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInAndOutboundVo.java @@ -0,0 +1,14 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/9 15:44 + */ +@Data +public class WmsInAndOutboundVo { + private String count; + private String billType; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountDetailsVo.java new file mode 100644 index 0000000000..81630909d1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountDetailsVo.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/8 17:49 + */ +@Data +public class WmsInventoryCountDetailsVo implements Vo { + + private String busTypeValue;//业务类型 + private String amountTax;//金额(含税) + private String amount;//金额 + private String count;//数量 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportQuery.java new file mode 100644 index 0000000000..2c2621ae22 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportQuery.java @@ -0,0 +1,19 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/8 17:48 + */ +@Data +public class WmsInventoryCountReportQuery implements Query { + + private String settleTime; + private String startDate; + private String endDate; + private String useOrgSid; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportVo.java new file mode 100644 index 0000000000..8f48525985 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryCountReportVo.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + + +/** + * @author Fan + * @description + * @date 2024/4/8 17:48 + */ +@Data +public class WmsInventoryCountReportVo implements Vo { + private String inItCount;//期初数量 + private String inItAmountTax;//期初金额(含税) + private String inItAmount;//期初金额 + private String inboundCount;//入库数量 + private String inboundAmountTax;//入库金额(含税) + private String inboundAmount;//入库金额 + private String outboundCount;//出库数量 + private String outboundAmountTax;//出库金额(含税) + private String outboundAmount;//出库金额 + private String changeCount;//变化数量 + private String changeAmountTax;//变化金额(含税) + private String changeAmount;//变化金额 + private String settleCount;//结存数量 + private String settleAmountTax;//结存金额(含税) + private String settleAmount;//结存金额 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordQuery.java new file mode 100644 index 0000000000..26cf4db24a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordQuery.java @@ -0,0 +1,24 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/9 8:56 + */ +@Data +public class WmsInventoryDetailsRecordQuery implements Query { + private String startDate; + private String endDate; + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordVo.java new file mode 100644 index 0000000000..35ed0e3efa --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventoryrecord/report/WmsInventoryDetailsRecordVo.java @@ -0,0 +1,43 @@ +package com.yxt.wms.biz.inventory.wmsinventoryrecord.report; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author Fan + * @description + * @date 2024/4/9 8:56 + */ +@Data +public class WmsInventoryDetailsRecordVo implements Vo { + + + @ApiModelProperty("出入库时间") + private String createTime; // 出入库时间 + @ApiModelProperty("业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等)") + private String busTypeValue; // 业务类型value(采购入库、调拨入库、退货入库、盘盈入库等销售出库、调拨出库、采购退货出库、报损出库、盘亏出库等) + @ApiModelProperty("商品名称") + private String goodsSpuName; // 商品名称 + @ApiModelProperty("出入库后的库存量") + private String currentCount; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; // 商品Sku名称 + @ApiModelProperty("商品编码(图号)") + private String goodsSkuCode; // 商品编码(图号) + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; // 规格型号 + @ApiModelProperty("期初数量") + private String initCount; // 出入库后的库存量 + @ApiModelProperty("计量单位") + private String unit; // 计量单位 + @ApiModelProperty("数量") + private String count; // 数量 + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("库位编号") + private String warehouseRackCode; // 库位编号 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordQuery.java new file mode 100644 index 0000000000..99125b2706 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordQuery.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/1 16:20 + */ +@Data +public class WmsInventorySettleRecordQuery implements Query { + + private String startDate; + private String endDate; + private String useOrgName; + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordVo.java new file mode 100644 index 0000000000..e6a2fff9c7 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettleRecordVo.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + +import com.yxt.common.core.vo.Vo; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/1 16:19 + */ +@Data +public class WmsInventorySettleRecordVo implements Vo { + + private String sid; + private String createByName; + private String createTime; + private String useOrgName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebill.java new file mode 100644 index 0000000000..563b994501 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebill.java @@ -0,0 +1,76 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebill.java
    + * Class: wms.api.wmsinventorysettlebill.WmsInventorySettlebill
    + * Description: 库存结算单.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算单", description = "库存结算单") +@TableName("wms_inventory_settlebill") +public class WmsInventorySettlebill extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("结算单编号") + private String billNo; // 结算单编号 + @ApiModelProperty("制单日期") + private String createDate; // 制单日期 + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("库存结算状态(1进行中 2已完成)") + private Integer settleState; // 库存结算状态(1进行中 2已完成) + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Integer settleType; // 库存结算类型(1月结 2年结) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("开始时间") + private Date settleStartTime; // 开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("结束时间") + private Date settleEndTime; // 结束时间 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDetailsVo.java new file mode 100644 index 0000000000..8801afc9d7 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDetailsVo.java @@ -0,0 +1,81 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillVo.java
    + * Class: wms.api.wmsinventorysettlebill.WmsInventorySettlebillVo
    + * Description: 库存结算单 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算单 视图数据详情", description = "库存结算单 视图数据详情") +public class WmsInventorySettlebillDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("结算单编号") + private String billNo; // 结算单编号 + @ApiModelProperty("制单日期") + private String createDate; // 制单日期 + @ApiModelProperty("制单人sid") + private String createUserSid; // 制单人sid + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("库存结算状态(1进行中 2已完成)") + private Integer settleState; // 库存结算状态(1进行中 2已完成) + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Integer settleType; // 库存结算类型(1月结 2年结) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("开始时间") + private Date settle_startTimeStart; // 开始时间 + private Date settle_startTimeEnd; // 开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("结束时间") + private Date settle_endTimeStart; // 结束时间 + private Date settle_endTimeEnd; // 结束时间 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDto.java new file mode 100644 index 0000000000..6dbe135290 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillDto.java @@ -0,0 +1,74 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + + +import com.yxt.common.core.dto.Dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDto.java
    + * Class: wms.api.wmsinventorysettlebill.WmsInventorySettlebillDto
    + * Description: 库存结算单 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算单 数据传输对象", description = "库存结算单 数据传输对象") +public class WmsInventorySettlebillDto implements Dto { + + private String sid; + @ApiModelProperty("制单日期") + private String createTime; // 制单日期 + @ApiModelProperty("制单人sid") + private String createBySid; // 制单人sid + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("库存结算状态(1进行中 2已完成)") + private String settleState; // 库存结算状态(1进行中 2已完成) + @ApiModelProperty("库存结算类型(1月结 2年结)") + private String settleType; // 库存结算类型(1月结 2年结) + @ApiModelProperty("开始时间") + private String settleStartTime; // 开始时间 + @ApiModelProperty("结束时间") + private String settleEndTime; // 结束时间 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.java new file mode 100644 index 0000000000..f82f21e343 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.java @@ -0,0 +1,71 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillMapper.java
    + * Class: wms.biz.wmsinventorysettlebill.WmsInventorySettlebillMapper
    + * Description: 库存结算单.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventorySettlebillMapper extends BaseMapper { + + //@Update("update wms_inventory_settlebill set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_settlebill") + List selectListVo(); + + List selInventoryForStettleBill(@Param("useOrgSid") String useOrgSid); + + String selLastNum(@Param("inventorySid") String inventorySid); + + IPage carryForwardList(IPage page,@Param(Constants.WRAPPER) QueryWrapper qw); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.xml new file mode 100644 index 0000000000..93c98a5847 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillQuery.java new file mode 100644 index 0000000000..1b716f637e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillQuery.java @@ -0,0 +1,79 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + + +import com.yxt.common.core.query.Query; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillQuery.java
    + * Class: wms.api.wmsinventorysettlebill.WmsInventorySettlebillQuery
    + * Description: 库存结算单 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算单 查询条件", description = "库存结算单 查询条件") +public class WmsInventorySettlebillQuery implements Query { + + @ApiModelProperty("结算单编号") + private String billNo; // 结算单编号 + @ApiModelProperty("制单日期") + private String createDate; // 制单日期 + @ApiModelProperty("制单人sid") + private String createUserSid; // 制单人sid + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("库存结算状态(1进行中 2已完成)") + private Integer settleState; // 库存结算状态(1进行中 2已完成) + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Integer settleType; // 库存结算类型(1月结 2年结) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("开始时间") + private Date settle_startTimeStart; // 开始时间 + private Date settle_startTimeEnd; // 开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("结束时间") + private Date settle_endTimeStart; // 结束时间 + private Date settle_endTimeEnd; // 结束时间 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillService.java new file mode 100644 index 0000000000..7367a53f44 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillService.java @@ -0,0 +1,157 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail.WmsInventorySettlebillDetail; +import com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailService; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillService.java
    + * Class: wms.biz.wmsinventorysettlebill.WmsInventorySettlebillService
    + * Description: 库存结算单 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventorySettlebillService extends MybatisBaseService { + + @Autowired + private WmsInventorySettlebillDetailService wmsInventorySettlebillDetailService; + + private QueryWrapper createQueryWrapper(WmsInventorySettlebillQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventorySettlebillQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventorySettlebillDto dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventorySettlebillDto dto) { + WmsInventorySettlebill entity = new WmsInventorySettlebill(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventorySettlebillDto dto) { + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventorySettlebill entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventorySettlebillDetailsVo fetchDetailsVoBySid(String sid) { + WmsInventorySettlebill entity = fetchBySid(sid); + WmsInventorySettlebillDetailsVo vo = new WmsInventorySettlebillDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void saveSettlebill(WmsInventorySettlebillDto dto) { + WmsInventorySettlebill entity = new WmsInventorySettlebill(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + String mainSid = entity.getSid(); + List wmsInventories = baseMapper.selInventoryForStettleBill(dto.getUseOrgSid()); + if (!wmsInventories.isEmpty()) { + for (WmsInventory w : wmsInventories) { + WmsInventorySettlebillDetail d = new WmsInventorySettlebillDetail(); + BeanUtil.copyProperties(w, d, "id", "sid"); + d.setBillSid(mainSid); + if (StringUtils.isNotBlank(dto.getSettleState())) { + d.setSettleType(Integer.parseInt(dto.getSettleType())); + } + d.setInventorySid(w.getSid()); + //查询上期库存 + String lastNum = baseMapper.selLastNum(w.getSid()); + if (StringUtils.isNotBlank(lastNum)) { + d.setPreBalance(new BigDecimal(lastNum)); + } + if (null != w.getCount()) { + d.setCurrentBalance(w.getCount()); + } + wmsInventorySettlebillDetailService.insert(d); + } + } + } + + public PagerVo carryForwardList(PagerQuery pq) { + WmsInventorySettleRecordQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + if (StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("useOrgSid",query.getUseOrgSid()); + } + qw.apply(com.yxt.common.base.utils.StringUtils.isNotBlank(query.getStartDate()), "date_format (createTime,'%Y-%m-%d') >= date_format('" + query.getStartDate() + "','%Y-%m-%d')"). + apply(com.yxt.common.base.utils.StringUtils.isNotBlank(query.getEndDate()), "date_format (createTime,'%Y-%m-%d') <= date_format('" + query.getEndDate() + "','%Y-%m-%d')" + ); + qw.eq("1","1"); + qw.orderByDesc("createTime"); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.carryForwardList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillVo.java new file mode 100644 index 0000000000..c8b7397f6c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebill/WmsInventorySettlebillVo.java @@ -0,0 +1,81 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebill; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillVo.java
    + * Class: wms.api.wmsinventorysettlebill.WmsInventorySettlebillVo
    + * Description: 库存结算单 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算单 视图数据对象", description = "库存结算单 视图数据对象") +public class WmsInventorySettlebillVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("结算单编号") + private String billNo; // 结算单编号 + @ApiModelProperty("制单日期") + private String createDate; // 制单日期 + @ApiModelProperty("制单人sid") + private String createUserSid; // 制单人sid + @ApiModelProperty("制单人姓名") + private String createByName; // 制单人姓名 + @ApiModelProperty("库存结算状态(1进行中 2已完成)") + private Integer settleState; // 库存结算状态(1进行中 2已完成) + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Integer settleType; // 库存结算类型(1月结 2年结) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("开始时间") + private Date settle_startTimeStart; // 开始时间 + private Date settle_startTimeEnd; // 开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("结束时间") + private Date settle_endTimeStart; // 结束时间 + private Date settle_endTimeEnd; // 结束时间 + @ApiModelProperty("使用组织sid") + private String useOrgSid; // 使用组织sid + @ApiModelProperty("创建组织sid") + private String createOrgSid; // 创建组织sid + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetail.java new file mode 100644 index 0000000000..aa483ab1d9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetail.java @@ -0,0 +1,86 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.yxt.common.core.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetail.java
    + * Class: wms.api.wmsinventorysettlebilldetail.WmsInventorySettlebillDetail
    + * Description: 库存结算明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算明细", description = "库存结算明细") +@TableName("wms_inventory_settlebill_detail") +public class WmsInventorySettlebillDetail extends BaseEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("结算单sid") + private String billSid; // 结算单sid + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Integer settleType; // 库存结算类型(1月结 2年结) + @ApiModelProperty("商品库存sid") + private String inventorySid; // 商品库存sid + private String goodSpuSid;//商品基础信息sid + private String goodsSpuName;//商品名称 + private String goodsSkuSid;//商品Skusid + private String goodsSkuTitle;//商品Sku名称 + private String goodsSkuCode;//商品编码(图号) + private String goodsSkuOwnSpec;//规格型号 + private String warehouseSid;//仓库sid + private String warehouseName;//仓库名称 + private String warehouseAreaSid;//库区sid + private String warehouseArea;//库区名称 + private String warehouseRackSid;//货架sid + private String warehouseRackName;//货架名称 + @ApiModelProperty("上期结存") + private BigDecimal preBalance; // 上期结存 + @ApiModelProperty("本期结存") + private BigDecimal currentBalance; // 本期结存 + @ApiModelProperty("本期入库") + private BigDecimal currentEnter; // 本期入库 + @ApiModelProperty("本期出库") + private BigDecimal currentOut; // 本期出库 + @ApiModelProperty("本期盘点") + private BigDecimal currentCheck; // 本期盘点 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDetailsVo.java new file mode 100644 index 0000000000..7c2ba63bf1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDetailsVo.java @@ -0,0 +1,95 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailVo.java
    + * Class: wms.api.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailVo
    + * Description: 库存结算明细 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算明细 视图数据详情", description = "库存结算明细 视图数据详情") +public class WmsInventorySettlebillDetailDetailsVo implements Vo { + + private String sid; // sid + + @ApiModelProperty("结算单sid") + private String billSid; // 结算单sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Date settleTypeStart; // 库存结算类型(1月结 2年结) + private Date settleTypeEnd; // 库存结算类型(1月结 2年结) + @ApiModelProperty("商品库存sid") + private String inventorySid; // 商品库存sid + @ApiModelProperty("商品sid") + private String goodsSid; // 商品sid + @ApiModelProperty("商品编码") + private String goodsCode; // 商品编码 + @ApiModelProperty("商品名称") + private String goodsName; // 商品名称 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库编码") + private String warehouseCode; // 仓库编码 + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("货位sid") + private String warehouseAreasid; // 货位sid + @ApiModelProperty("货位编码") + private String warehouseAreaCode; // 货位编码 + @ApiModelProperty("货位名称") + private String warehouseAreaName; // 货位名称 + @ApiModelProperty("上期结存") + private BigDecimal preBalance; // 上期结存 + @ApiModelProperty("本期结存") + private BigDecimal currentBalance; // 本期结存 + @ApiModelProperty("本期入库") + private BigDecimal currentEnter; // 本期入库 + @ApiModelProperty("本期出库") + private BigDecimal currentOut; // 本期出库 + @ApiModelProperty("本期盘点") + private BigDecimal currentCheck; // 本期盘点 + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDto.java new file mode 100644 index 0000000000..ad769d031e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailDto.java @@ -0,0 +1,95 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + + +import com.yxt.common.core.dto.Dto; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailDto.java
    + * Class: wms.api.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailDto
    + * Description: 库存结算明细 数据传输对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算明细 数据传输对象", description = "库存结算明细 数据传输对象") +public class WmsInventorySettlebillDetailDto implements Dto { + + private String sid; // sid + + @ApiModelProperty("结算单sid") + private String billSid; // 结算单sid + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @ApiModelProperty("库存结算类型(1月结 2年结)") + private Date settleTypeStart; // 库存结算类型(1月结 2年结) + private Date settleTypeEnd; // 库存结算类型(1月结 2年结) + @ApiModelProperty("商品库存sid") + private String inventorySid; // 商品库存sid + @ApiModelProperty("商品sid") + private String goodsSid; // 商品sid + @ApiModelProperty("商品编码") + private String goodsCode; // 商品编码 + @ApiModelProperty("商品名称") + private String goodsName; // 商品名称 + @ApiModelProperty("仓库sid") + private String warehouseSid; // 仓库sid + @ApiModelProperty("仓库编码") + private String warehouseCode; // 仓库编码 + @ApiModelProperty("仓库名称") + private String warehouseName; // 仓库名称 + @ApiModelProperty("货位sid") + private String warehouseAreasid; // 货位sid + @ApiModelProperty("货位编码") + private String warehouseAreaCode; // 货位编码 + @ApiModelProperty("货位名称") + private String warehouseAreaName; // 货位名称 + @ApiModelProperty("上期结存") + private BigDecimal preBalance; // 上期结存 + @ApiModelProperty("本期结存") + private BigDecimal currentBalance; // 本期结存 + @ApiModelProperty("本期入库") + private BigDecimal currentEnter; // 本期入库 + @ApiModelProperty("本期出库") + private BigDecimal currentOut; // 本期出库 + @ApiModelProperty("本期盘点") + private BigDecimal currentCheck; // 本期盘点 + +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.java new file mode 100644 index 0000000000..a8acabbff4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.java @@ -0,0 +1,70 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailMapper.java
    + * Class: wms.biz.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailMapper
    + * Description: 库存结算明细.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Mapper +public interface WmsInventorySettlebillDetailMapper extends BaseMapper { + + //@Update("update wms_inventory_settlebill_detail set name=#{msg} where id=#{id}") + //IPage voPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + List selectListAllVo(@Param(Constants.WRAPPER) Wrapper qw); + + @Select("select * from wms_inventory_settlebill_detail") + List selectListVo(); + + @Delete("delete from wms_inventory_settlebill_detail where billSid = #{sid}") + void delByMainSid(String sid); + + List listExcel(@Param(Constants.WRAPPER) QueryWrapper qw); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.xml new file mode 100644 index 0000000000..ad01893b3c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailQuery.java new file mode 100644 index 0000000000..4a8f5f6246 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailQuery.java @@ -0,0 +1,67 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + + +import com.yxt.common.core.query.Query; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailQuery.java
    + * Class: wms.api.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailQuery
    + * Description: 库存结算明细 查询条件.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算明细 查询条件", description = "库存结算明细 查询条件") +public class WmsInventorySettlebillDetailQuery implements Query { + + private String goodsSpuName;//商品名称 + private String goodsSkuCode;//商品编码(图号) + private String goodsSkuOwnSpec;//规格型号 + private String warehouseName;//仓库名称 + private String warehouseArea;//库区名称 + private String warehouseRackName;//货架名称 + private String useOrgSid; + private String startDate; + private String endDate; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailService.java new file mode 100644 index 0000000000..8b2ea95924 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailService.java @@ -0,0 +1,130 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.commons.lang3.StringUtils; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.vo.PagerVo; + +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailService.java
    + * Class: wms.biz.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailService
    + * Description: 库存结算明细 业务逻辑.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Service +public class WmsInventorySettlebillDetailService extends MybatisBaseService { + private QueryWrapper createQueryWrapper(WmsInventorySettlebillDetailQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getUseOrgSid())) { + qw.eq("s.useOrgSid", query.getUseOrgSid()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("d.goodsSpuName", query.getGoodsSpuName()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("d.warehouseName", query.getWarehouseName()); + } + if (com.yxt.common.base.utils.StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("d.goodsSkuCode", query.getGoodsSkuCode()); + } + qw.apply(com.yxt.common.base.utils.StringUtils.isNotBlank(query.getStartDate()), "date_format (s.createTime,'%Y-%m-%d') >= date_format('" + query.getStartDate() + "','%Y-%m-%d')"). + apply(com.yxt.common.base.utils.StringUtils.isNotBlank(query.getEndDate()), "date_format (s.createTime,'%Y-%m-%d') <= date_format('" + query.getEndDate() + "','%Y-%m-%d')" + ); + qw.eq("1", "1"); + qw.orderByDesc("s.createTime"); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + WmsInventorySettlebillDetailQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public void saveOrUpdateDto(WmsInventorySettlebillDetailDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + this.insertByDto(dto); + return; + } + this.updateByDto(dto); + } + + public void insertByDto(WmsInventorySettlebillDetailDto dto){ + WmsInventorySettlebillDetail entity = new WmsInventorySettlebillDetail(); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.insert(entity); + } + + public void updateByDto(WmsInventorySettlebillDetailDto dto){ + String dtoSid = dto.getSid(); + if (StringUtils.isBlank(dtoSid)) { + return; + } + WmsInventorySettlebillDetail entity = fetchBySid(dtoSid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + + public WmsInventorySettlebillDetailDetailsVo fetchDetailsVoBySid(String sid){ + WmsInventorySettlebillDetail entity = fetchBySid(sid); + WmsInventorySettlebillDetailDetailsVo vo = new WmsInventorySettlebillDetailDetailsVo(); + BeanUtil.copyProperties(entity, vo); + return vo; + } + + public void delByMainSid(String sid) { + baseMapper.delByMainSid(sid); + } + + public List listExcel(WmsInventorySettlebillDetailQuery query) { + QueryWrapper qw = createQueryWrapper(query); + List list = baseMapper.listExcel(qw); + return list; + } +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailVo.java new file mode 100644 index 0000000000..469c66b5b4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillDetailVo.java @@ -0,0 +1,72 @@ +/********************************************************* + ********************************************************* + ******************** ******************* + ************* ************ + ******* _oo0oo_ ******* + *** o8888888o *** + * 88" . "88 * + * (| -_- |) * + * 0\ = /0 * + * ___/`---'\___ * + * .' \\| |// '. * + * / \\||| : |||// \ * + * / _||||| -:- |||||- \ * + * | | \\\ - /// | | * + * | \_| ''\---/'' |_/ | * + * \ .-\__ '-' ___/-. / * + * ___'. .' /--.--\ `. .'___ * + * ."" '< `.___\_<|>_/___.' >' "". * + * | | : `- \`.;`\ _ /`;.`/ - ` : | | * + * \ \ `_. \_ __\ /__ _/ .-` / / * + * =====`-.____`.___ \_____/___.-`___.-'===== * + * `=---=' * + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * + *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* + *********************************************************/ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + + +import com.yxt.common.core.vo.Vo; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.math.BigDecimal; +import java.util.Date; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Project: yxt-wms(yxt-wms)
    + * File: WmsInventorySettlebillDetailVo.java
    + * Class: wms.api.wmsinventorysettlebilldetail.WmsInventorySettlebillDetailVo
    + * Description: 库存结算明细 视图数据对象.
    + * Copyright: Copyright (c) 2011
    + * Company: https://gitee.com/liuzp315
    + * Makedate: 2024-04-01 14:22:38
    + * + * @author liupopo + * @version 1.0 + * @since 1.0 + */ +@Data +@ApiModel(value = "库存结算明细 视图数据对象", description = "库存结算明细 视图数据对象") +public class WmsInventorySettlebillDetailVo implements Vo { + + private String sid; // sid + private String createTime; //结转日期 + @ApiModelProperty("库存结算类型(1月结 2年结)") + private String settleType; // 库存结算类型(1月结 2年结) + private String goodsSpuName;//商品名称 + private String goodsSkuTitle;//商品Sku名称 + private String goodsSkuCode;//商品编码(图号) + private String goodsSkuOwnSpec;//规格型号 + private String warehouseName;//仓库名称 + private String warehouseArea;//库区名称 + private String warehouseRackName;//货架名称 + @ApiModelProperty("上期结存") + private String preBalance; // 上期结存 + @ApiModelProperty("本期结存") + private String currentBalance; // 本期结存 + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillExportVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillExportVo.java new file mode 100644 index 0000000000..42e1d154f9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinventorysettlebilldetail/WmsInventorySettlebillExportVo.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.wmsinventorysettlebilldetail; + +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author Fan + * @description + * @date 2024/4/1 16:42 + */ +@Data +public class WmsInventorySettlebillExportVo { + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + @ExportEntityMap(CnName = "结转日期", EnName = "createTime") + private String createTime; //结转日期 + @ExportEntityMap(CnName = "库存结算类型", EnName = "settleType") + private String settleType; // 库存结算类型(1月结 2年结) + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName;//商品名称 + @ExportEntityMap(CnName = "商品Sku名称", EnName = "goodsSkuTitle") + private String goodsSkuTitle;//商品Sku名称 + @ExportEntityMap(CnName = "零件号", EnName = "goodsSkuCode") + private String goodsSkuCode;//零件号 + @ExportEntityMap(CnName = "规格型号", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec; //规格型号 + @ExportEntityMap(CnName = "仓库名称", EnName = "warehouseName") + private String warehouseName;//仓库名称 + @ExportEntityMap(CnName = "库区名称", EnName = "warehouseArea") + private String warehouseArea;//库区名称 + @ExportEntityMap(CnName = "货架名称", EnName = "warehouseRackName") + private String warehouseRackName;//货架名称 + @ExportEntityMap(CnName = "上期结存", EnName = "preBalance") + private String preBalance; // 上期结存 + @ExportEntityMap(CnName = "本期结存", EnName = "currentBalance") + private String currentBalance; // 本期结存 +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventory.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventory.java new file mode 100644 index 0000000000..780f8558b0 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventory.java @@ -0,0 +1,58 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventory extends BaseEntity { + + //商品ID + private String goodsID; + + //商品名称 + private String goodsSkuTitle; + + //商品编码 + private String goodsSkuCode; + + //厂家 + private String manufacturerName; + + //规格 + private String goodsSkuOwnSpec; + + //单位 + private String unit; + + //数量 + private String count; + + //已入库数量 + private String inCount; + + //维修工单编号 + private String billNo; + + //客户名称 + private String customerName; + + //车牌号 + private String vehMark; + + //车架号 + private String vinNo; + + //旧件回收说明 + private String shortss; + + //旧件照片 + private String photos; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsListVo.java new file mode 100644 index 0000000000..6ca84672cb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsListVo.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryDetailsListVo { + + //来源单号 + private String billNo; + + //单据类型 + private String billType; + + //发生时间 + private String createTime; + + //业务类型 + private String busTypeValue; + + //数量 + private String count; + + //出入库后的库存 + private String currentCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsVo.java new file mode 100644 index 0000000000..f9c74be695 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDetailsVo.java @@ -0,0 +1,35 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryDetailsVo { + + //车架号 + private String vinNo; + + //商品名称 + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //厂家 + private String manufacturerName; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDto.java new file mode 100644 index 0000000000..6a291b4a0b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryDto.java @@ -0,0 +1,41 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryDto { + private String sid; + //商品基础信息sid + private String goodSpuSid; + //商品名称 + private String goodsSpuName; + //商品Skusid + private String goodsSkuSid; + //商品Sku名称 + private String goodsSkuTitle; + //商品编码(图号) + private String goodsSkuCode; + //规格型号 + private String goodsSkuOwnSpec; + //计量单位 + private String unit; + //未入库数量 + private String notInCount; + //仓库 + private String warehouseSid; + private String warehouseName; + //库位 + private String warehouseRackSid; + private String warehouseRackCode; + //入库数量(现有量) + private String count; + + private String createBySid; + private String orgPath; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryExcelVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryExcelVo.java new file mode 100644 index 0000000000..6ecff78045 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryExcelVo.java @@ -0,0 +1,60 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryExcelVo { + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + + //车架号 + @ExportEntityMap(CnName = "车架号", EnName = "vinNo") + private String vinNo; + + //车牌号 + @ExportEntityMap(CnName = "车牌号", EnName = "vehMark") + private String vehMark; + + //商品ID + @ExportEntityMap(CnName = "商品ID", EnName = "goodsID") + private String goodsID; + + //商品名称 + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName; + + //商品编码 + @ExportEntityMap(CnName = "商品编码", EnName = "goodsSkuCode") + private String goodsSkuCode; + + //厂家 + @ExportEntityMap(CnName = "厂家", EnName = "manufacturerName") + private String manufacturerName; + + //规格 + @ExportEntityMap(CnName = "规格", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec; + + //单位 + @ExportEntityMap(CnName = "单位", EnName = "unit") + private String unit; + + //仓库 + @ExportEntityMap(CnName = "仓库", EnName = "warehouseName") + private String warehouseName; + + //库位 + @ExportEntityMap(CnName = "库位", EnName = "warehouseRackCode") + private String warehouseRackCode; + + //库存数量 + @ExportEntityMap(CnName = "库存数量", EnName = "inventoryCount") + private String inventoryCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryInitVo.java new file mode 100644 index 0000000000..fc43bc4682 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryInitVo.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryInitVo { + + //维修工单编号 + private String sourceBillNo; + //车架号 + private String vinNo; + private String goodSpuSid; + //商品名称 + private String goodsSpuName; + private String goodsSkuSid; + private String goodsSkuTitle; + //商品编码 + private String goodsSkuCode; + //厂家 + private String manufacturerName; + //规格 + private String goodsSkuOwnSpec; + + //单位 + private String unit; + + //未入库数量 + private String notInCount; + + //仓库 + private String warehouseSid; + private String warehouseName; + + //库位 + private String warehouseRackSid; + private String warehouseRackCode; + + //入库数量 + private String count; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.java new file mode 100644 index 0000000000..26f92419b2 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Mapper +public interface WmsOldInventoryMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + WmsOldInventoryInitVo selectInit(String sid); + + IPage oldPageList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List listExcel(@Param(Constants.WRAPPER) QueryWrapper qw); + + WmsOldInventoryDetailsVo getDetailsList(String sid); + + IPage recordList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + List excelRecordList(@Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml new file mode 100644 index 0000000000..765e2b19b4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryMapper.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListQuery.java new file mode 100644 index 0000000000..d0d91b1197 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListQuery.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryPageListQuery implements Query { + + //商品id + private String goodsID; + + //商品名称 + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + //厂家 + private String manufacturerName; + + //车架号 + private String vinNo; + + private String createBySid; + + private String orgPath; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListVo.java new file mode 100644 index 0000000000..390917b32c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryPageListVo.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryPageListVo { + private String sid; + //车架号 + private String vinNo; + + //车牌号 + private String vehMark; + + //商品ID + private String goodsID; + + //商品名称 + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //厂家 + private String manufacturerName; + + //规格 + private String goodsSkuOwnSpec; + + //单位 + private String unit; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + //库存数量 + private String inventoryCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryQuery.java new file mode 100644 index 0000000000..e38c3c958d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryQuery.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryQuery implements Query { + + //商品名称 + private String goodsSpuName; + //商品编码 + private String goodsSkuCode; + //维修工单编号 + private String billNo; + //车牌号 + private String vehMark; + //用户sid + private String createBySid; + //全组织路径sid + private String orgPath; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordList.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordList.java new file mode 100644 index 0000000000..3070cb7c8f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordList.java @@ -0,0 +1,57 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryRecordList { + + //车架号 + private String vinNo; + + //商品ID + private String goodsID; + + //商品名称 + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //厂家 + private String manufacturerName; + + //规格 + private String goodsSkuOwnSpec; + + //单位 + private String unit; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + //来源单号 + private String billNo; + + //单据类型 + private String billType; + + //发生时间 + private String createTime; + + //业务类型 + private String busTypeValue; + + //数量 + private String count; + + //出入库后的库存 + private String currentCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListExcelVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListExcelVo.java new file mode 100644 index 0000000000..a152cbec2c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListExcelVo.java @@ -0,0 +1,76 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.utils.ExportEntityMap; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryRecordListExcelVo { + + @ExportEntityMap(CnName = "序号", EnName = "rankNo") + private Integer rankNo; + + //车架号 + @ExportEntityMap(CnName = "车架号", EnName = "vinNo") + private String vinNo; + + //商品ID + @ExportEntityMap(CnName = "商品ID", EnName = "goodsID") + private String goodsID; + + //商品名称 + @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + private String goodsSpuName; + + //商品编码 + @ExportEntityMap(CnName = "商品编码", EnName = "goodsSkuCode") + private String goodsSkuCode; + + //厂家 + @ExportEntityMap(CnName = "厂家", EnName = "manufacturerName") + private String manufacturerName; + + //规格 + @ExportEntityMap(CnName = "规格", EnName = "goodsSkuOwnSpec") + private String goodsSkuOwnSpec; + + //单位 + @ExportEntityMap(CnName = "单位", EnName = "unit") + private String unit; + + //仓库 + @ExportEntityMap(CnName = "仓库", EnName = "warehouseName") + private String warehouseName; + + //库位 + @ExportEntityMap(CnName = "库位", EnName = "warehouseRackCode") + private String warehouseRackCode; + + //来源单号 + @ExportEntityMap(CnName = "来源单号", EnName = "billNo") + private String billNo; + + //单据类型 + @ExportEntityMap(CnName = "单据类型", EnName = "billType") + private String billType; + + //发生时间 + @ExportEntityMap(CnName = "发生时间", EnName = "createTime") + private String createTime; + + //业务类型 + @ExportEntityMap(CnName = "业务类型", EnName = "busTypeValue") + private String busTypeValue; + + //数量 + @ExportEntityMap(CnName = "数量", EnName = "count") + private String count; + + //出入库后的库存 + @ExportEntityMap(CnName = "出入库后的库存", EnName = "currentCount") + private String currentCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListQuery.java new file mode 100644 index 0000000000..2aeefff362 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryRecordListQuery.java @@ -0,0 +1,49 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryRecordListQuery implements Query { + + //商品ID + private String goodsID; + + //商品名称 + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + //厂家 + private String manufacturerName; + + //车架号 + private String vinNo; + + //来源单号 + private String billNo; + + //单据类型 + private String billType; + + //业务类型 + private String busTypeValue; + + //发生时间开始时间 + private String createTimeStart; + + //发生时间结束时间 + private String createTimeEnd; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java new file mode 100644 index 0000000000..38af103bd6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryService.java @@ -0,0 +1,264 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Service +public class WmsOldInventoryService extends MybatisBaseService { + + @Autowired + private WmsInventoryService wmsInventoryService; + @Autowired + private WmsInventoryRecordService wmsInventoryRecordService; + + public PagerVo listPage(PagerQuery pagerQuery) { + WmsOldInventoryQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("woi.billNo", query.getBillNo()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("woi.goodsSpuName", query.getGoodsSpuName()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("woi.goodsSkuCode", query.getGoodsSkuCode()); + } + //车牌号 + if (StringUtils.isNotBlank(query.getVehMark())) { + qw.like("woi.vehMark", query.getVehMark()); + } + qw.eq("woi.state", 1); + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean getInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsOldInventoryInitVo wmsOldInventoryInitVo = baseMapper.selectInit(sid); + if (wmsOldInventoryInitVo == null) { + return rb.setMsg("该待入库旧件不存在"); + } + return rb.success().setData(wmsOldInventoryInitVo); + } + + public ResultBean saveInventory(WmsOldInventoryDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + WmsOldInventory wmsOldInventory = fetchBySid(sid); + WmsInventory wmsInventory = new WmsInventory(); + BeanUtil.copyProperties(dto, wmsInventory, "sid"); + wmsInventoryService.insert(wmsInventory); + //入库后,修改待入库旧件为已入库 + wmsOldInventory.setState(0); + baseMapper.updateById(wmsOldInventory); + return rb.success(); + } + + public PagerVo oldPageList(PagerQuery pagerQuery) { + WmsOldInventoryPageListQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wi.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wi.goodsSpuName", query.getGoodsSpuName()); + } + //仓库 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wi.warehouseName", query.getWarehouseName()); + } + //库位 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wi.warehouseRackCode", query.getWarehouseRackCode()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wi.goodsSkuCode", query.getGoodsSkuCode()); + } + //ToDo:需测试时添加,待定 + //厂家 + //车架号 + //车牌号 + + qw.eq("wi.warehouseName", "旧件仓库"); + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.oldPageList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + List sidss = Arrays.asList(sids); + for (int i = 0; i < sidss.size(); i++) { + WmsInventory wmsInventory = wmsInventoryService.fetchBySid(sidss.get(i)); + if (wmsInventory.getCount().compareTo(BigDecimal.ZERO) != 0) { + wmsInventoryService.deleteBySid(sidss.get(i)); + } + } + return rb.success().setMsg("删除成功"); + } + + public List listExcel(WmsOldInventoryPageListQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wi.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wi.goodsSpuName", query.getGoodsSpuName()); + } + //仓库 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wi.warehouseName", query.getWarehouseName()); + } + //库位 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wi.warehouseRackCode", query.getWarehouseRackCode()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wi.goodsSkuCode", query.getGoodsSkuCode()); + } + //ToDo:需测试时添加,待定 + //厂家 + //车架号 + //车牌号 + + qw.eq("wi.warehouseName", "旧件仓库"); + List list = baseMapper.listExcel(qw); + list.removeAll(Collections.singleton(null)); + return list; + } + + public ResultBean getDetailsList(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsOldInventoryDetailsVo wmsOldInventoryDetailsVo = baseMapper.getDetailsList(sid); + if (wmsOldInventoryDetailsVo != null) { + List list = wmsInventoryRecordService.getDetailsList(sid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + wmsOldInventoryDetailsVo.setList(list); + } + } + return rb.success().setData(wmsOldInventoryDetailsVo); + } + + public PagerVo recordList(PagerQuery pagerQuery) { + WmsOldInventoryRecordListQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wir.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wir.goodsSpuName", query.getGoodsSpuName()); + } + //仓库 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wir.warehouseName", query.getWarehouseName()); + } + //库位 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wir.warehouseRackCode", query.getWarehouseRackCode()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wir.goodsSkuCode", query.getGoodsSkuCode()); + } + //ToDo:需测试时添加,待定 + //厂家 + //车架号 + //来源单号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wir.billNo", query.getBillNo()); + } + //单据类型 + if (StringUtils.isNotBlank(query.getBillType())) { + qw.like("wir.billType", query.getBillType()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wir.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wir.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + qw.eq("wir.warehouseName", "旧件仓库"); + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.recordList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public List excelRecordList(WmsOldInventoryRecordListQuery query) { + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsID())) { + qw.like("wir.goodsID", query.getGoodsID()); + } + //商品名称 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wir.goodsSpuName", query.getGoodsSpuName()); + } + //仓库 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wir.warehouseName", query.getWarehouseName()); + } + //库位 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wir.warehouseRackCode", query.getWarehouseRackCode()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wir.goodsSkuCode", query.getGoodsSkuCode()); + } + //ToDo:需测试时添加,待定 + //厂家 + //车架号 + //来源单号 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wir.billNo", query.getBillNo()); + } + //单据类型 + if (StringUtils.isNotBlank(query.getBillType())) { + qw.like("wir.billType", query.getBillType()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wir.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wir.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + qw.eq("wir.warehouseName", "旧件仓库"); + List list = baseMapper.excelRecordList(qw); + list.removeAll(Collections.singleton(null)); + return list; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryVo.java new file mode 100644 index 0000000000..e0256ddf0a --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldinventory/WmsOldInventoryVo.java @@ -0,0 +1,60 @@ +package com.yxt.wms.biz.inventory.wmsoldinventory; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/28 + **/ +@Data +public class WmsOldInventoryVo { + + private String sid; + + //商品ID + private String goodsID; + + //商品名称 + private String goodsSkuTitle; + + //商品编码 + private String goodsSkuCode; + + //厂家 + private String manufacturerName; + + //规格 + private String goodsSkuOwnSpec; + + //单位 + private String unit; + + //数量 + private String count; + + //已入库数量 + private String inCount; + + //维修工单编号 + private String billNo; + + //客户名称 + private String customerName; + + //车牌号 + private String vehMark; + + //车架号 + private String vinNo; + + //旧件回收说明 + private String shortss; + private String photos; + + //旧件照片 + private List photosList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegister.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegister.java new file mode 100644 index 0000000000..cb2990fc50 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegister.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import com.yxt.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOldRegister extends BaseEntity { + + //维修工单编号 + private String billNo; + //工单创建日期 + private String billTime; + //客户sid + private String customerSid; + //客户名称 + private String customerName; + //车牌号 + private String vehMark; + //车架号 + private String vinNo; + //旧件回收说明 + private String shortss; + //旧件照片 + private String photos; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterDto.java new file mode 100644 index 0000000000..0a303f9726 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterDto.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOldRegisterDto { + + //维修工单编号 + private String billNo; + //工单创建日期 + private String billTime; + //客户sid + private String customerSid; + //客户名称 + private String customerName; + //车牌号 + private String vehMark; + //车架号 + private String vinNo; + //旧件回收说明 + private String shortss; + //旧件照片 + private List photos = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.java new file mode 100644 index 0000000000..e57b4a9d2d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.java @@ -0,0 +1,14 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Mapper +public interface WmsOldRegisterMapper extends BaseMapper { + WmsOldRegister selectByBillNo(String billNo); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.xml new file mode 100644 index 0000000000..e3b5d2c699 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterMapper.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterQuery.java new file mode 100644 index 0000000000..bf6bb7c7da --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterQuery.java @@ -0,0 +1,25 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import com.yxt.common.core.query.Query; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOldRegisterQuery implements Query { + + //维修工单编号 + private String billNo; + + //工单创建开始时间 + private String createTimeStart; + + //工单创建结束时间 + private String createTimeEnd; + + //车牌号 + private String vehMark; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterService.java new file mode 100644 index 0000000000..3adb3a865b --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterService.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.config.component.FileUploadComponent; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Service +public class WmsOldRegisterService extends MybatisBaseService { + @Autowired + private FileUploadComponent fileUploadComponent; + + public ResultBean saveorUpdateOldRegister(WmsOldRegisterDto dto) { + ResultBean rb = ResultBean.fireFail(); + WmsOldRegister wmsOldRegister = baseMapper.selectByBillNo(dto.getBillNo()); + if (wmsOldRegister == null) { + wmsOldRegister = new WmsOldRegister(); + BeanUtil.copyProperties(dto, wmsOldRegister, "sid"); + List photos = dto.getPhotos(); + String photoss = String.join(",", photos).replaceAll(fileUploadComponent.getUrlPrefix(), ""); + wmsOldRegister.setPhotos(photoss); + baseMapper.insert(wmsOldRegister); + } else { + BeanUtil.copyProperties(dto, wmsOldRegister); + List photos = dto.getPhotos(); + String photoss = String.join(",", photos).replaceAll(fileUploadComponent.getUrlPrefix(), ""); + wmsOldRegister.setPhotos(photoss); + baseMapper.updateById(wmsOldRegister); + } + return rb.success(); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterVo.java new file mode 100644 index 0000000000..761ac8cf7c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoldregister/WmsOldRegisterVo.java @@ -0,0 +1,29 @@ +package com.yxt.wms.biz.inventory.wmsoldregister; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOldRegisterVo { + + //维修工单编号 + private String billNo; + //工单创建日期 + private String billTime; + //客户sid + private String customerSid; + //客户名称 + private String customerName; + //车牌号 + private String vehMark; + //车架号 + private String vinNo; + //旧件回收说明 + private String shortss; + //旧件照片 + private String photos; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBill.java new file mode 100644 index 0000000000..568314eb72 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBill.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBill extends BaseEntity { + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("制单人") + private String createByName; + @ApiModelProperty("业务类型key") + private String busTypeKey; + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner; + @ApiModelProperty("已完成/已发货") + private Integer billState; + @ApiModelProperty("是否一起发货(否0,是1)") + private Integer isTogether; + @ApiModelProperty("挂起状态(1挂起,0不挂起,2解锁)") + private Integer isHandUp; + @ApiModelProperty("优先级") + private Integer priority; + @ApiModelProperty("实际发货时间") + private Date actualDeliveTime; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("使用组织sid") + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDetailsVo.java new file mode 100644 index 0000000000..0421a4354f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDetailsVo.java @@ -0,0 +1,39 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillDetailsVo { + + private String sid; + @ApiModelProperty("创建人sid") + private String createBySid; + @ApiModelProperty("制单人") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("外部单号") + private String sourceBillNo; + + @ApiModelProperty("业务类型key") + private String busTypeKey; + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + + @ApiModelProperty("单据状态") + private String billState; + @ApiModelProperty("备注") + private String remarks; + + private List detailsList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDto.java new file mode 100644 index 0000000000..cd3f640667 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillDto.java @@ -0,0 +1,41 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillDto { + + private String sid; + @ApiModelProperty("创建人sid") + private String createBySid; + @ApiModelProperty("制单人") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("外部单号") + private String sourceBillNo; + + @ApiModelProperty("业务类型key") + private String busTypeKey; + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + + @ApiModelProperty("单据状态") + private String billState; + @ApiModelProperty("备注") + private String remarks; + + private List detailsList = new ArrayList<>(); + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryQuery.java new file mode 100644 index 0000000000..e05d2c2be4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryQuery.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOutBillInventoryQuery implements Query { + + //商品名称 + @ApiModelProperty("商品名称") + private String goodsSpuName; + + //商品编码 + private String goodsSkuCode; + + //仓库 + private String warehouseName; + + //库位 + private String warehouseRackCode; + + //供应商 + private String supplierName; + + private String orgPath; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryVo.java new file mode 100644 index 0000000000..0d49800d5e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillInventoryVo.java @@ -0,0 +1,49 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/26 + **/ +@Data +public class WmsOutBillInventoryVo { + private String sid; + @ApiModelProperty("商品ID") + private String goodsID; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + + + //入库单价 + private String money; + //库存数量 + private String count; + //供应商 + private String supplierSid; + private String supplierName; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.java new file mode 100644 index 0000000000..ea0e61e253 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.java @@ -0,0 +1,22 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Mapper +public interface WmsOutBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + WmsOutBillDetailsVo details(String sid); + + IPage getInventoryList(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml new file mode 100644 index 0000000000..4dfcdd71fb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillMapper.xml @@ -0,0 +1,53 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillQuery.java new file mode 100644 index 0000000000..270fb877fb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillQuery.java @@ -0,0 +1,31 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillQuery implements Query { + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期开始时间") + private String createTimeStart; + @ApiModelProperty("单据日期结束时间") + private String createTimeEnd; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + @ApiModelProperty("单据状态") + private String billState; + @ApiModelProperty("组织sid全路径") + private String orgPath; + @ApiModelProperty("用户sid") + private String createBySid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java new file mode 100644 index 0000000000..a6fcec6f88 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java @@ -0,0 +1,197 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventory; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventorySaveDto; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordDto; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordService; +import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetail; +import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailDto; +import com.yxt.wms.biz.inventory.wmsoutbilldetail.WmsOutBillDetailService; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillPageVo; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillQuery; +import com.yxt.wms.biz.inventory.wmsshelfbill.WmsShelfBill; +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.WmsShelfBillDetail; +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.WmsShelfBillDetailVos; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Service +public class WmsOutBillService extends MybatisBaseService { + + @Autowired + private WmsOutBillDetailService wmsOutBillDetailService; + @Autowired + private WmsInventoryService wmsInventoryService; + @Autowired + private WmsInventoryRecordService wmsInventoryRecordService; + + public PagerVo listPage(PagerQuery pagerQuery) { + WmsOutBillQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wob.billNo", query.getBillNo()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wob.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wob.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + //来源单号 + if (StringUtils.isNotBlank(query.getSourceBillNo())) { + qw.like("wob.sourceBillNo", query.getSourceBillNo()); + } + //业务类型 + if (StringUtils.isNotBlank(query.getBusTypeValue())) { + qw.like("wob.busTypeValue", query.getBusTypeValue()); + } + //单据类型 + if (StringUtils.isNotBlank(query.getBillState())) { + qw.like("wob.billState", query.getBillState()); + } + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateOutBill(WmsOutBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsOutBill wmsOutBill = new WmsOutBill(); + BeanUtil.copyProperties(dto, wmsOutBill, "sid"); + sid = wmsOutBill.getSid(); + List detailsList = dto.getDetailsList(); + detailsList.removeAll(Collections.singleton(null)); + if (detailsList.size() > 0) { + wmsOutBillDetailService.saveOrUpdateBillDetails(sid, detailsList); + } + baseMapper.insert(wmsOutBill); + } else { + WmsOutBill wmsOutBill = fetchBySid(sid); + if (wmsOutBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsOutBill, "sid"); + List detailsList = dto.getDetailsList(); + detailsList.removeAll(Collections.singleton(null)); + if (detailsList.size() > 0) { + wmsOutBillDetailService.saveOrUpdateBillDetails(sid, detailsList); + } + baseMapper.updateById(wmsOutBill); + } + return rb.success().setData(sid); + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsOutBillDetailsVo wmsOutBillDetailsVo = baseMapper.details(sid); + if (wmsOutBillDetailsVo == null) { + return rb.setMsg("该单据不存在"); + } + //ToDo:需补充仓库等信息 + List detailsList = wmsOutBillDetailService.selectDetailsList(sid); + detailsList.removeAll(Collections.singleton(null)); + if (!detailsList.isEmpty()) { + wmsOutBillDetailsVo.setDetailsList(detailsList); + } + return rb.success().setData(wmsOutBillDetailsVo); + } + + public PagerVo getInventoryList(PagerQuery pagerQuery) { + WmsOutBillInventoryQuery query = pagerQuery.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getGoodsSpuName())) { + qw.like("wi.goodsSpuName", query.getGoodsSpuName()); + } + //商品编码 + if (StringUtils.isNotBlank(query.getGoodsSkuCode())) { + qw.like("wi.goodsSkuCode", query.getGoodsSkuCode()); + } + //仓库 + if (StringUtils.isNotBlank(query.getWarehouseName())) { + qw.like("wi.warehouseName", query.getWarehouseName()); + } + //库位 + if (StringUtils.isNotBlank(query.getWarehouseRackCode())) { + qw.like("wi.warehouseRackCode", query.getWarehouseRackCode()); + } + //ToDo:供应商 + /* if (StringUtils.isNotBlank(query.getSupplierName())) { + qw.like("supplierName", query.getSupplierName()); + }*/ + IPage page = PagerUtil.queryToPage(pagerQuery); + IPage pagging = baseMapper.getInventoryList(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean confirm(WmsOutBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = saveOrUpdateOutBill(dto).getData(); + List detailsList = dto.getDetailsList(); + detailsList.removeAll(Collections.singleton(null)); + if (!detailsList.isEmpty()) { + for (int i = 0; i < detailsList.size(); i++) { + WmsOutBillDetailDto wmsOutBillDetailDto = detailsList.get(i); + WmsInventory wmsInventory = wmsInventoryService.fetchBySid(wmsOutBillDetailDto.getInventorySid()); + //减去出库的数量 + wmsInventory.setCount(wmsInventory.getCount().subtract(new BigDecimal(wmsOutBillDetailDto.getOutCount()))); + wmsInventoryService.updateById(wmsInventory); + } + saveWmsInventory(dto.getSid()); + } + return rb.success(); + } + + public void saveWmsInventory(String sid) { + WmsOutBill wmsOutBill = fetchBySid(sid); + List detailList = wmsOutBillDetailService.selectDetailsList(sid); + detailList.removeAll(Collections.singleton(null)); + if (!detailList.isEmpty()) { + for (int i = 0; i < detailList.size(); i++) { + WmsOutBillDetailDto wmsOutBillDetailDto = detailList.get(i); + WmsInventoryRecordDto wmsInventoryRecordDto = new WmsInventoryRecordDto(); + wmsInventoryRecordDto.setInventorySid(wmsOutBillDetailDto.getInventorySid()); + wmsInventoryRecordDto.setGoodsID(wmsInventoryRecordDto.getGoodsID()); + wmsInventoryRecordDto.setSourceBillSid(wmsOutBill.getSid()); + wmsInventoryRecordDto.setBillNo(wmsOutBill.getBillNo()); + wmsInventoryRecordDto.setBillType("0"); + wmsInventoryRecordDto.setBatchNumber(wmsInventoryRecordDto.getBatchNumber()); + wmsInventoryRecordDto.setGoodSpuSid(wmsInventoryRecordDto.getGoodSpuSid()); + wmsInventoryRecordDto.setGoodsSpuName(wmsInventoryRecordDto.getGoodsSpuName()); + wmsInventoryRecordDto.setGoodsSkuSid(wmsInventoryRecordDto.getGoodsSkuSid()); + wmsInventoryRecordDto.setGoodsSkuCode(wmsInventoryRecordDto.getGoodsSkuCode()); + wmsInventoryRecordDto.setUnit(wmsInventoryRecordDto.getUnit()); + wmsInventoryRecordDto.setCurrentCount(StringUtils.isNotBlank(wmsInventoryRecordDto.getCount().toString()) ? new BigDecimal(wmsInventoryRecordDto.getCount().toString()) : BigDecimal.ZERO); + wmsInventoryRecordDto.setWarehouseSid(wmsInventoryRecordDto.getWarehouseSid()); + wmsInventoryRecordDto.setWarehouseName(wmsInventoryRecordDto.getWarehouseName()); + wmsInventoryRecordDto.setWarehouseRackSid(wmsInventoryRecordDto.getWarehouseRackSid()); + wmsInventoryRecordDto.setWarehouseRackCode(wmsInventoryRecordDto.getWarehouseRackCode()); + wmsInventoryRecordService.saveOrUpdateDto(wmsInventoryRecordDto); + } + } + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillVo.java new file mode 100644 index 0000000000..bb3292cef5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillVo.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsoutbill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillVo { + + private String sid; + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("制单人") + private String createByName; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("业务类型value((销售出库、采购退货出库等))") + private String busTypeValue; + @ApiModelProperty("单据状态:已完成/已发货") + private String billState; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetail.java new file mode 100644 index 0000000000..75f41d561c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetail.java @@ -0,0 +1,50 @@ +package com.yxt.wms.biz.inventory.wmsoutbilldetail; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.bouncycastle.cms.PasswordRecipientId; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillDetail extends BaseEntity { + @ApiModelProperty("单据sid") + private String billSid; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("订单数量") + private BigDecimal orderCount; + @ApiModelProperty("未结数量") + private BigDecimal remainingCount; + @ApiModelProperty("调整数量") + private BigDecimal adjustCount; + @ApiModelProperty("分配数量") + private BigDecimal distributeCount; + @ApiModelProperty("发货数量") + private BigDecimal deliveryCount; + @ApiModelProperty("状态(新建/已发货完成、部分分配、全部分配等)") + private Integer billState; + @ApiModelProperty("发货时间") + private Date deliveTime; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailDto.java new file mode 100644 index 0000000000..1eccd72bd3 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailDto.java @@ -0,0 +1,53 @@ +package com.yxt.wms.biz.inventory.wmsoutbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/24 + **/ +@Data +public class WmsOutBillDetailDto { + + private String sid; + @ApiModelProperty("库存商品sid") + private String inventorySid; + + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + + + @ApiModelProperty("出库数量") + private String outCount; + @ApiModelProperty("仓库sid") + private String warehouseSid; + //仓库名称 + private String warehouseName; + //库位sid + private String warehouseRackSid; + //库位编码 + private String warehouseRackCode; + //销售单价 + private String money; + //金额 + private String moneyAll; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.java new file mode 100644 index 0000000000..5e6aade279 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.java @@ -0,0 +1,18 @@ +package com.yxt.wms.biz.inventory.wmsoutbilldetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/29 + **/ +@Mapper +public interface WmsOutBillDetailMapper extends BaseMapper { + int deleteByMainSid(String sid); + + List selectDetailsList(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.xml new file mode 100644 index 0000000000..33833d632c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailMapper.xml @@ -0,0 +1,21 @@ + + + + + delete + from wms_out_bill_detail + where billSid = #{sid} + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailService.java new file mode 100644 index 0000000000..0b3d59544c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbilldetail/WmsOutBillDetailService.java @@ -0,0 +1,31 @@ +package com.yxt.wms.biz.inventory.wmsoutbilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/29 + **/ +@Service +public class WmsOutBillDetailService extends MybatisBaseService { + public void saveOrUpdateBillDetails(String sid, List detailsList) { + //删除 + baseMapper.deleteByMainSid(sid); + for (int i = 0; i < detailsList.size(); i++) { + WmsOutBillDetailDto wmsOutBillDetailDto = detailsList.get(i); + WmsOutBillDetail wmsOutBillDetail = new WmsOutBillDetail(); + BeanUtil.copyProperties(wmsOutBillDetailDto, wmsOutBillDetail, "sid"); + wmsOutBillDetail.setBillSid(sid); + baseMapper.insert(wmsOutBillDetail); + } + } + + public List selectDetailsList(String sid) { + return baseMapper.selectDetailsList(sid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBill.java new file mode 100644 index 0000000000..c0b6c6bda8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBill.java @@ -0,0 +1,45 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Data +public class WmsReceiptBill extends BaseEntity { + + @ApiModelProperty("来源单sid(asn单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("业务类型key(采购入库、销售退库等)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner; + @ApiModelProperty("到货日期") + private Date deliveryDate; + @ApiModelProperty("待收货/部分收货/已收货(默认)") + private String billState; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto.java new file mode 100644 index 0000000000..7a32365c9c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto.java @@ -0,0 +1,58 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetail; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/7 + **/ +@Data +public class WmsReceiptBillDto { + + private String sid; + @ApiModelProperty("来源单sid(asn单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("业务类型key(采购入库、销售退库等)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + /* @ApiModelProperty("货主sid") + private String goodsOwnerSid; + @ApiModelProperty("货主") + private String goodsOwner;*/ + @ApiModelProperty("到货日期") + private Date deliveryDate; + //单据状态:新建/已完成 + @ApiModelProperty("单据状态:待收货/部分收货/已收货(默认)") + private String billState; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + + private List list = new ArrayList<>(); + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto2.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto2.java new file mode 100644 index 0000000000..68d80baf2c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillDto2.java @@ -0,0 +1,56 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto2; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsReceiptBillDto2 { + + private String sid; + @ApiModelProperty("来源单sid(asn单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("业务类型key(采购入库、销售退库等)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("到货日期") + private String deliveryDate; + //单据状态:新建/已完成 + @ApiModelProperty("单据状态:待收货/部分收货/已收货(默认)") + private String billState; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("商品列表") + private List list = new ArrayList<>(); + @ApiModelProperty("批次列表") + private List pcList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillInitVo.java new file mode 100644 index 0000000000..f6448d5567 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillInitVo.java @@ -0,0 +1,56 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto2; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsReceiptBillInitVo { + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("来源单sid(asn单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("业务类型key(采购入库、销售退库等)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("到货日期") + private String deliveryDate; + //单据状态:新建/已完成 + @ApiModelProperty("单据状态:待收货/部分收货/已收货(默认)") + private String billState; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + @ApiModelProperty("商品列表") + private List list = new ArrayList<>(); + @ApiModelProperty("批次列表") + private List pcList = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java new file mode 100644 index 0000000000..2b7347defc --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.java @@ -0,0 +1,20 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Mapper +public interface WmsReceiptBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + WmsReceiptBillInitVo getDetailsInit(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml new file mode 100644 index 0000000000..5fca13e4e8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillMapper.xml @@ -0,0 +1,42 @@ + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillPageVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillPageVo.java new file mode 100644 index 0000000000..36a2b32e0f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillPageVo.java @@ -0,0 +1,40 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Data +public class WmsReceiptBillPageVo { + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + + @ApiModelProperty("供应商名称") + private String supplierName; + + @ApiModelProperty("到货日期") + private String deliveryDate; + + //单据状态:新建/已完成 + @ApiModelProperty("单据状态:待收货/部分收货/已收货(默认)") + private String billState; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java new file mode 100644 index 0000000000..52064cc3a6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillQuery.java @@ -0,0 +1,33 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Data +public class WmsReceiptBillQuery implements Query { + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期开始时间") + private String createTimeStart; + @ApiModelProperty("单据日期结束时间") + private String createTimeEnd; + @ApiModelProperty("来源编号") + private String sourceBillNo; + @ApiModelProperty("业务类型Key") + private String busTypeKey; + @ApiModelProperty("到货日期开始时间") + private String deliveryDateStart; + @ApiModelProperty("到货日期结束时间") + private String deliveryDateEnd; + @ApiModelProperty("单据状态") + private String billState; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java new file mode 100644 index 0000000000..414480f9ac --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillService.java @@ -0,0 +1,220 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBill; +import com.yxt.wms.biz.inventory.wmsansbill.WmsAnsBillService; +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsBillDetailService; +import com.yxt.wms.biz.inventory.wmsansbilldetail.WmsAnsListDetailsVo; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.*; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatch; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchMapper; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Service +public class WmsReceiptBillService extends MybatisBaseService { + + @Autowired + private WmsReceiptBillDetailService wmsReceiptBillDetailService; + @Autowired + private WmsAnsBillService wmsAnsBillService; + @Autowired + private WmsAnsBillDetailService wmsAnsBillDetailService; + @Autowired + private WmsReceiptBillDetailBatchService wmsReceiptBillDetailBatchService; + @Autowired + private WmsReceiptBillDetailMapper wmsReceiptBillDetailMapper; + @Autowired + private WmsReceiptBillDetailBatchMapper wmsReceiptBillDetailBatchMapper; + + public PagerVo listPage(PagerQuery pq) { + WmsReceiptBillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wrb.billNo", query.getBillNo()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wrb.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wrb.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + //预期到货日期开始时间-预期到货日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getDeliveryDateStart()), "date_format (wrb.deliveryDate,'%Y-%m-%d') >= date_format('" + query.getDeliveryDateStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getDeliveryDateEnd()), "date_format (wrb.deliveryDate,'%Y-%m-%d') <= date_format('" + query.getDeliveryDateEnd() + "','%Y-%m-%d')" + ); + //单据状态 + if (StringUtils.isNotBlank(query.getBillState())) { + qw.like("wrb.billState", query.getBillState()); + } + //外部编号 + if (StringUtils.isNotBlank(query.getSourceBillNo())) { + qw.like("wrb.sourceBillNo", query.getSourceBillNo()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateBill(WmsReceiptBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsReceiptBill wmsReceiptBill = new WmsReceiptBill(); + sid = wmsReceiptBill.getSid(); + BeanUtil.copyProperties(dto, wmsReceiptBill, "sid"); + List wmsReceiptBillDetailList = dto.getList(); + wmsReceiptBillDetailList.removeAll(Collections.singleton(null)); + if (!wmsReceiptBillDetailList.isEmpty()) { + wmsReceiptBillDetailService.saveOrUpdateDetailsList(sid, wmsReceiptBillDetailList); + } + baseMapper.insert(wmsReceiptBill); + + } else { + WmsReceiptBill wmsReceiptBill = fetchBySid(sid); + if (wmsReceiptBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsReceiptBill, "sid"); + List wmsReceiptBillDetailList = dto.getList(); + wmsReceiptBillDetailList.removeAll(Collections.singleton(null)); + if (!wmsReceiptBillDetailList.isEmpty()) { + wmsReceiptBillDetailService.saveOrUpdateDetailsList(sid, wmsReceiptBillDetailList); + } + baseMapper.updateById(wmsReceiptBill); + } + return rb.success().setData(sid); + } + + public ResultBean saveOrUpdateBill2(WmsReceiptBillDto2 dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsReceiptBill wmsReceiptBill = new WmsReceiptBill(); + sid = wmsReceiptBill.getSid(); + BeanUtil.copyProperties(dto, wmsReceiptBill, "sid"); + List list = dto.getList(); + list.removeAll(Collections.singleton(null)); + List pcList = dto.getPcList(); + pcList.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + wmsReceiptBillDetailService.saveOrUpdateDetailsList2(sid, list, pcList); + } + baseMapper.insert(wmsReceiptBill); + + } else { + WmsReceiptBill wmsReceiptBill = fetchBySid(sid); + if (wmsReceiptBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsReceiptBill, "sid"); + List list = dto.getList(); + list.removeAll(Collections.singleton(null)); + List pcList = dto.getPcList(); + pcList.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + wmsReceiptBillDetailService.saveOrUpdateDetailsList2(sid, list, pcList); + } + baseMapper.updateById(wmsReceiptBill); + } + return rb.success().setData(sid); + } + + public ResultBean getInitDetails(String sourceSid) { + ResultBean rb = ResultBean.fireFail(); + WmsReceiptBillVo wmsReceiptBillVo = new WmsReceiptBillVo(); + WmsAnsBill wmsAnsBill = wmsAnsBillService.fetchBySid(sourceSid); + BeanUtil.copyProperties(wmsAnsBill, wmsReceiptBillVo, "sid"); + wmsReceiptBillVo.setSourceBillNo(wmsAnsBill.getBillNo()); + wmsReceiptBillVo.setSourceBillSid(wmsAnsBill.getSid()); + wmsReceiptBillVo.setCreateTime(DateUtil.today()); + List list = wmsAnsBillDetailService.selectByBillSid(sourceSid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + List lists = Optional.ofNullable(list).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), WmsReceiptBillDetailVo.class)).collect(Collectors.toList()); + wmsReceiptBillVo.setList(lists); + } + + return rb.success().setData(wmsReceiptBillVo); + } + + public ResultBean getDetailsInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + WmsReceiptBillInitVo wmsReceiptBillInitVo = baseMapper.getDetailsInit(sid); + List pcList = new ArrayList<>(); + if (wmsReceiptBillInitVo != null) { + List list = wmsReceiptBillDetailService.getDetailsInit(sid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + WmsReceiptBillDetailDto2 wmsReceiptBillDetailDto2 = list.get(i); + int a = i + 1; + wmsReceiptBillDetailDto2.setXh(String.valueOf(a)); + List pcList2 = wmsReceiptBillDetailBatchService.getDetailsInit(sid, wmsReceiptBillDetailDto2.getDetailsSid()); + pcList2.removeAll(Collections.singleton(null)); + if (!pcList2.isEmpty()) { + for (int j = 0; j < pcList2.size(); j++) { + WmsReceiptBillDetailBatchDto2 wmsReceiptBillDetailBatchDto2 = pcList2.get(j); + wmsReceiptBillDetailBatchDto2.setXh(String.valueOf(a)); + } + pcList.addAll(pcList2); + } + } + } + wmsReceiptBillInitVo.setList(list); + wmsReceiptBillInitVo.setPcList(pcList); + } else { + return rb.setMsg("该单据不存在"); + } + return rb.success().setData(wmsReceiptBillInitVo); + } + + public ResultBean confirm(WmsReceiptBillDto2 dto) { + ResultBean rb = ResultBean.fireFail(); + dto.setBillState("1"); + List list = dto.getList(); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + for (int i = 0; i < list.size(); i++) { + WmsReceiptBillDetailDto2 wmsReceiptBillDetailDto2 = list.get(i); + wmsReceiptBillDetailDto2.setState(1); + } + } + dto.setList(list); + ResultBean resultBean = saveOrUpdateBill2(dto); + String sid = resultBean.getData(); + return rb.success().setData(sid); + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + List sidss = Arrays.asList(sids); + for (int i = 0; i < sidss.size(); i++) { + String s = sidss.get(i); + wmsReceiptBillDetailMapper.deleteByBillSid(s); + wmsReceiptBillDetailBatchMapper.deleteByDetails(s); + } + delBySids(sids); + return rb.success().setMsg("删除成功"); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillVo.java new file mode 100644 index 0000000000..8d36a5f69f --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbill/WmsReceiptBillVo.java @@ -0,0 +1,52 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbill; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Data +public class WmsReceiptBillVo { + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("来源单sid(asn单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(asn单号)") + private String sourceBillNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("业务类型key(采购入库、销售退库等)") + private String busTypeKey; + @ApiModelProperty("业务类型value(采购入库、销售退库等)") + private String busTypeValue; + @ApiModelProperty("供应商sid") + private String supplierSid; + @ApiModelProperty("供应商名称") + private String supplierName; + @ApiModelProperty("到货日期") + private Date deliveryDate; + //单据状态:新建/已完成 + @ApiModelProperty("单据状态:待收货/部分收货/已收货(默认)") + private String billState; + @ApiModelProperty("备注") + private String remarks; + @ApiModelProperty("使用组织sid") + private String useOrgSid; + @ApiModelProperty("创建组织sid") + private String createOrgSid; + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetail.java new file mode 100644 index 0000000000..eebb7ffa10 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetail.java @@ -0,0 +1,58 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Data +public class WmsReceiptBillDetail extends BaseEntity { + @ApiModelProperty("单据sid") + private String billSid; + @ApiModelProperty("商品基础信息Sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + /* @ApiModelProperty("预约数量") + private BigDecimal orderCount;*/ + @ApiModelProperty("实收数量") + private BigDecimal actualInCount; + @ApiModelProperty("拒收数量") + private BigDecimal rejectCount; + @ApiModelProperty("拒收原因") + private String rejectReason; + @ApiModelProperty("收货时间") + private Date receivingGoodsTime; + @ApiModelProperty("是否需要质检(不需要0,需要1)") + private Integer isQuality; + @ApiModelProperty("质检状态(合格0,不合格1)") + private Integer qualityState; + @ApiModelProperty("载具说明") + private String packageRemark; + + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位名称") + private String warehouseRackName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto.java new file mode 100644 index 0000000000..cb02089ec0 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto.java @@ -0,0 +1,55 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsReceiptBillDetailDto { + + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位名称") + private String warehouseRackName; + @ApiModelProperty("实收数量") + private String actualInCount; + @ApiModelProperty("拒收数量") + private String rejectCount; + @ApiModelProperty("拒收原因") + private String rejectReason; + @ApiModelProperty("是否需要质检(不需要0,需要1)") + private Integer isQuality; + @ApiModelProperty("质检状态(合格0,不合格1)") + private Integer qualityState; + @ApiModelProperty("载具说明") + private String packageRemark; + + private Integer state; + //批次 + private List list = new ArrayList<>(); + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java new file mode 100644 index 0000000000..76abe39d99 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailDto2.java @@ -0,0 +1,69 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsReceiptBillDetailDto2 { + + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位名称") + private String warehouseRackName; + @ApiModelProperty("实收数量") + private String actualInCount; + @ApiModelProperty("拒收数量") + private String rejectCount; + @ApiModelProperty("拒收原因") + private String rejectReason; + @ApiModelProperty("是否需要质检(不需要0,需要1)") + private Integer isQuality; + @ApiModelProperty("质检状态(合格0,不合格1)") + private Integer qualityState; + @ApiModelProperty("载具说明") + private String packageRemark; + @ApiModelProperty("单据明细状态:0新建,1已完成") + private Integer state; + @ApiModelProperty("序号") + private String xh; + @JsonIgnore + private String detailsSid; + + @ApiModelProperty("预约数量(采购订单数量)") + private String orderCount; + + + //入库价 + @ApiModelProperty("单位成本(采购价)") + private String cost; + @ApiModelProperty("税额") + private String taxAmount; + @ApiModelProperty("含税价") + private String taxPrice; + //采购金额 + @ApiModelProperty("金额") + private String amount; + + @ApiModelProperty("有效天数") + private String shelfLife; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.java new file mode 100644 index 0000000000..10bb3bfcd0 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.java @@ -0,0 +1,21 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Mapper +public interface WmsReceiptBillDetailMapper extends BaseMapper { + int deleteByBillSid(String sid); + + List getDetailsInit(String sid); + + List selectByBillSid(@Param("sid") String sid, @Param("sidList") List sidList); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml new file mode 100644 index 0000000000..5a05fe3d9d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailMapper.xml @@ -0,0 +1,43 @@ + + + + + delete + from wms_receipt_bill_detail + where billSid = #{sid} + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailService.java new file mode 100644 index 0000000000..62102d16c6 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailService.java @@ -0,0 +1,73 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/3 + **/ +@Service +public class WmsReceiptBillDetailService extends MybatisBaseService { + + @Autowired + private WmsReceiptBillDetailBatchService wmsReceiptBillDetailBatchService; + + public void saveOrUpdateDetailsList(String sid, List wmsReceiptBillDetailList) { + baseMapper.deleteByBillSid(sid); + wmsReceiptBillDetailList.forEach(v -> { + WmsReceiptBillDetail wmsReceiptBillDetail = new WmsReceiptBillDetail(); + BeanUtil.copyProperties(v, wmsReceiptBillDetail, "sid"); + wmsReceiptBillDetail.setBillSid(sid); + baseMapper.insert(wmsReceiptBillDetail); + wmsReceiptBillDetailBatchService.deleteByDetails(sid); + List list = v.getList(); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + wmsReceiptBillDetailBatchService.saveBatchs(sid, wmsReceiptBillDetail.getSid(), list); + + } + + }); + } + + public void saveOrUpdateDetailsList2(String sid, List list, List pcList) { + baseMapper.deleteByBillSid(sid); + list.forEach(v -> { + WmsReceiptBillDetail wmsReceiptBillDetail = new WmsReceiptBillDetail(); + BeanUtil.copyProperties(v, wmsReceiptBillDetail, "sid"); + wmsReceiptBillDetail.setBillSid(sid); + baseMapper.insert(wmsReceiptBillDetail); + wmsReceiptBillDetailBatchService.deleteByDetails(sid); + pcList.removeAll(Collections.singleton(null)); + if (!pcList.isEmpty()) { + List pcList2 = pcList.stream().filter(c -> c.getXh().equals(v.getXh())).collect(Collectors.toList()); + pcList2.removeAll(Collections.singleton(null)); + if (!pcList2.isEmpty()) { + wmsReceiptBillDetailBatchService.saveBatchs2(sid, wmsReceiptBillDetail.getSid(), pcList2); + } + } + + + }); + } + + public List getDetailsInit(String sid) { + return baseMapper.getDetailsInit(sid); + } + + public List selectByBillSid(String sid,List sidList) { + return baseMapper.selectByBillSid(sid,sidList); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java new file mode 100644 index 0000000000..d8f9d3dce9 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetail/WmsReceiptBillDetailVo.java @@ -0,0 +1,66 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetail; + +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchDto; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Data +public class WmsReceiptBillDetailVo { + + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位名称") + private String warehouseRackName; + @ApiModelProperty("实收数量") + private String actualInCount; + @ApiModelProperty("拒收数量") + private String rejectCount; + @ApiModelProperty("拒收原因") + private String rejectReason; + @ApiModelProperty("是否需要质检(不需要0,需要1)") + private Integer isQuality; + @ApiModelProperty("质检状态(合格0,不合格1)") + private Integer qualityState; + @ApiModelProperty("载具说明") + private String packageRemark; + + //入库价 + @ApiModelProperty("单位成本(采购价)") + private String cost; + @ApiModelProperty("税额") + private String taxAmount; + @ApiModelProperty("含税价") + private String taxPrice; + //采购金额 + @ApiModelProperty("金额") + private String amount; + + @ApiModelProperty("有效期天数") + private Integer shelfLife; + @ApiModelProperty("预约数量(采购订单数量)") + private String orderCount; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatch.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatch.java new file mode 100644 index 0000000000..a065cc68cb --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatch.java @@ -0,0 +1,30 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsReceiptBillDetailBatch extends BaseEntity { + @ApiModelProperty("收货单sid") + private String billSid; + @ApiModelProperty("收货明细sid") + private String detailSid; + @ApiModelProperty("批次号(收货日期+有效日期,如240320-241009)") + private String batchNumber; + @ApiModelProperty("生产日期") + private Date manufactureDate; + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDate; + + @ApiModelProperty("数量") + private BigDecimal batchCount; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto.java new file mode 100644 index 0000000000..3a23bae515 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto.java @@ -0,0 +1,26 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Data +public class WmsReceiptBillDetailBatchDto { + + @ApiModelProperty("批次号(收货日期+有效日期,如240320-241009)") + private String batchNumber; + @ApiModelProperty("生产日期") + private Date manufactureDate; + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private Date expirationDate; + @ApiModelProperty("数量") + private String batchCount; + @ApiModelProperty("有效期天数") + private Integer shelfLife; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto2.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto2.java new file mode 100644 index 0000000000..438db55d6e --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchDto2.java @@ -0,0 +1,47 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsReceiptBillDetailBatchDto2 { + + @ApiModelProperty("批次号(收货日期+有效日期,如240320-241009)") + private String batchNumber; + @ApiModelProperty("生产日期") + private String manufactureDate; + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private String expirationDate; + @ApiModelProperty("数量") + private String batchCount; + @ApiModelProperty("有效期天数") + private Integer shelfLife; + + private String xh; + + //商品名称 + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + //商品编码 + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + //规格 + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + //单位 + @ApiModelProperty("计量单位") + private String unit; + //仓库 + @ApiModelProperty("仓库名称") + private String warehouseName; + //库位 + @ApiModelProperty("库位名称") + private String warehouseRackName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.java new file mode 100644 index 0000000000..287c4ef6d8 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.java @@ -0,0 +1,21 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Mapper +public interface WmsReceiptBillDetailBatchMapper extends BaseMapper { + int deleteByDetails(String sid); + + List getDetailsInit(@Param("sid") String sid, @Param("detailsSid") String detailsSid); + + WmsReceiptBillDetailBatch selectByDetails(String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.xml new file mode 100644 index 0000000000..12aa37ecc1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchMapper.xml @@ -0,0 +1,25 @@ + + + + + delete + from wms_receipt_bill_detail_batch + where billSid = #{sid} + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchService.java new file mode 100644 index 0000000000..f1a617af91 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchService.java @@ -0,0 +1,47 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Service +public class WmsReceiptBillDetailBatchService extends MybatisBaseService { + public int deleteByDetails(String sid) { + return baseMapper.deleteByDetails(sid); + } + + public void saveBatchs(String sid, String sid1, List list) { + list.forEach(v -> { + WmsReceiptBillDetailBatch wmsReceiptBillDetailBatch = new WmsReceiptBillDetailBatch(); + BeanUtil.copyProperties(v, wmsReceiptBillDetailBatch, "sid"); + wmsReceiptBillDetailBatch.setBillSid(sid); + wmsReceiptBillDetailBatch.setDetailSid(sid1); + baseMapper.insert(wmsReceiptBillDetailBatch); + }); + } + + public void saveBatchs2(String sid, String sid1, List list) { + list.forEach(v -> { + WmsReceiptBillDetailBatch wmsReceiptBillDetailBatch = new WmsReceiptBillDetailBatch(); + BeanUtil.copyProperties(v, wmsReceiptBillDetailBatch, "sid"); + wmsReceiptBillDetailBatch.setBillSid(sid); + wmsReceiptBillDetailBatch.setDetailSid(sid1); + baseMapper.insert(wmsReceiptBillDetailBatch); + }); + } + + public List getDetailsInit(String sid, String detailsSid) { + return baseMapper.getDetailsInit(sid,detailsSid); + } + + public WmsReceiptBillDetailBatch selectByDetails(String sid) { + return baseMapper.selectByDetails(sid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchVo.java new file mode 100644 index 0000000000..4d8e5d5c0c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsreceiptbilldetailbatch/WmsReceiptBillDetailBatchVo.java @@ -0,0 +1,34 @@ +package com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/12 + **/ +@Data +public class WmsReceiptBillDetailBatchVo { + + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位名称") + private String warehouseRackName; + @ApiModelProperty("批次号(收货日期+有效日期,如240320-241009)") + private String batchNumber; + @ApiModelProperty("生产日期") + private String manufactureDate; + @ApiModelProperty("有效期(根据spu中有效天数、生产日期计算)") + private String expirationDate; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfDetailsVo.java new file mode 100644 index 0000000000..668c886bd4 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfDetailsVo.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.ShelfDetailsListVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/17 + **/ +@Data +public class ShelfDetailsVo { + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人名称") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据状态:0新建,1已完成") + private Integer billState; + + private String remarks; + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfInitVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfInitVo.java new file mode 100644 index 0000000000..89cdf591ac --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/ShelfInitVo.java @@ -0,0 +1,38 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.ShelfDetailsListVo; +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.ShelfInitListVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/23 + **/ +@Data +public class ShelfInitVo { + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人名称") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据状态:0新建,1已完成") + private Integer billState; + + private String remarks; + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBill.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBill.java new file mode 100644 index 0000000000..efb0a36d64 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBill.java @@ -0,0 +1,28 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsShelfBill extends BaseEntity { + @ApiModelProperty("来源单sid(收货单sid)") + private String sourceBillSid; + @ApiModelProperty("来源单号(收货单号)") + private String sourceBillNo; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("0新建,1已完成") + private Integer billState; + + private String createOrgSid; + + private String useOrgSid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillDto.java new file mode 100644 index 0000000000..828bfdd85d --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillDto.java @@ -0,0 +1,36 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.WmsShelfBillDetailDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsShelfBillDto { + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("制单人sid") + private String createBySid; + @ApiModelProperty("制单人名称") + private String createByName; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("来源单号") + private String sourceBillNo; + @ApiModelProperty("来源单sid") + private String sourceBillSid; + @ApiModelProperty("单据状态:0新建,1已完成") + private Integer billState; + + private String remarks; + + private List list = new ArrayList<>(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.java new file mode 100644 index 0000000000..80f44945c1 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.java @@ -0,0 +1,22 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Mapper +public interface WmsShelfBillMapper extends BaseMapper { + IPage listPage(IPage page, @Param(Constants.WRAPPER) QueryWrapper qw); + + ShelfDetailsVo details(String sid); + + String selectNum(String goodsId); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.xml new file mode 100644 index 0000000000..befbf2b659 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillMapper.xml @@ -0,0 +1,39 @@ + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillQuery.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillQuery.java new file mode 100644 index 0000000000..bbf89110b7 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillQuery.java @@ -0,0 +1,23 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import com.yxt.common.core.query.Query; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsShelfBillQuery implements Query { + + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期开始时间") + private String createTimeStart; + @ApiModelProperty("单据日期结束时间") + private String createTimeEnd; + @ApiModelProperty("单据状态") + private String billState; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java new file mode 100644 index 0000000000..a311de3fbd --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillService.java @@ -0,0 +1,263 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.base.utils.PagerUtil; +import com.yxt.common.base.utils.StringUtils; +import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventorySaveDto; +import com.yxt.wms.biz.inventory.wmsinventory.WmsInventoryService; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordDto; +import com.yxt.wms.biz.inventory.wmsinventoryrecord.WmsInventoryRecordService; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBill; +import com.yxt.wms.biz.inventory.wmsreceiptbill.WmsReceiptBillService; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetail; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailDto2; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetail.WmsReceiptBillDetailService; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatch; +import com.yxt.wms.biz.inventory.wmsreceiptbilldetailbatch.WmsReceiptBillDetailBatchService; +import com.yxt.wms.biz.inventory.wmsshelfbilldetail.*; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.wms.utils.Rule; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/11 + **/ +@Service +public class WmsShelfBillService extends MybatisBaseService { + @Autowired + private WmsShelfBillDetailService wmsShelfBillDetailService; + @Autowired + private WmsShelfBillDetailMapper wmsShelfBillDetailMapper; + + @Autowired + private WmsInventoryService wmsInventoryService; + @Resource + private BaseGoodsSkuFeign baseGoodsSkuFeign; + + @Autowired + private WmsInventoryRecordService wmsInventoryRecordService; + @Autowired + private WmsReceiptBillService wmsReceiptBillService; + @Autowired + private WmsReceiptBillDetailService wmsReceiptBillDetailService; + @Autowired + private WmsReceiptBillDetailBatchService wmsReceiptBillDetailBatchService; + + public PagerVo listPage(PagerQuery pq) { + WmsShelfBillQuery query = pq.getParams(); + QueryWrapper qw = new QueryWrapper<>(); + //ToDo:添加查询条件 + if (StringUtils.isNotBlank(query.getBillNo())) { + qw.like("wsb.billNo", query.getBillNo()); + } + //单据日期开始时间-单据日期结束时间 + qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (wsb.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')"). + apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (wsb.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')" + ); + //单据状态 + if (StringUtils.isNotBlank(query.getBillState())) { + qw.like("wsb.billState", query.getBillState()); + } + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.listPage(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } + + public ResultBean saveOrUpdateShelf(WmsShelfBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + if (StringUtils.isBlank(sid)) { + WmsShelfBill wmsShelfBill = new WmsShelfBill(); + BeanUtil.copyProperties(dto, wmsShelfBill, "sid"); + List list = dto.getList(); + list.removeAll(Collections.singleton(null)); + sid = wmsShelfBill.getSid(); + if (!list.isEmpty()) { + wmsShelfBillDetailService.saveShelfDetails(sid, list); + } + baseMapper.insert(wmsShelfBill); + } else { + WmsShelfBill wmsShelfBill = fetchBySid(sid); + if (wmsShelfBill == null) { + return rb.setMsg("该单据不存在"); + } + BeanUtil.copyProperties(dto, wmsShelfBill, "sid"); + List list = dto.getList(); + list.removeAll(Collections.singleton(null)); + sid = wmsShelfBill.getSid(); + if (!list.isEmpty()) { + wmsShelfBillDetailService.saveShelfDetails(sid, list); + } + baseMapper.updateById(wmsShelfBill); + + } + saveWmsInventory(sid); + //新增出入库记录 + + return rb.success().setData(sid); + } + + public void saveWmsInventory(String sid) { + WmsShelfBill wmsShelfBill = fetchBySid(sid); + List detailList = wmsShelfBillDetailService.selectByBillSid(sid); + detailList.removeAll(Collections.singleton(null)); + if (!detailList.isEmpty()) { + for (int i = 0; i < detailList.size(); i++) { + WmsShelfBillDetailVos s = detailList.get(i); + WmsInventorySaveDto dto = new WmsInventorySaveDto(); + dto.setCreateBySid(wmsShelfBill.getCreateBySid()); + dto.setBatchNumber(s.getBatchNumber()); + dto.setGoodsID(getGoodsId(s.getGoodsSkuSid())); + dto.setGoodSpuSid(s.getGoodSpuSid()); + dto.setGoodsSpuName(s.getGoodsSpuName()); + dto.setGoodsSkuSid(s.getGoodsSkuSid()); + dto.setGoodsSkuTitle(s.getGoodsSkuTitle()); + dto.setGoodsSkuCode(s.getGoodsSkuCode()); + dto.setGoodsSkuOwnSpec(s.getGoodsSkuOwnSpec()); + dto.setUnit(s.getUnit()); + dto.setCount(s.getCount()); + dto.setWarehouseSid(s.getWarehouseSid()); + dto.setWarehouseName(s.getWarehouseName()); + dto.setWarehouseRackSid(s.getWarehouseRackSid()); + dto.setWarehouseRackCode(s.getWarehouseRackCode()); + dto.setFirstInDate(DateUtil.today()); + dto.setCreateOrgSid(wmsShelfBill.getCreateOrgSid()); + dto.setUseOrgSid(wmsShelfBill.getUseOrgSid()); + dto.setSid(s.getInventorySid()); + String inventorySid = wmsInventoryService.saveWmsInventory(dto).getData(); + WmsShelfBillDetail wmsShelfBillDetail = wmsShelfBillDetailService.fetchBySid(s.getDetailsSid()); + wmsShelfBillDetail.setInventorySid(inventorySid); + wmsShelfBillDetailService.updateById(wmsShelfBillDetail); + WmsInventoryRecordDto wmsInventoryRecordDto = new WmsInventoryRecordDto(); + wmsInventoryRecordDto.setInventorySid(inventorySid); + wmsInventoryRecordDto.setGoodsID(dto.getGoodsID()); + wmsInventoryRecordDto.setSourceBillSid(wmsShelfBill.getSourceBillSid()); + wmsInventoryRecordDto.setBillNo(wmsShelfBill.getSourceBillNo()); + wmsInventoryRecordDto.setBillType("1"); + wmsInventoryRecordDto.setBatchNumber(dto.getBatchNumber()); + wmsInventoryRecordDto.setGoodSpuSid(dto.getGoodSpuSid()); + wmsInventoryRecordDto.setGoodsSpuName(dto.getGoodsSpuName()); + wmsInventoryRecordDto.setGoodsSkuSid(dto.getGoodsSkuSid()); + wmsInventoryRecordDto.setGoodsSkuCode(dto.getGoodsSkuCode()); + wmsInventoryRecordDto.setUnit(dto.getUnit()); + wmsInventoryRecordDto.setCurrentCount(StringUtils.isNotBlank(dto.getCount()) ? new BigDecimal(dto.getCount()) : BigDecimal.ZERO); + wmsInventoryRecordDto.setWarehouseSid(dto.getWarehouseSid()); + wmsInventoryRecordDto.setWarehouseName(dto.getWarehouseName()); + wmsInventoryRecordDto.setWarehouseRackSid(dto.getWarehouseRackSid()); + wmsInventoryRecordDto.setWarehouseRackCode(dto.getWarehouseRackCode()); + wmsInventoryRecordService.saveOrUpdateDto(wmsInventoryRecordDto); + } + } + } + + /** + * 获取商品唯一的goodsID + * + * @param goodsSkuSid + * @return + */ + private String getGoodsId(String goodsSkuSid) { + String goodsId = ""; + ResultBean resultBean = baseGoodsSkuFeign.getDetails(goodsSkuSid); + if (resultBean.getSuccess()) { + BaseGoodsSkuDetailsVo baseGoodsSkuDetailsVo = resultBean.getData(); + goodsId = baseGoodsSkuDetailsVo.getGoodsCode(); + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + goodsId = goodsId + date; + String i = baseMapper.selectNum(goodsId); + if (StringUtils.isNotBlank(i)) { + goodsId = Rule.getBillNo(goodsId, Integer.valueOf(i).intValue()); + } else { + goodsId = Rule.getBillNo(goodsId, 0); + } + } + return goodsId; + } + + public ResultBean delAllBySids(String[] sids) { + ResultBean rb = ResultBean.fireFail(); + List sidss = Arrays.asList(sids); + for (int i = 0; i < sidss.size(); i++) { + String s = sidss.get(i); + wmsShelfBillDetailMapper.deleteByMainSid(s); + } + delBySids(sids); + return rb.success().setMsg("删除成功"); + } + + public ResultBean details(String sid) { + ResultBean rb = ResultBean.fireFail(); + ShelfDetailsVo shelfDetailsVo = baseMapper.details(sid); + if (shelfDetailsVo == null) { + return rb.setMsg("该单据不存在"); + } + List list = wmsShelfBillDetailService.details(sid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + shelfDetailsVo.setList(list); + } + return rb.success().setData(shelfDetailsVo); + } + + public ResultBean getInit(String sid, String orgPath, String userSid) { + ResultBean rb = ResultBean.fireFail(); + ShelfInitVo shelfInitVo = new ShelfInitVo(); + //查询所有已上架的商品 + List stringList = wmsShelfBillDetailService.selectReceiptSidList(); + stringList.removeAll(Collections.singleton(null)); + //获取收货单据 + WmsReceiptBill wmsReceiptBill = wmsReceiptBillService.fetchBySid(sid); + shelfInitVo.setCreateTime(DateUtil.today());//单据日期 + shelfInitVo.setSourceBillNo(wmsReceiptBill.getBillNo());//来源单编号 + shelfInitVo.setSourceBillSid(wmsReceiptBill.getSid());//来源单sid + shelfInitVo.setBillState(0); + List list = new ArrayList<>(); + //获取收货单据的明细 + List wmsReceiptBillDetailsList = wmsReceiptBillDetailService.selectByBillSid(sid, stringList); + wmsReceiptBillDetailsList.removeAll(Collections.singleton(null)); + if (!wmsReceiptBillDetailsList.isEmpty()) { + for (int i = 0; i < wmsReceiptBillDetailsList.size(); i++) { + WmsReceiptBillDetail v = wmsReceiptBillDetailsList.get(i); + WmsReceiptBillDetailBatch wmsReceiptBillDetailBatch = wmsReceiptBillDetailBatchService.selectByDetails(v.getSid()); + ShelfInitListVo shelfInitListVo = new ShelfInitListVo(); + BeanUtil.copyProperties(v, shelfInitListVo, "sid"); + shelfInitListVo.setBatchNumber(wmsReceiptBillDetailBatch.getBatchNumber()); + shelfInitListVo.setWarehouseSid(v.getWarehouseSid()); + shelfInitListVo.setWarehouseRackSid(v.getWarehouseRackSid()); + shelfInitListVo.setWarehouseRackCode(""); + list.add(shelfInitListVo); + } + } + shelfInitVo.setList(list); + + return rb.success().setData(shelfInitVo); + } + + public ResultBean confirm(WmsShelfBillDto dto) { + ResultBean rb = ResultBean.fireFail(); + dto.setBillState(1); + ResultBean resultBean = saveOrUpdateShelf(dto); + String sid = resultBean.getData(); + return rb.success().setData(sid); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillVo.java new file mode 100644 index 0000000000..9ae1591eef --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbill/WmsShelfBillVo.java @@ -0,0 +1,27 @@ +package com.yxt.wms.biz.inventory.wmsshelfbill; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsShelfBillVo { + + private String sid; + @ApiModelProperty("单据编号") + private String billNo; + @ApiModelProperty("单据日期") + private String createTime; + @ApiModelProperty("制单人姓名") + private String createByName; + @ApiModelProperty("来源单号(收货单号)") + private String sourceBillNo; + @ApiModelProperty("单据状态:0新建,1已完成") + private String billState; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfDetailsListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfDetailsListVo.java new file mode 100644 index 0000000000..bd562b1cd5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfDetailsListVo.java @@ -0,0 +1,52 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/18 + **/ +@Data +public class ShelfDetailsListVo implements Vo { + + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("上架数量") + private String count; + + //商品名称 + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + //商品编码 + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + //规格 + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + //单位 + @ApiModelProperty("计量单位") + private String unit; + //仓库 + @ApiModelProperty("仓库名称") + private String warehouseName; + //库位 + @ApiModelProperty("库位名称") + private String warehouseRackName; + //已上架数量 + private String actualCount; + //载具编号 + private String packageNo; + + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfInitListVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfInitListVo.java new file mode 100644 index 0000000000..ca1a9d45ed --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/ShelfInitListVo.java @@ -0,0 +1,49 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/23 + **/ +@Data +public class ShelfInitListVo { + + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("上架数量") + private String count; + + //商品名称 + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + //商品编码 + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + //规格 + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + //单位 + @ApiModelProperty("计量单位") + private String unit; + //仓库 + @ApiModelProperty("仓库名称") + private String warehouseName; + //库位 + @ApiModelProperty("库位名称") + private String warehouseRackName; + //已上架数量 + private String actualCount; + //载具编号 + private String packageNo; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetail.java new file mode 100644 index 0000000000..fbe1316bf7 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetail.java @@ -0,0 +1,32 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/10 + **/ +@Data +public class WmsShelfBillDetail extends BaseEntity { + @ApiModelProperty("单据sid") + private String billSid; + @ApiModelProperty("收货单明细sid") + private String receiptDetailSid; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("上架数量") + private BigDecimal count; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailDto.java new file mode 100644 index 0000000000..57650dd6de --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailDto.java @@ -0,0 +1,55 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/15 + **/ +@Data +public class WmsShelfBillDetailDto { + + @ApiModelProperty("收货单明细sid") + private String receiptDetailSid; + @ApiModelProperty("批次号") + private String batchNumber; + @ApiModelProperty("库存sid") + private String inventorySid; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编号") + private String warehouseRackCode; + @ApiModelProperty("需上架数量") + private String count; + + + //商品名称 + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + //商品编码 + @ApiModelProperty("商品sku编码") + private String goodsSkuCode; + //规格 + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + //单位 + @ApiModelProperty("计量单位") + private String unit; + //仓库 + @ApiModelProperty("仓库名称") + private String warehouseName; + //库位 + @ApiModelProperty("库位名称") + private String warehouseRackName; + //已上架数量 + private String actualCount; + //载具编号 + private String packageNo; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java new file mode 100644 index 0000000000..35625f1885 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.java @@ -0,0 +1,22 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/17 + **/ +@Mapper +public interface WmsShelfBillDetailMapper extends BaseMapper { + int deleteByMainSid(String sid); + + List details(String sid); + + List selectByBillSid(String sid); + + List selectReceiptSidList(); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml new file mode 100644 index 0000000000..a275a55552 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailMapper.xml @@ -0,0 +1,46 @@ + + + + + delete + from wms_shelf_bill_detail + where billSid = #{sid} + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java new file mode 100644 index 0000000000..6d70afce46 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailService.java @@ -0,0 +1,37 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/17 + **/ +@Service +public class WmsShelfBillDetailService extends MybatisBaseService { + public void saveShelfDetails(String sid, List list) { + baseMapper.deleteByMainSid(sid); + list.forEach(v -> { + WmsShelfBillDetail wmsShelfBillDetail = new WmsShelfBillDetail(); + BeanUtil.copyProperties(v, wmsShelfBillDetail, "sid"); + wmsShelfBillDetail.setBillSid(sid); + baseMapper.insert(wmsShelfBillDetail); + }); + } + + public List details(String sid) { + return baseMapper.details(sid); + } + + public List selectByBillSid(String sid) { + return baseMapper.selectByBillSid(sid); + } + + public List selectReceiptSidList() { + return baseMapper.selectReceiptSidList(); + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailVos.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailVos.java new file mode 100644 index 0000000000..5b5987d977 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsshelfbilldetail/WmsShelfBillDetailVos.java @@ -0,0 +1,44 @@ +package com.yxt.wms.biz.inventory.wmsshelfbilldetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/4/19 + **/ +@Data +public class WmsShelfBillDetailVos { + + private String detailsSid; + + @ApiModelProperty("商品基础信息sid") + private String goodSpuSid; + @ApiModelProperty("商品名称") + private String goodsSpuName; + @ApiModelProperty("商品Skusid") + private String goodsSkuSid; + @ApiModelProperty("商品Sku名称") + private String goodsSkuTitle; + @ApiModelProperty("商品编码") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("计量单位") + private String unit; + @ApiModelProperty("现有量") + private String count; + @ApiModelProperty("仓库sid") + private String warehouseSid; + @ApiModelProperty("仓库名称") + private String warehouseName; + @ApiModelProperty("库位sid") + private String warehouseRackSid; + @ApiModelProperty("库位编码") + private String warehouseRackCode; + @ApiModelProperty("批次号") + private String batchNumber; + + private String inventorySid; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/package-info.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/package-info.java new file mode 100644 index 0000000000..5b4ed4ca95 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/package-info.java @@ -0,0 +1,4 @@ +/** + * 宇信通 仓库管理 项目后台逻辑和接口 + */ +package com.yxt.wms.biz; \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/config/config.md b/yxt-wms-biz/src/main/java/com/yxt/wms/config/config.md new file mode 100644 index 0000000000..2b4f8f4439 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/config/config.md @@ -0,0 +1 @@ +// 添加相关配置 \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuDetailsVo.java new file mode 100644 index 0000000000..9e31af9afe --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuDetailsVo.java @@ -0,0 +1,48 @@ +package com.yxt.wms.feign.base.basegoodssku; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +@Data +public class BaseGoodsSkuDetailsVo { + + @ApiModelProperty("商品代码") + private String goodsCode; + @ApiModelProperty("条形码") + private String barCode; + @ApiModelProperty("商品名称") + private String goodsName; + @ApiModelProperty("副标题") + private String subTitle; + @ApiModelProperty("拼音缩写") + private String goodsPY; + @ApiModelProperty("商品简称") + private String goodsShortName; + @ApiModelProperty("商品分类sid") + private String goodsTypeSid; + @ApiModelProperty("品牌sid") + private String brandSid; + @ApiModelProperty("厂家sid") + private String manufacturersid; + @ApiModelProperty("商品单位sid") + private String goodsUnitSid; + @ApiModelProperty("商品单位名称") + private String goodsUnitName; + + @ApiModelProperty("商品Sku代码") + private String goodsSkuCode; + @ApiModelProperty("商品标题") + private String title; + + @ApiModelProperty("是否一品一码(goodID),0否,1是") + @JsonProperty("isGoodsID") + private int isGoodsID; + @ApiModelProperty("商品类别名称") + private String goodsTypeName; +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeign.java new file mode 100644 index 0000000000..ef3490cd32 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeign.java @@ -0,0 +1,24 @@ +package com.yxt.wms.feign.base.basegoodssku; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +@FeignClient( + contextId = "yxt-base-BaseGoodsSku", + name = "yxt-base", + path = "/apiadmin/base/basegoodssku", + fallback = BaseGoodsSkuFeignFallback.class) +public interface BaseGoodsSkuFeign { + + @ApiOperation("获取商品信息") + @GetMapping("/getDetails") + ResultBean getDetails(@RequestParam("sid") String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeignFallback.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeignFallback.java new file mode 100644 index 0000000000..74f7970ae5 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodssku/BaseGoodsSkuFeignFallback.java @@ -0,0 +1,17 @@ +package com.yxt.wms.feign.base.basegoodssku; + +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Component; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +@Component +public class BaseGoodsSkuFeignFallback implements BaseGoodsSkuFeign{ + @Override + public ResultBean getDetails(String sid) { + return null; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoDetailsVo.java new file mode 100644 index 0000000000..b73c900a52 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoDetailsVo.java @@ -0,0 +1,16 @@ +package com.yxt.wms.feign.base.basesupplierinfo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/3/26 17:12 + */ +@Data +public class BaseSupplierInfoDetailsVo { + + @ApiModelProperty("供应商名称") + private String supplierName; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeign.java new file mode 100644 index 0000000000..ea799b8419 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeign.java @@ -0,0 +1,24 @@ +package com.yxt.wms.feign.base.basesupplierinfo; + +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * @author wangpengfei + * @date 2024/3/26 17:12 + */ +@FeignClient( + contextId = "yxt-base-BaseSupplierInfo", + name = "yxt-base", + path = "/apiadmin/base/basesupplierinfo", + fallback = BaseSupplierInfoFeignFallback.class) +public interface BaseSupplierInfoFeign { + + @ApiOperation("根据SID获取供应商") + @GetMapping("/fetchDetailsBySid/{sid}") + ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeignFallback.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeignFallback.java new file mode 100644 index 0000000000..8f8b84b9db --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basesupplierinfo/BaseSupplierInfoFeignFallback.java @@ -0,0 +1,18 @@ +package com.yxt.wms.feign.base.basesupplierinfo; + +import com.yxt.common.core.result.ResultBean; +import org.springframework.stereotype.Component; + +/** + * @author wangpengfei + * @date 2024/3/26 17:12 + */ +@Component +public class BaseSupplierInfoFeignFallback implements BaseSupplierInfoFeign { + + + @Override + public ResultBean fetchDetailsBySid(String sid) { + return null; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/package-info.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/package-info.java new file mode 100644 index 0000000000..39d2e43d23 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/package-info.java @@ -0,0 +1,4 @@ +/** + * 宇信通监管项目-光伏(山海新能源)项目后台逻辑和接口-接口声明 + */ +package com.yxt.wms.feign; \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/utils/DoubleUtils.java b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/DoubleUtils.java new file mode 100644 index 0000000000..6bd2dcc387 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/DoubleUtils.java @@ -0,0 +1,93 @@ +package com.yxt.yythmall.utils; + +import java.math.BigDecimal; + +/** + * @author wangpengfei + * @date 2024/1/24 8:53 + */ +public class DoubleUtils { + + /** + * 对double数据进行取精度. + * @param value double数据. + * @param scale 精度位数(保留的小数位数). + * @param roundingMode 精度取值方式. + * @return 精度计算后的数据. + */ + public static double round(double value, int scale, + int roundingMode) { + BigDecimal bd = BigDecimal.valueOf(value); + bd = bd.setScale(scale, roundingMode); + double d = bd.doubleValue(); + bd = null; + return d; + } + + + /** + * double 相加 + * @param d1 + * @param d2 + * @return + */ + public static double sum(double d1,double d2){ + BigDecimal bd1 = BigDecimal.valueOf(d1); + BigDecimal bd2 = BigDecimal.valueOf(d2); + return bd1.add(bd2).doubleValue(); + } + + + /** + * double 相减 + * @param d1 + * @param d2 + * @return + */ + public static double sub(double d1,double d2){ + BigDecimal bd1 = BigDecimal.valueOf(d1); + BigDecimal bd2 = BigDecimal.valueOf(d2); + return bd1.subtract(bd2).doubleValue(); + } + + /** + * double 乘法 + * @param d1 + * @param d2 + * @return + */ + public static double mul(double d1, double d2){ + BigDecimal bd1 = BigDecimal.valueOf(d1); + BigDecimal bd2 = BigDecimal.valueOf(d2); + return bd1.multiply(bd2).doubleValue(); + } + + + /** + * double 除法 + * @param d1 + * @param d2 + * @param scale 四舍五入 小数点位数 + * @return + */ + public static double div(double d1,double d2,int scale){ + BigDecimal bd1 = BigDecimal.valueOf(d1); + BigDecimal bd2 = BigDecimal.valueOf(d2); + return bd1.divide + (bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); + } + /** + * 去除多余.0 + * @param num + * @return + */ + public static String removeZeros(String num) { + if (num.indexOf(".") > 0) { + // 去掉多余的0 + num = num.replaceAll("0+?$", ""); + // 如果最后一位是. 则去掉 + num = num.replaceAll("[.]$", ""); + } + return num; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/utils/Rule.java b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/Rule.java new file mode 100644 index 0000000000..95fd973322 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/Rule.java @@ -0,0 +1,15 @@ +package com.yxt.wms.utils; + +/** + * @description: + * @author: dimengzhe + * @date: 2024/3/20 + **/ +public class Rule { + + public static String getBillNo(String bill, int i) { + String num = String.format("%04d", i + 1); // 不足4位补0 + String billNo = bill + num; + return billNo; + } +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/utils/StyleUtils.java b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/StyleUtils.java new file mode 100644 index 0000000000..edf2534f09 --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/utils/StyleUtils.java @@ -0,0 +1,89 @@ +package com.yxt.wms.utils; + +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; + +/** + * @author wangpengfei + * @date 2023/12/16 22:14 + */ +public class StyleUtils { /** + * 标题样式 + * @return + */ +public static WriteCellStyle getHeadStyle(){ + // 头的策略 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + // 背景颜色 +// headWriteCellStyle.setFillForegroundColor(IndexedColors.LIGHT_TURQUOISE1.getIndex()); +// headWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + + // 字体 + WriteFont headWriteFont = new WriteFont(); + headWriteFont.setFontName("宋体");//设置字体名字 + headWriteFont.setFontHeightInPoints((short)14);//设置字体大小 + headWriteFont.setBold(true);//字体加粗 + headWriteCellStyle.setWriteFont(headWriteFont); //在样式用应用设置的字体; + + // 样式 + headWriteCellStyle.setBorderBottom(BorderStyle.THIN);//设置底边框; + headWriteCellStyle.setBottomBorderColor((short) 0);//设置底边框颜色; + headWriteCellStyle.setBorderLeft(BorderStyle.THIN); //设置左边框; + headWriteCellStyle.setLeftBorderColor((short) 0);//设置左边框颜色; + headWriteCellStyle.setBorderRight(BorderStyle.THIN);//设置右边框; + headWriteCellStyle.setRightBorderColor((short) 0);//设置右边框颜色; + headWriteCellStyle.setBorderTop(BorderStyle.THIN);//设置顶边框; + headWriteCellStyle.setTopBorderColor((short) 0); //设置顶边框颜色; + + headWriteCellStyle.setWrapped(true); //设置自动换行; + + headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//设置水平对齐的样式为居中对齐; + headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //设置垂直对齐的样式为居中对齐; + headWriteCellStyle.setShrinkToFit(true);//设置文本收缩至合适 + + return headWriteCellStyle; +} + + + /** + * 内容样式 + * @return + */ + public static WriteCellStyle getContentStyle(){ + // 内容的策略 + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + + // 背景绿色 + // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定 +// contentWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex()); +// contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + + // 设置字体 + WriteFont contentWriteFont = new WriteFont(); + contentWriteFont.setFontHeightInPoints((short) 12);//设置字体大小 + contentWriteFont.setFontName("宋体"); //设置字体名字 + contentWriteCellStyle.setWriteFont(contentWriteFont);//在样式用应用设置的字体; + + //设置样式; + contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);//设置底边框; + contentWriteCellStyle.setBottomBorderColor((short) 0);//设置底边框颜色; + contentWriteCellStyle.setBorderLeft(BorderStyle.THIN); //设置左边框; + contentWriteCellStyle.setLeftBorderColor((short) 0);//设置左边框颜色; + contentWriteCellStyle.setBorderRight(BorderStyle.THIN);//设置右边框; + contentWriteCellStyle.setRightBorderColor((short) 0);//设置右边框颜色; + contentWriteCellStyle.setBorderTop(BorderStyle.THIN);//设置顶边框; + contentWriteCellStyle.setTopBorderColor((short) 0); ///设置顶边框颜色; + + contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 水平居中 + contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中 + contentWriteCellStyle.setWrapped(true); //设置自动换行; + +// contentWriteCellStyle.setShrinkToFit(true);//设置文本收缩至合适 + + return contentWriteCellStyle; + } + +} diff --git a/yxt-wms-biz/src/main/resources/application-dev.yml b/yxt-wms-biz/src/main/resources/application-dev.yml new file mode 100644 index 0000000000..ac0d002f42 --- /dev/null +++ b/yxt-wms-biz/src/main/resources/application-dev.yml @@ -0,0 +1,30 @@ +spring: + datasource: + hikari: + max-lifetime: 500000 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://39.104.100.138:3306/yxt_wms?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true + username: root + password: yxt_mysql_138 + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + # register-enabled: false + redis: + database: 3 # Redis数据库索引(默认为0) + host: 127.0.0.1 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) +image: + upload: + path: D:\\anrui\\upload\\ + url: + prefix: http://192.168.1.106:8111/upload/ \ No newline at end of file diff --git a/yxt-wms-biz/src/main/resources/application-pro.yml b/yxt-wms-biz/src/main/resources/application-pro.yml new file mode 100644 index 0000000000..9c2fd919da --- /dev/null +++ b/yxt-wms-biz/src/main/resources/application-pro.yml @@ -0,0 +1,27 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.46.172.184:3306/yxt_wms?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true + username: root + password: '@anrui18033887500' + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 + redis: + database: 3 # Redis数据库索引(默认为0) + host: 127.0.0.1 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) +image: + upload: + path: D:\anrui\upload\ + url: + prefix: http://120.46.172.184/api/upload/ \ No newline at end of file diff --git a/yxt-wms-biz/src/main/resources/application-test.yml b/yxt-wms-biz/src/main/resources/application-test.yml new file mode 100644 index 0000000000..34ca76f836 --- /dev/null +++ b/yxt-wms-biz/src/main/resources/application-test.yml @@ -0,0 +1,31 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://172.18.0.4:3306/yxt_wms?serverTimezone=GMT%2B8&autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true + username: root + password: yxt_mysql_138 + hikari: + minimum-idle: 3 + max-lifetime: 30000 + maximum-pool-size: 10 + cloud: + nacos: + discovery: + server-addr: 172.18.0.5:8848 + redis: + database: 3 # Redis数据库索引(默认为0) + host: 172.18.0.7 + jedis: + pool: + max-active: -1 #连接池最大连接数(使用负值表示没有限制) + max-idle: 8 #连接池中的最大空闲连接 + max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) + min-idle: 0 # 连接池中的最小空闲连接 + password: 123456 + port: 6379 + timeout: 0 # 连接超时时间(毫秒) +image: + upload: + path: /home/lzh/docker_data/nginx/html/anrui-system-ui/upload/ + url: + prefix: http://anrui.yyundong.com/upload/ \ No newline at end of file diff --git a/yxt-wms-biz/src/main/resources/application.yml b/yxt-wms-biz/src/main/resources/application.yml new file mode 100644 index 0000000000..b82281cf13 --- /dev/null +++ b/yxt-wms-biz/src/main/resources/application.yml @@ -0,0 +1,43 @@ +spring: + application: + name: yxt-wms + profiles: + active: dev + messages: + # 国际化资源文件路径 + basename: i18n/messages + servlet: + #上传文件 + multipart: + max-file-size: 50MB + max-request-size: 100MB + devtools: + restart: + # 热部署开关 + enabled: true + +server: + port: 7301 + max-http-header-size: 102400 + undertow: + max-http-post-size: -1 + +#mybatis +mybatis-plus: + # 配置mapper的扫描,找到所有的mapper.xml映射文件 + mapper-locations: classpath*:**Mapper.xml + global-config: + refresh: true + db-config: + #定义生成ID的类型 + id-type: Auto + db-type: mysql + configuration: + map-underscore-to-camel-case: false + cache-enabled: true + call-setters-on-nulls: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + + + + diff --git a/yxt-wms-biz/src/main/resources/logback-spring.xml b/yxt-wms-biz/src/main/resources/logback-spring.xml new file mode 100644 index 0000000000..1a756cd90a --- /dev/null +++ b/yxt-wms-biz/src/main/resources/logback-spring.xml @@ -0,0 +1,50 @@ + + + + + + + + + + %yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%green(%logger:%line) |%blue(%msg%n) + + + + + + + + + + + + + + + ${log.base}.log + + ${log.base}.%d{yyyyMMdd}.%i.log.zip + + + + 1MB + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} + -%msg%n + + + + + + + + + + \ No newline at end of file diff --git a/yxt-wms-biz/src/test/java/com/yxt/wms/YxtWmsApplicationTest.java b/yxt-wms-biz/src/test/java/com/yxt/wms/YxtWmsApplicationTest.java new file mode 100644 index 0000000000..4f4f02fa21 --- /dev/null +++ b/yxt-wms-biz/src/test/java/com/yxt/wms/YxtWmsApplicationTest.java @@ -0,0 +1,24 @@ +package com.yxt.wms; + +import cn.hutool.core.util.IdUtil; +import org.junit.Test; + +import java.util.UUID; + +public class YxtWmsApplicationTest { + + @Test + public void test() { + System.out.println(IdUtil.nanoId()); + System.out.println(IdUtil.getSnowflakeNextId()); + + UUID uuid = UUID.randomUUID(); + String uniqueID = uuid.toString().replaceAll("-", "").substring(0, 16).replaceAll("\\D", ""); + System.out.println(uniqueID); + } +} + +//do3KW8XIUSyu4vg_zTXdm +// 1727231267909320704 +//uw0AotdmQTlIxKlA2V8_O +// 1727231437887668224

  • XrAI>ititf=Lp zsMlT^WiC$Z>#spIlKMd$p%_k-VR%qtYaLN7)an_e?!rT2GzOk7eujUs81`9)iR8Uc zBw6^01f=taHfX?i+9ll8i^Zsxy3!%cTTOlsm*>&0*dAcqN= zh4z3CK_OD^5SQT;1fQ`>NU_;Dm?V446GC@#>o^^FV~#_zh$dv%BhWFFzS6*SZ!1a` zX;uZYv_+*76_};bww84A@TFleoZ0M=j^2u|v>y zWXHFIj$VpU`M{*LJpHV1#ZwNd0E{E=o`3&VtLp^ycB23v=32c8v#$oz2jfdeaO7vr z3E|vzG-!Gw&;cPH=fkh)l~q$OK3U5d(m&iZEM^1seY&2lc~nI`6fNp>z!JbZpzg3W#~z*%1-l?Z#HKr!V{8)|B>sa(5}4en zvr09g96F*!y6g@dfT>E0sq`hbrHW~DCtefOUbGJ*N99i58KP;QXGlQhAYL=D!1U6M)9DK z6|`@SFZxdfP-P1F6+Mn?v1WRuk~s685~!*vN$D~oXyW)ac0N2daO``|ZJUb`bn}&- zd@1>9>6k7(CMD9+ho`!I6n()6rG7Yg=2IIe9QEf*1bjPsWaQY@qw%WZG2ZSK69mroGdOk16C}5m1_B}z8>UHys1*W!TLp?3MC!% zjIb6drjj0ksW5MTgBRF?czK+}R+C9UMwcW4Cl^u8g++A0;>_M3UcNv(0u zgT@2N7ff##lp!a^AifZ36}kksjJv1yyNta%+}1Z!EU^J*Q_7rhTTb={i*=H0RG_r? zRcMhyo)tEw*f6*VOLs?ePsxMn`3d_=VkOb@=iXEt0wM`-$AO17GYt!dUPejVeO&VM zZ*eu4_Dv>A)S1jtWF>ACF=d5cT+1-y`+ksIZ)QitVOAqXx)Wz#;My~hA#YGqju`QS!;~uOO&b8B6V%*LXQYBh6|!uz6U^lrh=V?}>Wp8~pjngnZ*P%s zRG6^q?ROZ9Nm^>b@u6<;I!+*3^e7Q$M+OBlr*|pOXWtR#d`gJF|5UfT0{L>Ca1ljh zZZB;$foLxLwY%F@pK}42jcLZy@qBTl=le?L`4dU1duJiAyumyHVcc^7{0BWYtpF*p zvS7`3;$RB0Nh&bQl5D-~D2Nn6^6)yDz}}q>*{?It?g-RJf>g(+&}W}cM&88Cc)V%! zR?vvR!*iX7EF;&!;RAX5Tw*ks0&s{seKda(vXC;sn}CSkE=_xmOpI8x%zP5J5GD)g zzplVVGSJ)>2A>J>p0@T}Jt-&lY1EM$D70TqCqZrNLtQ%_8Zu9+Ln5q(F(L(VgGTU= zH`iZdG(k;Wol6M#FkzY7KD|ba1elfCJs`uYxl-3QW)AR<*qe z^%pS>lZ8%C)VNmlb357bF6dt@8OL1WiY1h}`qaL@_5zozI^y`leRlRl_!om zS{oY!!yTD%(o8q$Yf^2-JWGk+x_aa+&8D{lU#UvHEdut703;??Oo8SZ z(*_2a0yH@%o@P_w$C|(}IBBvvGZkHq>Ii*p8gVPuwSsV=L=>ueU{6#6f0;gnU1Y6E zk;%IY!lDiFg4opKsOu;B86Gw37o8eyK(pKlU&kzf=67_*7>d5m59;17xP7_0_r8AmBG}N>eRX|B5pa? zWutDXB-3)+W6rf2y2L_u<=iNb=q@IuegR9{)cgDWnN$b0EBls|77u84>+BX4A}KCz zgNBT*s4)j_vY3>?t(Z-Up=M1-kSdQzl{iVWDp2GLz7^8I?siC}DM1tsr%^Sj8UHZa zS!9 zOoGEzY|ecgyHqk@PjLr|N&)M~7YSn`FiB<^N*xymHPe*Nk%jc^*dejY-$1ySByogv ztzk86*BJUr5Z9hBAFkFq-xM{~aOlOsmo92wFbxZAUciSkXxP)GwzslNJgx;szJ!Ww$(TUve?mo89v!6N5nxz4_O<~<_`1i@i5vva7 z*~QLlH^@-~6hBJc`gc_A-}44%UY^gXGi;{w@xa-(KZPpPPS%I6h_(i=gzO=l;n+Oc zxcTy39v6DwIUYzaL6a|TBXg@CI4!ob1UTB#G^$iQZ594xmty~Vt4NxyvwO>x&Z?Z6l*Y=B{@UkC&a8O?a#4_AvXBL&h;&Cc)Y5=Wu&rV9!i&;Ar`} zQPWCJkcwN+Vumg5^Lr27zi0URFWjhY-ZOj&*Z{zLS>=zdf}^>CgNd<{lY@ng*`Fj) zrlF^VDuLwNS^9)f!fl_Nx~@}V29n&PljK|=M(JAl%hZ*`lccqIK_aLzn?DTu6^(!+ z7*!rz4!RgB75srAWkDwE8D_3E0X+5VdE7E8Lv812*1@TsD`MtcNFK5tsDTuFG@b8Y zaQ0d#+{`a0qpHz2t+(+LwP)T)ijYEKX)xypvACVi*_RXc%w!QSKh`oj-_*GI8U8NC zUW!unk3TS(^!KvD^I-h>F7&%14D!uYF$qzk!Ra6aQ$Q6&*q?c4qHyv@-(Ge;y>v9? zykUv)SQl)Kkovk76}Y+rZCdKh_jsKl#a+$1bPT?aJ%PSFF?MSDxQUzTrXXC7rE_Qb{)4Ov z(jF=L0*P!)SGzFtp&`N5ADna@~HbQ8s$-tetyt>r<>DsZ!-MP*D%$3u7 zO)pT-?#li;Ozeu!Ljaj3A2JZ`-Lj}l2KW*Wr-|`oRjZmA1_s%o1@q ziX155+4OT8Pp6v1Pu1CEovVak2b-jq1zjrBlThlJPfnNFD+}|538=SuaxRYr+fJB6 zAcz{#iZJ2=3|SqL0+yFyO~F3>fhdS62(cLtGDQr#Xo~Q?k_ZI};}(Q#NZ2BiNIg6- zv&NQ@XzM zofUX-Zg)_X_{JY`NYkv@nLgI^(A%XsVF=E~+bx9##?UsVmZM9RnLXe-i#ekbx;}7V ztgG=KBq(?T&S{ap!@-m&JhllrdXDwz?Z^lej`}fCom0p=*ajAstVH*l#05ihvPLB{Hx{?O`hSz3|^jQ$V| z17ZxOA@|MKe?QT$s1ez3+{zN6)*xc4+R%Y9r)|qHNnn;L5eFXJ z>z15f=U+0PEB4As#%X2eAR$j*t-xqk;&#O>R#BSU9YlI2_3J!jwH?+fv6B@Rv+7eK z8^h}hZ_c0BtL!E?@v2FX`H!oABw{leJ#z7ZWZOBBEzdlP`;`@!i|`Uu9gY)3QoOQS z_|$wkCgf?L=HplqwaN_3pgw+RPOR4~F-d)ss%G|O+}2QRy=OT_!TL=draMWT3W4$I z@L_0_=2J)B*3peLnnRr9xL-(Et{91IO|6nV7`WPjD5!c@-;`;*y_rvpjfu$&9VFfa zkB$ly9Am%=j?rzz#Km{}D1l6N>+>*6;R5EdTE@eJx{oeYB^Iw-scJzXBUZ76D`U6v z`!X8KL^7p`r@nx82N4_0OoI|!G?fsXs_9)cC&y=l^($VupX8mgW~-d(N(BK7R869+ zve7HiklKofsEsUYd0-Wh!9p}}%w&@@yvMC(*xQA(JDtaO@$r~&Ss@EXf?;lfrF?dl zDBK)U{OtkwajcI(ph>@wFF}&HWn(Sl5%>6TZlnM>)m6uy+8H%xUzITTQXDHJA;f4z z6*?P^vrrkWP3^QJOD(a(YLCr<-6@T#e+wQeDujAjOrVRdxZO-&@f`KkrV1|mtKjo- z<*3%LVrXQ7AT4*N)dzLEUB0BoU?i3Aj@VA;0T^tB64MA_{h6hYgc0DW>?y;aP%IfN zY*nOtxXEqH!kFOj;ICJEJ|no3Y-yX^$83KE@VXQ#US~84)8H8s05)JHk~86W85$y0ED7Qr zzesO4uS28;9G>`Udr!fYP8f)t|@C;P7f=y zTP&eKKC0ommwTDWW{XU!G%yuYPP(j&)I~ypZ2J;EipK z-o28YBfXKWgUKH|xc5n~|2DqA2QFSf1*u*JwBR*}H=$wA^!$~Opa!rc9uA}oijLsz z3RpG^iQJXfc8k`ZG2yYzd)uQNDchs%6?wK*vaE&tEQA!G#MmX$D%o>CsXBz>ua?Di z*&$(^0HMh{Co*)JWZ1Cd4Hn%V5OgpkTdC%-bypoGm|WFhKXp)W$-Us6e{5BKB*mQI%C7>ze*FlyQ`H}q$6$EYigc4G8nQmr>>n31a}@umP5+)e;B0Qxtbd0e_j~Y&^mq6f z*xCITeebaQ=aG@nX|u$DG;jy%{=wfNWx)hW-0h#fJ;Xq;7j^9;r5ra~-SPgN(xj|vv z6vIXbMO27TCB5l-+*#oPeke!4DB&92Tu7NSuJXP1^zu;}eOB~GQV^+&7Mk)&n1kfY z^2u&7J$(n3Iemz;h=6_3Z2ExiU}=c6Lc{!|U@)fS;2LCbUy3kP`J0K5ksu0@;6NCb z$2j3D|AB^4pd)(Dz_5BjfC2*acN?n&vIdhr0=3T0x0kD%+apQ4U0i}L6*-z+2LqyA{||uwRLpMd3{caDhzBZ_*S&N-4!hn zS7}okJAJrYbeS1IUl32C?a#I>IBr8>HheDAMHtgc0USKDk0!Ga_JTr)4Qw2#RP6rG z9edUCXTus#SleT|^e07ipqXjwh*tFf=!W|p>eZLjru6SnM}GIT@00I;^R&*6PPSkE zi}wG)IslL#KmLcW9ekfE6&mJ|NxR-N=bCi^yU5Nyr6QGS6ii4Y$wavDWf$5zUl)mu zJ=?nCJ!|)Rpb|ans>e#C;a@jew;xt!AJPHI!e?iI$f_BoC(NhpT3xj8k2CP3)7)xRZ^>8FteZ{p2vuG~jAD=Y86Xu2HNa?CTP@jjfb)UZ zJu>ixx<={P*sLLTaQGnk;p6lEO%H+&$ZA@#O&XL~Tv;tPT=A|(>*`%CnFxC-V^;s0ec?{_`Fk7WI&X#(#5{}cZJkMMg6COzcTi}i~gR# z`AhVi@gJhUr*nSS@UJ1}U-AGz+Px=d`Uz>RCr$PolU4EM-_li^&LcE?jwRi0?PDVxDZ_EPQ}6ZKu{NA1Ou5x$lQAa zE?gKPArcpp*(njsCJVvo`yMWIA!t@+H*ZKF0g+@O=t8(XIE#P-hSv|A#oRtp_3lsK ze*IHbeX6>;yYBM6`Z;~h*QZXM`e_FKCp56U`9v55t6KG*D)Hz{EzMu6Kx^)iDRhL$f}J!C1n+cf@Q0LN)Mx;?a5W-zcc@Frz!#Tejp^4s&% zrto#8e(zyfdlNp>2~8LUf!&5QI39wR=`}3N*}-cJ@RkWka&5+#j*j{cOfO*(-ekpY zX$G;{Z1vsC^bQt_-lQ0+9#64*1B+~et7P@iLu-h02@AEEH0BnLZ@)ItdF! zf{o8yCehhzbur9#Sh~pmHqF;`dbyxeu#lwdc^omq+q#+8`?K)^0dC4dR#dL5UZyj! zwBb$4fFQ~WcW$}Bd01RF4275JQXjf`uYo-`1X!degXBg3QY_ zxF$pi79xRrmteDnSKEm^X;>&+A$7oI%Sf*E(^ev{78bGun}MmEYeuvw59Q=S_A;VM zSjZA=4GwkLG(Z>ovYE&$goTn?l_R2EG?oi8lf{xX-v1ITB;Ld)*ji!8w3pe!Lgh__ zmRdTB(Tar}>y%_7B20MsR&fCfQG#u!HV;c{2oa48>vw+tCQe2UiuWw7fg)af;u|`% zSCcT3Y;0aV-m|m@3^gp`-A_jozDI_|v+=UY5rsmncv$)c%lee3hov>Mn(5f6XHkis z`S>MuW3~4zW=N1|)c`DU7$pSJhhld?!3RZaSDmxZ?qO+}1c~l-V3BB66!EagYN{jUJS-hClnY{dSX{6| zM`ZA@bi`0Di0NT*!3rIb!NbxKL%ATPhs6aebVLT(qr|FTMe$STjsTz{rtE&)FiMot zCeFaZ9}v=juT$v#2J&5HS>@CXMLJ%^8CXvg z;I$OsUejBll*TPnYeU|%bc0$COE>J~gp?i@C(O_dAqEEvKTHQfD(;@;W4WtlqKGl5 zpKVaE$R@0)mE54cR`2T1%RMMqj2wGuK!QxwCR1IR_EpLZ1{QIaJ6Q2EQr-F?ydN%- zuel)faA27qJj)P&?}E}5W!N6YP^?E@d^oVo#=l?yuaIlde1qpV`=v7vi>AUYR@;Mx>i&Mv_LrUfll+lOT~M&iC7U^==kGcOKk`7~`Grq0Xx)n^$pQ!D2WFu>=sH+|)e z;RGx`-Cy~R?1mw;uy7$N;};K$mM^nfNgWmjFC)T32r#}RX&M|dmd*j$=L(;qVzZTp z#j4%4I#Y(F?u4cYlt+)>DFdb~e(|tq+0SYva#*jBd04F4U8^(Wu++vc2rq|=P#6H@%bNM_W=sh{iPzX?KaH-@aG6{WiQ9V;8hQcmi??&QijEZbO^wY|H}VN-6iR7TbsDPsKYP;&Sn9;2_`ipxnHCY@#KY1|hc;@vF${TFY}mSS zA0C#*DpYL14?~Iy%N6&-P&576s_i|CElqFwSxyg*8AI(&;kM`AEfNZ2=GHU5MAjvl&vfK#2D?Msa*XQN`%fVt;Ru4=#u2O=2Yt(;QN0e}xvZ|2Lh zVD*8lo3AibEi9PXC%c{fmF?U|cpq_eBM*2y8~?XT)?vY-a9bq;`{^V)dtut< z1Ar$hjQR+X{bsT_dofq9=@sxFg;DYpZ?ovEGa@^gEY8GNPDGgtS?>Zs)y+_4vi<`A zc%XjiHz-)*`S>M3cwJ@;$bXr%?ybwT`3M=CPVSujVe>bIx@DsMD~ysa@P8KFqEH~~ z|H=%W?SKJ1P8oYHD{Iw^5eK!OMfOlRV;_ch&c3p9=i^fbpt5~p|MDFLNK4-6wZz9cgQiZTpOt7b1^Hns|$&c;W&7yTfEwIj4pSoq2vx65I;IB36Zv*JMx*nDa4Rs3^^I&^eDqvBWLG3lu zhG&rt;B(K50QV+QvP&{n=tBt>-j2+724ya@%gSUkW~pXv5&m`8HRFs*|k>>{rJO8-;?_g*qiR?ph7$ac`Da$;=;f>#*gHfMqW z4-w#G5+y%#=~*|j0wRBruZr-1vA+Z2-@+()K}XjA0}05?=t6uAR{#J207*qoM6N<$ Ef?DaWY5)KL literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/仓储功能模块.jpg b/yxt-wms-biz/docs/sheji/仓储功能模块.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01cacfd2c4a2b7da30a62ce9abe386555ccab9fa GIT binary patch literal 150573 zcmeFa2_Tef-#>oKnx#SZZ4^aGS}bK7<=AqBiU~0-N=OniGG;6xdpIb{zEnc8WgWXp zvV}s%7-i3lm?mcVUCw!*=Y5~f^Lu~i|32q=w}0v`UGBNNmhbhwKHtxGxmoX66OiCB zV>4rjjg1XD3w}YYQOFQt-?VAtH~8WJzd3n0IXO5udAYf{c=&nw`T2PH_yo2H3kqxz z+QP>tC?+VhRYX)&lpiK8AtoXrEFvnh@enq4@EH!y&77Q@MFjW+ME*a2v6>(u9*#p? zzU*w_Tj;HV6(uY@DFC8y)_aFSbpfk6he5n|b-b4V8k>CN_5VO&shSy#{v& zf}cYiLY%_e_8;NeYJHA-yO+p;;Dl@*g`;K7q9^*uiU-eM582EsCN3cH1&KEDaTy}Ny_VK;phxWf2dMhkE;&x?u~J=ZSn&byATKGw*6efN36Ne zd2QW(AecwwXhL>b^JayEC&;4bulMnaDXJ59P&S74>&X7tz(W2*Bm3*X{&id<5I;K` zSUh$i2mvup=0qt&{{t>Isppn)BbA>+$%sk0!oo8zFFv$G`&rji)r3{mpUAI>i7PDQ z*aWNe^KkNBH^IHEr(3b0GKW(vsNd`|dk<3%+kF#$TbGUa;KbKu27uUKQ?amCx-^S4#=5TauUFj{{@-ba;7IfBJjUkvk)XN?7{XOxt zidvmdS$PxlGBEt*8|Zx*-c{A)I7Eq}7ELs~^4mUow}I1hC@LV8x3j#eZ9I zxe^_c$pR%Gtu?`d;(Qru?JP*}?Aw(FUgp}6Eu|ojxHD?pp>iVFCB#SKh2D{q zubv*}wA_7!JK>Dh!u&eI6;)1XrDVT9)A;BK;rK{+b;(%Fn44d}_ntR5NxHkKa#Kkp z79^skdt`kV#$-^}Wg;3*J4Tl*R+wwtMHY?eqONQ4i&@yW$UVtRn3k7N`ZSSfz&-R9 znNF8u02kG1)NQ565kv?`oX~KMWR^iBRP^>av>#iGBBb!Gi+Rel98j^ z6}Ypn;I#h--Oi8UqU?!13ftM{T7q;9Ef_hvs3*)Jyb$Ja{>X?EW;c0DDBpZF&c%Ok zl9jW6)#$>@Wa_z}(WI_J)6$JGp!5A#-zVfY+qj`=wJ9xkm*rT_+vg+iGJ!l?NOQ8LqyBx>rS-vXQphHCvIfI*dk6 zEVaOcS&+bICLA5wA$DzMt)SF*)QV{qb>m+*wzt9KWkXVx1*mShx( zI|^g8eiDNw->80Khq#4N^~yKNZ&qhhigT#*4GcLG+g0Ph+f=r9-?jZt?L-z7ogqXq ziK{o9=+;7&)l!a!D0rA0GsEF{YgJS{nA^gwj!kX4b`4$HRVwI);=)K%+^I4386&M7 zs#|iiMrqrd>yPM0`aUwd((Js|p9LLg-zk}QL;p0#ru-m;9rGn0IbyJrX{C5%sA3;Nm_O)B_Ia z#<1%dhiQljTx7K^QhyIQBYsjRTGY8J^+dVZ$d2=ToO`yg$zyGnm4fv*(-Dn~Mtx=U zB~r6C2UD($TyW3VJ^y9lPaavxV@nANqm`$>$~*URzsGK&u%HO+HrMhwImw|XzM~R* zoy$`uTYQs+FORxsD`az5Ki3mLBNhTE>>U|;6kMliz4;`2k*ge>($0*|v)8D&JoGfz zbHw?KIAr>moj>ToarFEO3*wnWaaCFz?IhxwSrFH|%YII0o}ICu=gZe<3pUju#&vff z71^Ip$$e01LR^3gVty*GqmgjAG;yQ1NGn=Gk=gaDm}5g-{BswOQM&esyG8MDn>;kU^=9gA4aQLc72|=k?&)=-DWfvh4_{tj0*E3r9ERa!Wa;`-v`DD- zQf^vmtG#AqAzIsA2VF4W%Uz4pzKm%JOH&u-cmB+qj&>}5(8@=BN`}Yk+E7js7u!qQ z)VOBk1fq<6dUY@I>5ALm_ebZMCXm+6cZbX+nu<#8Yd*c4C57V9#Zg3y=^m7mld*I; zQJU{#?eQ5Wnfh|i%2_c5o>cJzuvP4NCWW-EN=)%tkZo=JNGoYeAvu+Lk>c5g;5l>p z18R0Ctn?$JFn(qnT}xxJL1 zs`jOO3cBCCh4gmFHn`zXDl}TCx80`ay4lWJ*n5Dy#uF$>CuyMtcJ4Rqi2Q>F>><;pH?#`qV*ILg^SAQPP9Ix&C zK~15}dd7!KLXXg5JtjQEn8I&${U*8U->Ma#we#IE@E$vGjj|c`nRsGr3}qndTL6>S zhy`s{Yt4L*=ap@j8S{OfYB!CgKgP;@eq&~Nb2a`Jp5GU3 z649tMim|6~-+nUCnlM@r!Hn|p-!2#~5w`=r?+S)k?G@tH4td=~EgJDL-^H)cAfXplfV4s z=Nac}*sh~x_e@?t7kb*f$26ajMzYA_7qAdnA0!0qqEf}cml2qMWJjMO_*`ete!BcmR z$gGwgU_94XLAL@d)r#PEV{+pwpAIeQA`4vuN{i|1esR}ly0$wD*T~cJv}A-(N5;nV zD({zngXt!8pk9P>-Vc6IbbpiOk^5Lta?j!i%CV*P%*~iB&SdduA5lx0nR51`k>U9S4P=9zx$>)L?)KPSZoV@)4TtTyW4aJUaWBk-PjZM zo`z~8@X}TI-PPq(R0^E*MuRXfE>(N)iac)I>Dam350bdhsgC2MMdBy&^tTOk#;^YJ zR-E{uzW8zRgNTe->X^Tg06s-rcWUPn#>)WiYmJhm^^bO}nJf~?eyxdgON#2Jc;6g1 zWVPnis;BLTVnQyUiD5#a9!{slq_HO|sTU#9@6l$%2FkhfwkLypK0|n%LW*=eM6Cr|FupLCKB-*cBDm~1|#ZQf6m2vNi zALC{fE7&T3hc2fYg;>x_WipBpya&H>6zO0flNztif<)b=Fxt4VRR;vDvh~0Rw=ag& z$i>`F`qQw8lzzGNJRM}oOZ`Pm@VYNXfjr%!_O860S}R)-@AuGM+h!=Y2xaPmf9s;v z`^n+n=%<95Lp{8Qta78)i##yNEQnLj0$&DncSK*-$d7r05irmz{#eb*P#pV~&1@7}KNCvG} z@0!a9*9)*CPrVxLUpK5d?E)b7CR<~<*LlbuTseNBh{8_%y2v(J8if#U+^!Z^Dd|HZ zG9**_pRY^|rD%5VvJ1wh7OvdxUa*U~ACNJ-{Vp5F%HU8QX z|AfIf-O4WPR`eRFW2CxGN9UgE`+CHrUB%sg(cLelMn_-OeHo0ufBfbJx#Sriwr?NS z)zPqH6s-jWNzZ=S;<(Drbj!(v%2ov!4>q zM`=;4UA)8K^EcCa7|Fh>DxI0-S05BzZj?@>B4FrE7CYD5?TgHwsU$x;OTFpi+0@*e zX2Y9Dygsc1sWUm9&R~uWF6yh(GAD)_ipSk zwP(Ql^o7ylt!p2{AMr7AorX)DO?}><`tqsm?v7)3j+|(F(8?~eoWaS6^(~5r&*23d z73ju;8aOd`&8P1PcIZ=8(S>)ne>&tX`Q_fJuj4hJVaK2~gagGXnaDuc);BbSE3ed< zG}cRZ%$&2?;}~JJFYn8Y`*aUYsU*SAeO+y)wwsP}X`~n}f?e^^c8;_Ab-W~k`q~&L z^-*8vvNkeuX9U%UhC1hw`(gg2OryqN#k+J5lr;c)!s5^I^nZSJ`)ahIrcjp(lvlFlRGeEUee0U#VjU{ZNony3 z-C}SmW-W)qhFOVN{Kh?6igzi}sD1t{5f?e)R@|P>nWo!%O)FbIs8v2DMDHQH0%`b` zS}~IcW01gtT$Z?Ig-Roq-dFOdExb<2a;W)Y#b;%%HVz41*N!^P+%^lgFMi?y3)!%)-yGQH=h-6_UnqnIhj>?Pb^1t# z8PNjs>4*AP;So+^mE?@DqMxd97eX!8`LpA#)h`-)o=o_1)2m~5JWypWdYj-9og{?V zSPzLHWt8Cg*!@_sSVkdj&tm82#o-S}yy?dWhiO`!`_Xmwl<@lrdrr^-Y^2n#l^;@2jWAm%VF{~Sq;d%Pr*Jl&Qd;EFNH`j+m&f+}q#=tXyPWE5U(9)HDkLvtZj z6i00(tEL9w&f%j|Zj=lokv9$y+{C{?JL+o_Prpvm*SQaI8`;>%D3@B4k*j0sj}UR3 zXK3D?f;3Na3#s>4_YjPuRtr2;O??yYUm?YKoV}*)2hjqkZWQrgtRS;fpPvG2LxeS| zr*-qS?<~8x&s533Wa@N`7o$Y0)fu*WR<1rY=^b;xNu)fbi&)m%2%`hyqUQ+N8IO2Z$zqYToYN=Szr!1$x`CubzR9l6Uo)_;!cCBi%tZ)#$caA3Q||o zFMsTQT?bRayFE^17c{zwZ;kctL<#StaEE_x+y(ewG~vj-MUB8c=o@b>t~%`0dFZ$Q z14oo$=T4r^SJ;cd_{b~O3`e5CNv zev1o;+x+g=Yr6bZ55zo6nR&hWOhPZD??myf?#vubZPm7j?QHGVnivlE>Ap#@jkl)A zl0Fd3cNA59sCpQg{9)Kz`CKn44O&ZTgNtjZ!rHXfZ1AlJDR;BWr*M~D$##Kh9F&^x{cfwsP=%*dN6%aBF z+lOOU$B*a`#j;~hRo|T#AEboON(G^t@EACs&ZbW%1 zeOGDl*G7n<+8rNx?yZ{VXHTJR2p9Bc=S!DOJ?k~AHp{#8*O@Pc)#4(sJabME*&?he z`l4L4SApw|tm@>==m#ggW!vc8iJgj5Nr~>gntfG4y6_47LT(;i51dPI{(0?;O25ah z+RmDO2VEN#-%eDyieBqb9`fa_c>`Imh`Lk#7#W|LJhZOKsv^yY)l~hxLjxzC1@)*e zkG7RvX?ym{Tqh~%enx20=$LZWrsqrWSvggTaC1H_z_yb7A!ZKy{)xX+;DVvT$LiRK zloDecdL1y+UUfIrt+>U>okXn&rpU~f(=#bgO1*U)$DPJr415?L(;Cm1ywqi`;&(~E zl^sGOJA2;soS~?OwJ$aIMCvQhP?LN`VOlpR?pmJtV?T9AS|-%gSM!>o)GjNY4Svu% zm!{0#jc~CH)9&KgaAPu&Xs5 zL`M^i7E2y^7C4|0?N;ch={K@c35&8EyQG+Juh@tvt4#!m zU11wbeW^d4wt#Sfy$}B~fxNBjGHG#PQm%$X5TZRpfA-zAl%QISY2)CI`*7gl=(U<2 z-p5=}sb5ZzZZ$QFhI))~qj8cf*=Ne_N8N6Iyjv0O-f=NX_ryivnt7|(8s}rzHQ$CLTKwr0vyQ1q>j!%VT)h(#8c&rvf+v@-`x$QF?m+ylRegDM?9&0l zOLu{KYv8w)`00enx@BTuEz)sv{sDH>Udf5hX-Qy!lO+YRH>`Um#t_N;mAO0+a~N?z~* zWb1zBP-dB9X6JghT02u@xI~wYVq(H}1!G=Vu3#o{SjggO_(iCye+yFa`WBT@eKDGe z1KIM{VnqY4Ln=OYm8XgD*zKC3NNK0S71Lb!namUJPxIJCpvoWo$A4?iMsyli;Ym*? z{EIhKF{ME`_jz^H^7v_`$ekfJyA-c0U-VVr5WE?pW5u0J-$kpOaL0u;!lD2bhCO_t z?@4mssww-f<*gxF6h}+?UKkq->RlxE(4_%UP4P8hiojZ7Yf5r}Eol}lWkJ%pziY|j zBaol#as$J%Is!rV@MJ;leIRlmvS6Uf^sLvIo7aMf|P>YWRH*;NSOh z5Kgl~@FQmKqfG!QZ;Pj2jsLzONbPt3zsdJq{DYH}`Tc+Y_a`YFM>_{jdO{0=rcenu zcpqFV;@9DNZVY#1W4M2Ga4sO~0={BFS71RQIw+==3H=~og<)$unH#GqyRn*ocoP5^!2zS&lO@ORL zY|I9Kd>9;VUE(|Q!IIdmZRe71ROOd2GIZee>ywI!W{Rub&`quH*X8es4hUTN1F}=| zM`Q=_y{P*e>N*l;7^&&c8coA0!*5AH=Ji z^W*w2m;>E(>T}?dv7vQ>z>^z5vE^MK>RDI?4j67gu19OTFcUjZ6Dm9DX{8;A^{tgS z5H?hWb1D5Mj}SmC*bN|7QnaC!AFKD@S9*V}@c(w{{ISA6R``dO{_m@S|A=({*u#Hh zmi}^&aFVZp6RsHBo5_bc{MgYot-7t0$2BeaNw`Y1PWR0r$!xDdM=66-@kf=}dmokp zn>Rd%rp1DcP|YZsl|7E~3PF6>C;T_& z|Mod#`+u11l=zVVY7R{YYlVmvkziT03scHrIt3Be=W*&=K! z$)Z!4&D z8G`MWlj-+Wg-?onz3G_zwzG458<$ye-@8fX&)1CtMv+m>F5I#j{RjvXSZ_nEp;V!p zne=V7+ze=iK<9|3E3=?mS_UjAOD>%S1tkDfbj8|00_0JL&%jsM2XJIz1UZ)}_<@}n zbkmc$$%H9dW&~XTr;~IRt`}y(f|^XhKjLYIKCm^mSv+ksoMziD!WIuwzpe(eAOk&M zQnCRbAuoa`(2JPiE&##jia4T!h!q#&M?Zed#}E1VGxrOD9FE2@gX}$-Y@JL|60S-s z%*O%oK4Maxx~6w)t4V&DnL?$}MV-_;29picdI#zo;MlUKC4mS{U<>u81nDU-MW@4X zGjO6Q_+RWvwEdf7n`rkbTeoWDxFvQI1K0Fx(PP(l& z2%@UCu^4N%%|cT!u50gok*A{}#>ZhEoo|Pq;#!J8MjWpcjL8cUNGDZ5nh^bg zXA28j7sCL2l3OuCt%W|~h&D78W|%BD$Y{HRqlj#L3d!KrhB5i%H$L^~Meg>X!=5x7 zEH6+?Cg6k3&TzUBocwr$kv&?vqFyz^WAm5KVpv;~EL>W0zx+dZSr;C9nwpjzfQre7KQJz82_JAkeE-Bm|69s+5 z|LEM0nfq@kbD1=oaZrLL+vF(N5LXa%3(WfZ1+-FYEmu4_W&Y=0^#;v(rkG2_);AU9 zaY`dsYowEpv`0!WR+lX*d$W@1s$hEtsL z673{;-khRWl}#*_7}I|=>4CJrJ!)@%=jjJW-Lj&q&*6t`A(F!3X1&YotHM#V>Io2* zE^1Ef?1V*Xi-+hQoFGV>J#qW;ZNK_ZN|DGhHkZVsd(C(r^9i#Z;toZ*^s>+V$r|_n zrNLF&L1C3|8l{m4Dld+)*}WTgxre5_6pX(J;7&hUt9@LU;@iITKDR#Pi)B@1fcxG1 zGU`{p6bVWkxc^Z85mn<0u5*c|qScZa4d)2^twIX-E-lB<{E#z#b4ccj_!-p+C^ z-`WK6C%T6NZ(|S*1-y+4Ad+6Ma>F6R_KG&lJYGk{F{1V5LDWR8M}QHgiv){>!%7gY z_z0;OCmr(Z+Q8}v-*<&|7U##>x7OEU+g%7@s+CVSPrG&+I)Tt|0XCr4qf9^+LjX|n zAd;dn=i%j>)O(YGdj%{_-g;r68nIT# z+bUGI$M4=^*72ex1X1sV-vz`f9Z`Od##lFW9dOfZ#D&ohRwLg=!xD{+8Es08Z(OF# z1y2-S1hO{z^DZQeQcbi?rqmHFBkN&L9{Sg@@mh)AP+io~g9h-f zr8dt^a|C{jZwbxP;Z}3e<>BjgV+Dv4b($8`SjBJfpx^0zQ%pCV$UlZ z`SRVd_T+Lv(wf|5LG?8;nbfUAc!WL=X2+oZVT>)gC%ED);p$MSFyS@d^CRM_dtM`I zZ%fAa2O)k&OvJ&_^|EvLDK}?((B@U8M|v-JR?o2gGq~%2uU-viL*<@fq$4MXo2n=U z$*!N!>CM3<hWsK{x^sKD?TLLy zxF0H1;7KYc4qN7{N+Pbn|v!D?v-QxRt_w#;{)H^2Fmoyh1q^o23v}VwA z@yU~kfb_b1wi4%JF6P~k-yJ-bXiz#cO4XsUb1#gNxm&TY_i!pcncD4inFW2UTnLgp z9uU?745CZ>Q7JgG8T|co`YGC|TKuZJO=@cfzlyq(iqVhc)(ni08;+qEJ& zQYbX;=PObNnG<^RYYL#U%fw?``DI!+nafku)wa>tZ71MDqF<=iauf6GI(Y& zSLHtKlD%8=JpQsY1hE^)fdc?tNLOJ&v4j=m3XHxTzy1smrXckRKT|pbry1eCUW5XE zimnr-0ak$%!AN(QKrM3m70;#=sPWS3u!WaiJU1=j!{r^_-_$BNal=mJM(Hr_yC+;j zh$EZ{vh?fay{h#WDN3y)dG>NeTxHI%P|d}R?bnK#_r4f65tC@)%4|SgBFfQ>44g~g zZoQ+!FDS^{Rr69+#E95?CP{28sKhIo1LuGLYw6>nb`bC4ME3+S1noeCi6V$^2SDHP zpnU2~*<}RH2*&(53wAlD9>o-0>R>@@d+cFMAw$3y18o!*K*2Mk#egk$%L-U^uOMoa z%4^&uysUes5R-rA=GVxbRW(DO(x~H~+z;^!nVzjrgSsRyjV9lgabC8#>H807J&L|Y zS5HQSV%WVrxg+Tg+34#5VQT#LRrvx%rdboo!uu52$B>pzn;)WGOeji=34wB@`KRX| zi3b(iYcy1ug=~E|<{Z>C8Ki@txvJg5ubkSbTKv~=Msr~Ch{8Y&#&7YADu52P1UcF> zR{w@Z$^<{|%?2~~D~|+{ib*E%`rLF+kcn-{K93W@NY&l|M?vxK`JpSlH6M3aId@E5 zd!jeg2+p+-M~n_xyour6!PKPm#A9S#CzU@J^s2wuG3+6dx8E$XMEt<@XHTtSv>zwE z@In;;atj0ccQhPK_^;#^f_RFi#takq3rWTn2B5<>awap%FBC`4F8?h;#1x|hR`p&rxTK_}z1oXXcuJ5xfqQk0N`Hgc37D zK~=~1MUxGK)nPuSd(V;!iuRo7ENFQWQlUtpi?Ii{!L^BwYCg;Yg7!m_x*{- z?f>oQMjo78iew6qIjCe>ZhI{}{L}LjG zMz#u+O2OcW0wx{$qUqfs{2^)I2iDxOSHwP5_r&t!nQex+qMcK6>74FbDAJdS1oCcv;c z^DnW%xs6+KeO6?b-^NyjBmV99<7uZFxd0z^uoXz23Xp``SpsUj=;79J-2n${@|%VN zbhM=%zwwe;ecYTpiKB$}E+!`K;CNM08^R@UZzb9>Nz%J2QQ>;e2q<4}To!O3}OTJ@4%d${FzKO2T2Sde!#?M-}|AL;fdiBbf zM}Cz930ALl|6JzE8Rl*vFmF0p&>e8tgsv%`vC6^G*-u^nU-I{i3BV7Q$S=_mE+fu}}sK0PfgIEAM``Jxfx!h}}J zJr?9Q?|>k`Udv>NfidG~>Y&8nls5ELN~H}!yjO`>Qw7C{f%LgvWI-=L2Jt~R+=>Hp z1Aq5-ZH$9`bfz?Isb0F2zK!;hoFjo%LJzl5<>Uv|_Nal_HNkNQ3wGmL-`B4U;>I=k zuWJ~%0mJDJBFNPdiKy||S$H;6j7LF8Q> zSza1Jkt*>3+JT}$i{tT{b?z6u-8rgkzwqQ;O!JApp2+iR>CG0ljsx1md9LC;k6ks9 zi6a*0cC>9iXg?-;;HcdZ02zwRgD{?65oZ%G{g|V_mIpxsaM>mhka%26gl$p%-^8-`qZUCj|4uw5fY~kpzBBz;^0fuA zylV!(`jML%Z9jo`BYXptN;HA0>_z}}g8Vj$BPLiHv7l0A#EN|{SHnMhBX2w(U5uw^ z__83zZ6MTZUKtIK>um{4OKqU`+W2scLp=s^gWnY=;*Q?Xw27INC1%IEC*$Dk;G*ax z3u4Dj71DuXE^8cRK|ing1{guA|Kt(K?EqweQs!gayD%3PR4AQB9igb8zUeYfGTT%T zj6-9?Rew`j3G^Hs_=(+Q7_$SQQ--<|vK$#h|6QBapTau*!AuK!p25ds6T9*4=k7VI=3DA>i*Gkw0)m z`dJ9ux7+M-4a)3OFq$%<*^>vYMKz=7=jY813p%w26oe%@8h<+1y|DZGGt(xrrL|MO zD|y&_eGh`-jB)rX&b)M653!)&Jsni{gk!wkuFTUoyYss%q@oomGUtCnT>6%p z@MX*4ESUCSqtuLc{9-qma12jAUQ7(wRllp~7_~O;sf&NqvvY&QnmZ5W(!&E)<}Ep~ z-2iGe%A#9H?N}Lde#yN_ox9^IvBwWzbS<=%f0}Ub4f9ms0!ef^B~_y;Y5gJ^*{1D) zF{NCM&qiZekmcZK--ZKgp9A$jO&F7np0>yuW_@UqpYonvv^QDQn{-5x^7KVep&5rN z$$R>EE>OaTlDvfZo_T+1dm$;`DR*w#Z^zLu25{pa+T~Ax5kIucf3U93afK#8Nk z!i^V;u2*$9et&7=*6VruFs>Kt^O)I6wv~5$LxWT+cZi*FNdKJ?5v$+(H z^%&PruZ&^r2~~|50Am+Z_?Wj-ZzITlc>pTfpqJViYLkU+s2Ds~{RLNY(uwji^6_k( zpTDPf@oa`iOOMCL-R;pK2Y6nN8D#NiMrI1C>hGkx^+vQFB&lsiFJ6(7#z~FQoXD4v zhBrPA_)2_?HSg&3vfHOy;F6P61A_*uyA#d+>uCe>bC&2I+0+5#>P=s4+Q&U-nPS1ZRHcn%DCznCriJbrbt57WD5UlVQ$vTY!a1=}zFV zHw54IA9im54x^}>Y7BqC=j03pY5Zq+ZB*JlzzlvV1wLSdY8EsQv$|+ASp|f~f0zYP z2%t+USyd#?C(aL4I#{smiz{k=QcD#u`(b zbjhYY#>bV}kKa2}N4F>IUaKf3sllF@->-AK!zm$oSckD20X#)wbT}oTRWn1L9C3S( z?}wdpcJfh^BUawq16M};`MD1%9Fkwz9;E#$5N+9M88@y#bD`u;^n_OE$+g;6QYu$J z=FdC*+}luVD0AIE;W>x%t~-mn{bcw{?WtxOj03W6s*rP{Oj^mj&ldJ^6Z2kA$ zH$v*f;_D%oV#1^2N?#g z8~1qD+hcaoB5@TH2WG7dB&H#lw$Ge9pB3#RCCMsUUzU;KtCpUZv7KW4;C#{Q>5NMZ z6?dXq^h(c27uCJbx7*uL(;gS?Qzd@$LXE!No)_(Kh}=~pb2dIXT)+!oR!nH~o~q|;Nl0H+C8`KnD2t0x8hF04x*N?08V(pdJw-7XaAWFxS{PO zfG=>e!p&5cY^6R1B<(pG@Ft#*E8eJ9Gwe6Pg1(9R;Qm6%UHQM!Xn$rqG78v7FQ>sC zei!TsQ`G51!E4T#YZCCdSXV9O==OftDO-~FuHy7jr%DYp~6>W zvF_#<6}Y?ivM+L62jl}=7VNol>3$kJMM&3mg4(aau2CI>+1Hgvi?FEAeDgeHR`C4M zDcFI-NMXh2Y=d=zP5(kVqpO<;-vC!32ehdtP@)6+51jg()W}-QW4KQIy7VG`rKb>C zVYLb1;(yqf{&%L6ZPFH;O>2dW+qSqhubNViQsGLlY(0aBg`9BdQ7RP0wpdIjVDa@J@}u_NTU15G3;9<&JnzAboe#x4Jfz zOg$Fou8Jg@g!`0kA&j&V9dLr3nq_`oZZj6GhTFrV4r{S53u?xkt2qpvVq`b&#kkN8 zl9BC9bq`q6OGfGkzN5j# zy>MP@4I{2~qw1t&cASa9YoQk$F`37;omcfVAar#{&$m4Uz-2C+$Ad8$eGJe*_x!%? z&+&=X8xnE!`<+17t&spNKdU~txH<{v14rj4eJvI=yb)1qR*(hre3B`Iwlt)KJ<%MY z#um=s=zXOWC2KsSb1Tk(XG?Z7TaZ#h&(6xCF8t*l*}2BeG*4exxW~wPN7`sCyp?+S znseh_Q4=L@p^mzbH*`5-VdSIgj`p-$H-xd&fY{W zs;sMz7!}hB&`XsMY!nlx+q9mU3p&VzZmkH*RjN69;E*md&mGQ(l|zeDZ_~UcW8FK~ z@-rh-I;{pOR8`uf#!~sP{X9b+#X9@PvIls=%!OfxvS9feScGEvj=;27Itt#W7Y;B_ zq4{HK?cZzrhhr2~+KX{hUo;Twf~trWl9$tf)9+3&5cIdqf~qj*zkKGVB7*73$+y%P zMgBFUo>#B&m%g2jd(6kiAUS29!MDM0JHctl35I36obp>@zmJ8snr6Vg_z6)1kRQx; z$~n;hN-~h+rYuo|DbovGWNMFXBe^ql$!T&~K*6L}J@)9#8K*JR8+rQ*-#1A>nFidC zAo}b&Pxqwk$%#u3CL&h^xRxv^w)sV4629G+zBoS{87sVZ`Ml|S5yP$T5j5j{J@f6+ z+!l?O?NmQstgFAb4Rh{v$2P~Nn^$F3+$XNaQ(&!l*uqLrq7mTQTb`3ULs*bA1s=BdE?+cXvd-y; z2&|a=FL#^;jlmn&E_Flxpw2Mh8e1ve%ywCTdjZ$D)C{oAZor-Y#x@cWZl&Ke;nA5? z<+)$UMl1}FjYyNfl8x>EWUB60uf!js14M&KmasXjQa_@+Vi8MfjXvm6Q(qQoKmV%v zRm);>Y&=|lNZv)_&{;NOW+i-azgF-9D6354oqR*;=pBiUJ&CO4Tv_6^D{HQAyeJUf z{QBBNdEkPFOwT$XHCyh{xXGUd#LZ~Q#0L&m4R_|Ws~UWZ9i$)FE~C=SBVqS4({=gD z&t;a6doCU!6IwHYqC6iTon{&C^U$YDt9NPdPUkLj?}K}tT=UO6*-5PW?TGhwy0?y? zd7EWUAX@zu`xo*O=o$s(Iu6-;ES~r)l7M(`T{ogtw+K+ATl5uaCn;L3Qpk>?UjhX5 zn+Tn%sgbHlpR@ys#=CEoF*|i8531xd&!+J<36h< zg%Ksg+dKk(8lqbgRh7;RuGsyw7Wi@Taec~y_Su9N+z$#BHN=vIJ3Q~zN$u*fk$DthRVj=gpZbKybiT$HMPdt>@mJp@7=Mxdhz8G zj5RHRXouyU$>jG`LP?)7a`l|7<0E=qaQBqydwFmyR7zb@Sw>4Bsq$_NQfG2098XTb zj$;+cpCfz&a|!lz`6GGV7ayH*(ADC@v}|8i2=^T`Hr$#~sFXHJE1pF0%mP#Yb1p^2 zw1#5u{&fiPen{H^U3$v(!q5&}dEhUFBl<3Jfz7{!wt0-ELF)(2%Hu8j7Z%SQj*>W` zuAim6sdzXE3y1}-OJMscwKNLUy)D(yJNjnOxjtq2W5MQY6Y7t|%tj@yH=pt%)Rfv~ z!Nh35m%Jl=0?vp*0_1YJzVuS5}1ioA_c11J7n8UY0C_`n%E(;6Co2b`% z5a)Mh@Dx<9UvbWREOC|jIOy0v)@)nhj+94Mi&!JqPtAE zOy6y@?%Wp45yKA7kDf)4tEObOz6Tg3o?yQFd9&B89E^O|9kH)AtDEf>a5!^kPm~0g zgW|<&iKBF1qN$B&M%r6rKkKU`=%X`!Ed{j26~@GducjRa>o+q3#} z!J=W4rSCo4((s*@x3C&=`fuxx6r%O#n4dlq+AKCFeeLB*J}Y=c;^kDCH(e!eg>9u6 zoJDfG)&V8+vS9{A6&wVcdDhoy*y-=I{o}4~bS2Otm%v^-&shkxh{}lj-{Kzwxh@^k zr!USKC7#X8dC`8V>JUfJwSxri8TVJ}J;5rIYNGGZb(5-V=<+iIgzo;8!RW63iU@_J zW;UhQsfoJZ%n@I2Y*87S$>Ku3!9B$_XNq9>Xu=qs$#v5!8j+Rh9}GqfwJkn&s)PjJ z+wAyGvPr4beogjl_+4GalsXi>Y>s^B{$k|68A*Z%zYsKL%c}CpS#}|yw z)jBgJ`{`ZoVPkpGr*G@G3EeT-UbiGkLzvNmiF&A3`_(km%t+;v6u*?7JBpESi}>S? zG|wI8PWzT_0U}wvXeNfw%mt(;A_ZJv{pwvea{q#U-BKI3o@d> zhc{C?ib#3~=G){HDA;^<2g?$4`bn*7C%fII{HLzpC{^4V95WfDx4bbyV!z`zRoaV2qum-n3FO!InZzgGJCmnDAEna7~AR#a+3HvTY%{qy9FDM-mp^DRPN^1RuaH z%un_NW92AU3n}bv6m(%{#@@j#j~+XYgidYatF*z|yqr4@vCFfCy@aOD)rDGuxW#|Xv2!-)v1gd zIp_A{Z=Wq!sVRON*G3QoGze|L)i~Rvw_&Ya#(8oPZitkZ{6qTn2LZcc1Kq1fIVooXiN(P4gqUBZY;J zREOKy5lpBYq;8?5+~`yLeXinL>{orf-npZ2yWRL+WZ%=ufVbFFj*0G{C1}b%_G4`> z=&*_R*B;fJ3fUWW^!)nRWzW@elBMIrr}138AVuGQe-&Aly3}XLJRMM@tljSw#-1-980YYL8aN&aNxUMyW4W z=t-K_nfQK5)y8D$PycbTo2Q!zkt(wbTJ@E6d#j9<)6+7nxqh!qvNx|v543&|_-w;0 z-Kxeym$(r`d{((q;c-XZ4kOj*NBU_12%KER%CH2-Q=kBysL|K)jpK%&4w<9B3+ST$ zyWc4bgr!^>>p@EU^Ut^$Ykfa|pO7*TG1(X$1^i0YAk^FB`bf0%i&A}!-r&ZOk@V}` zZF4&gpNo!d4cN-ZecbArdIQ-yt1EbDw_L{Q zjr*UYDTQCU7s9^G#Pj`|as`QfE!iG>cj8^Cip|#d!?$}XnTGqAE;z6>dbfMH;P&wG z96=V%Ez{lSWMN^*-gj!(6%MRf9w9DrKpKTQHlLeN4~5#3Bk~jcG1a6+16LCXdX-z0JfGQhBq-{t9luG(txrZfg1r>2#GQnu4T~j^ zGDRAasGZp{_|uVpyzGs#I3KLSgy zrgQgIo=B8Q4e}1DBjhS&O>f2zZGDel8Y?b#rB?LO;L+%6g2)#v8ccqUzCuIi58K#q z2od~UUfIqSwigt1A{Q+5eB>spJK=mYMZ~6lYR@^;(+4EkjzN+UEXvFluXuT|AccKi z4td}7bP3YN(T}|J`9x&EVWm$MH1F&4OeJ+hzL1xU;#_b`;p@Df)C*sh0U!HCkdf<_ zq-JHU+iVpTQFW(I)z@kK$n>)v@^?CD+9j(*2LzW`now|IQ#;-uWvTH2>cPRC&+S)QkBRGu<7TuW%Q{^>(xvHqP)LXXw@`5BK7Y#cUMX~#rTMN{1}b~K$*MIA2ETxs*7vH-Ux1?(w9+|-h@ z6DKx+6?3}de*A)TzQ#32DFasv?B=)ZE1zc1erE2tPRYC8(UYyl&1zJKvpElntU3Ek z8l)WD2hkxz+Ofpv$u4&+T>9n}rGHwp=+>NWO$JpAX`)I99%@ZKHeIbhW|jIOzlaOO z_MKAV5#Z%{&+q_z%HJ3?M_3GW z*;)U>KlIO`+n-#vE~1GXMqnNT<3l>CV{06c_W@+pS3E`hR!^;#G^m$Ixqi3g*jyw1 z@x&r99q4Rqht4eGVJ|zETAqBU`G?f2(cNRZ#@D6%Xpw6XHJhjQP?_cvpVRf*$80*F z0zFYY{rX|q)}T)8vh}COPkb6mjY)~l5+9BnJ>p`xdglVrIAB9XeUiCN*Qljg09F!?N^`$l9d2sDaip`vgZMilppzNt;b+=P zewjV{)snke4o0iWH;RNwI$)XqUd=-m22m^x9Zvc0numu^Tp43}BXk|}H@(9(x`Vun z)FLt#H}nde?aw;|u-gvAN1NocBp4xB1vnZ+MN~LZ(P0x-9;cfyA>0ksa!qG9X>_!E z`(L_+y+=6(8?p^;VJ}W~ug!Ix(QNItMV|i0J)PVM&ueEnbl#1=yF+ws#SM8==_1y{ zR>+Ag<&)XV&EXhUke%t3pF#)^H>DhH*W7kCXXh#1QT02gHI(PfvCtC%nF^9=><}c3 z8}SuI!p%%FX}_SaPT(bA9`}}_V*=r1AB+szM3&vvB*?D5t_nR*>l7`p_7?@$aX?wd zH8b(AC}BIv`Sq|U&tw3PI%|4q#+sRgUNqS34mmk^1#7DItSMIz>s#}vZ_+FXb@}6e znA5b}%S$RYuTWmLdUnyOQ@0KuTC@Dht%@X+=>2%MA7*Yh=^aK+53|(0ZNos4C_8c# z7c`Ms^ZJ6Dcf}c`CEnmG%1&|h@mcG-&o?Q**n~F+!#0hP_vGBfsVcHq=OA|e3l9la zVQ?zXIe4<(mD-?-Jhx%6_o`-OE$Q7Yd!i0UJHxCY;^7@uhs5xD z#W&Q-xnm!Sn=(~4++MrRVk4_~{}DKs^U_Ae$4z-*Pt+H9V`7}c%a;5%W`vs#LGBl? zGjCkuReRR^Hx@q5^hxQklR^}4_jI_nL~R1>$uFPQisgFOu_v%MY} z&+9r|xt!w4;oh&P^AbMgmYROc$wa$yMjj&+(I6hzCb`ez@YqmMfv6vKv9}G?pJx_HvhEYZYa2qPt4=xrjyd!CCYA%-6}K0-8K# zP0ZkV``EAup+yJTCWl}GQ-N>inG8S3Uy^bM(q82xBOGmAANagFp8(6Q}hxl7KgeqO1!iqgF z!H~?Eeff97((5*=99iRiM3;N(e81@<`wZR=QVmuKo;D+gYUzV`l^Ahb^Fl@ENWImP zcISF;+(KEzCshRMo-5Z-RpHoB?&D5J2Sa({SI>?#v*;B9lPbl7S#P9b^V9Ds#Iv+$ zYoEP6xMa7@hmJ1kL!YQo_9#wt6nX40RRjpON(iWJ5p`TQ4*BO}DF1&(`o@nkHWLKY zsf&RwS5QGzmQDXGXvc9_ndvaR;7C#>AkjnZMEs~ zO&U$FqNROetT>lKoU&YA22mfUb#Kje=(gXf9)7@V$)R)GP_7`~@ISdy@PClR_<;lc z2bBu0b_Y7*1K@pW$NlEdIO>xIBEP{P@_P#TR>3JZ{HHomz`d1leYr%Sl;wnf1=*U` z^07m$y||wbwxGU6GXBxv8Am6GHU@$}OL2q3cAcrsb_Mh>B8Y0n#KFM*{%dAJfLVbs z1QAU0h&X9D9Lv+0J7ERM>}<$J57j@GHR`V{IyLKUR>~5MoA3SIJ8;kR(KD)!fHjo{ z0c}`;f)>0?Z94FgaBY3V?zuhj zJSC<_mH|$ZuQ5AseP^jkjN9WyJLL}eYLIY)|G&L-#tJ`eCS`-v z3VzMl7_8KS`X)fess>kB&_r?nlUw88oJ;f*#TFM7SuqLx`?PBGZyDGil_+oT5s*ZN z8l){m6b2m?*rSo!MG}wQ)`vm`L&JA`k4OG8E_dKr&$Ex-b7o(-alu?ggL9#GPFOZk zhC{Dn%!j=#T8j4eYM-L?_3sNRbpr}H!c#-7^;%Zh)^suq|8E<=cgF`2tIXoAYexRVYOJuf^ z>#+@vN}Mg`f=tBdFzmM-E6+A8uV|jE*K+2aa^Hv7%`dvrx^?;b=Vwb**`AS+pQwSH zsiASeK*KPyR7H5y{?2|DTC~qTtN8ixAf5eoHCR4HH)9eFps>Y=*yO#nbFO%l((U zV?UNJ{#B{KUmg1=ln*Ssw@mOX-{5AeJhDJy_n{uBW;?6+>2n;0F9rK^_U|d6azd_N z#LIR&Z0jrce0(^yVX3c%%UazzmPS*0A|UV6)gEeS!A-HDC`^Yfd3+Kr;A47))4n9V z**GN3E(piAlZW^I@IM#{_Fui!E(EE?P(7vyCg+``T>+ukokgob zCed>mnECRRA8e;oJYwZ(zmD*_iq z$-AwZ|HMS31QUz0{Ei#^x9So9E7v<}g1jA#L|}5Bm`y|OJ5$^!a)m$-eMuKy%&$4}Ji_!s*BA6!Sseg3^gSyVzorF}ygp+kvv_OU0MSEZuXRJ6$> zRX=trpl&53iHQe3)o#fy6dl?$*?_sJ5Ku|kl!OyDM+`0>Ex5U70v9`5p84d0#D2c|uwI|F+G$Jqj0BEWSp zw$0DBaeJe=iY0I5=gX83(kz(NVBhp~!g||NeTlf{(U!IBwRF1d!{=fFoytD7gN`(7 z`+vL{-tR&MG^`r32DP9VU;zz1fa3uA%F^Gp{>9OE;_q7i1%(Q~FXYEhIVNU-9zGO! zkOY|PrW!pwoPuj1c8T?37pJxun_Kht4SebvuPVKrd8PWCd)H^sGys$u-Q$pv(8M@o z@g9f+AbpxB1hs|}_~kZ+f1>y)s1(zI4>J^LpF=^B9Mc&@64dAz&IRrRI01B_{FKv+ zlO@U(L~L(rRJl~hA?jjPwniS`Mzwi8h~G_rgJT1}I;{(|CH&;DD?o&{36U01IP(q$ zHuBb;B?6+W@Q#gNQ4(8vZ3Hq(Xug&zNCLRbt>mQ)fZC81KmCGZx)8yg9;zJ&i%iAv zqa8bepIm%Mz{D?hRg9}hgeqsW3PUJF8`h$h=bQxNwQO{Q7j?_*&<}1Bcq=kkwb-UKYh~xf*}#pF8zH^AjXwHqn1D zn}ZXT#0K64&^IlIoq*JN2LplnBmjE{|7vGm#FVS;KR;AW^%aEC`nGUDE05baSx^>R zWK^2r4ZXR$S z3|>af93%nnbdydOW~co>ti1i7Iv3cuQ1X~BS)4Xx$I(F|o81|jCCGB9_7f2llIP$n zXfqqEDa1dS)`TGtDJ1{z#ltVKI@w@C^gEUnfKLRt4Hk9E*_=?*3 zNOZu7mzTMNb}827pWf3$v!DDv0ojVf0Jq{60D$`|C=W7!I+l!n@aSLMOysZjP4h3X zWyb!mFbh-|+l@r0X)PBtPNe;7HtX+fE?N{01KQ?2Ht3WG0aE<@#-Mnt2+h*qCpnjn z^5pndU$c zpAF)?r`TK4Ynd7^)>+IR;(n2&ow4o<-Lf$6d>6=8ybK0gFh${h(5?1l84cbFEIAFJ z#LdN2<7PBfF8?EzG;t;>NDoK--SV!sXTP0mgwGA z4`dZ=W$j??ytheGtEXMPi|g=Mi~okMqM5s+pSX6|R6=rj_*l&)pZggA?9w}Y^ApWg=)!j9sx)P=;!Joyxa0+H+Bh2CL^1(DvSVi;GUuT&FO=U=Ibf#+ z^1T5FC`=pva!{|;_XWqC4UYn-D%7kvo3l+R_CUDzTvH2QDXsp8#E>4Ud0CS)E-qO9%F#1Y#!k07Zf~jsxA1=P7v`X>(H9r!3 z0p^{50*KSad-;JbEBGHy18;Y-Cqsaq@fOUGL2r8cOHfoG4{EJ)*!z(Xfe9i2?^gxV z=z`zFVDGmei6D0iD9*iJBe(a62LUtp3=v?-17JP^H~=*G1_$hX=pDdRi18R$-zzV8xZz?^LD#pxJ+1i{zx24J7&JO@79`>!u=|m-I|qO zQD>s34H&=+@yZq0hv(kS#={=8K-|Qhi@$9MfHa{eTChm@H<%87Fo=d;H|F^vrvprJ zKl~^Jcqgm|@Jsv;xK2r>Fvj&ffDU;t8IAsn6957ta{=*f`W?o_~PQh0IngC>gyD;odvKaI^dEhH*>J!*H$KJxh=|=GPPCNuEKTDJW zyL}a)-oO5A16=3To{Nv3k{3+W$^;+0wXuE2&?Xsr-j|54DA`Ub?F*j9TUnIB1!D z|G*8?X~U&#<8>1JEzJvL=QwVxR__tHI}>vyd`gi6b)*2d)+~@gBVdvR#+%F+{1*Vs z0RF%bzCnK}W@eQ!B$yVG6A+eCFW44HxHR~W#OtnPOaQKRhW?y>ozzMmQ-ujgwT?8fOq;p`06PLa;8(2pjne=Wg1(^;W9o|# zgP200=Y#p_}^qkEhxG}q!~F1}cP_WI4Y2L$Li$9~~E6xndK z_5#;Fjm@L*eGD&rMVX~0&!sU7sp0^)HaA1RGF3p)qgQ~O-jm1pRSHnfcTVy@3;#sR zp?~Mu#S58~O4?lFv8J>6xH*GuFDGNOOY@)KVw@XGo1dK%8=yMuWP1IY-BCc_^avtg zXSeb>y-3w7ykNtjpWW!+x~qYHDpqh%FN~~np^CEARg|u~C(a*qcu~ZW{a`#C&YHW` zW!dq-UG23EySoGri+1x68xugHIpP3v&9Sj4lUf0gQ~iU?XhhTv$3Gvf!3EnurUc_) zsYgI^)p0Mc60I^NcVG|_6>#z%gB0Odtue?2nx27Ag7ol?Xpo3Paef$pb)sYC_`Y<~ zYS^KA-xr4Ti55L6ED(ahT^A3Qd6d8h%0lyPP<=8lpoi6W-suQSH+8t&N1kM|aP^DcW;&5VXIv<66Qd6rv(~ zamFLQS>xH!Q9TKXh={P`D?Z*FPC0#PW8W=HoIPshQaA?>pTq(FX04~gV?$LS{PW#^ z!UhHZ@)PcjERP=D5rK@0?BaRR_)`%GPma@HNozM`%8{!Gp!o|{q_MYIKgw#~b#Cj4 zV=-Bm&x|FXQ@WviFyuJ}2;Ja?FaX@v+;SQ$&EOwI`B6GSD6PK;KlMIkxa})yyjzDi zWETXLgZ@}RG96|z_~Ha)O*DKQ7XVFInF2L9VE8Mla*y~+!Al0>2UG1k~d}=4q2wFkV5tp9@^^Y+SgaXrpp>k2AfjnW!2Nv76 zT>!)*iRNLUMh$j9B3k%uG5vp9O!TljW||Lvp=BcaOftLVE9%?xq@f-Yh;!hlJMIw& zTBrM=uc(HPG=TumN#WU7Bajx5@?U^p^l|2|!wpRX1R|G{zafyXT?Otvy(c|{)5%Ww}U%>)e@5>t_M%+RGgzOv6IVWir@h5DMtE zcVGw+E>h0oH|(JT$wLEA1$g#c@UjyjEf*pe=4=7rY@xK#97lj%k{Y17e;6SItgZgr ztNe^#r&$0=bF#+um z?}TV2-is=FuIMrnnYMjIV$rUzsF$lmhY0JTBAl^lCBo(pRzb{2WFFM04-Apt-g*fi z*x3)=fec^(bOspIUL-vA^SC^(e4Mfbpz8*B1=unAmft`sL>gzd6%zIofR5w<2Am|L zPk%c*nt zXYI9k()Cca!RX+@y+f-+KYZ`;)GP;0Ofb``#x{a$lVpKOH~qO?2vUU`GrvgY%^Sqc zco!$5&prI}L^NTn<`j8a0}HSyr=bFxx%7f^hO$s_3+lTM5V0Buq|rdfr{ZUS?!s)x ztpTd=C60!GI6#{@S0D_H3!dTnx{55nqVUE9FMB@57`CtPGj9^703#99mA02=$#2x^GSn(Pqwo4%L~JkTZT-2@A;nJx>Qo z(EGxD@+S|eX5|FvGHe4Z!1p)PpaHK*zimELpw?@Iv1mM5J&Hh^Dja0?9aJdt!Z+z8 zoT`<~hisJu~Fr zin2heXfn`1_ek-RKS6NK7xI|YE09mF13LA@k43jjAlBYYoFKvg2nhGqNt@|8T|kP< zgE3;(z7|7(P*%PI6TB)DFap^;ks-bB;51Pez^kg&3oULDO-9EK*|oOEpc@yO5f zRla3)IBNI{GcX=N@2>(`IZ#(u{Oo5f&(9G=)vdOnR{r&e;|h)`RJD%?j0lPju&+Kx z*b5tZhhxSrl0|8Q^%c08!OY=ah*zVk~C}+mBDou(u zWZw);+%bL!mx4C1y{ya6QJr;r^wciBk zSA%~aGbBv0K5h*pu(hGwaKbhpa+S@r5w0CfqA827M&i$EcDjfdgd2q0ulmam(F(pe z0NG)V15$zolHwgDvs3f;WB9)vTlFW}q%4H2j4D^>?nuc*Rn7I zQ%AdeyKtliH?~~~sj>mvG{74BwXfA58&QPgt_N0wXeuCOo5MiEFCO*_@_~i`tklH; z+xaC4>`8`S2Wsla{#&LtT=4s?3qZs!yPe7(auLd1jPVc=*ael>kt=P4~kvh7=vL%c3dw&m$|@w9Q_PDICnS2?N1D7 zRuO(1*og`bUJ#~ehs5FS^6Y+gs&T`=&&}sR!j~zm!i{u514s0~O)o02;3p6wp)TMH zZF=q^+8&p|f)b76i*XD211;Y-ycYSHy@5q;2SDBn2=zUkr6VxuqUZ1VJ~wOj(f!D# zLTIuQ*sBX2_wtrOwNLpPfN7ns1~NGNG8Hf^)lS+BP?l%rQC10V(E8}4h2UAp-6w2>{hJA2`(i^wQ*xTx2Uo3f%Q0lOZs6po7sz zKQh7qv-t0yB>Y}v#RV!?3?2sj$Prwfk}B-UEr@{n=m-X)Uxhvo01^RWF^eKVFViw+ZEV_F`(Lh7d%(> z3vTB8vt;y{?xp!t(kXAvpP2aP=-{zZr50gKAr)a?W zJmB?*z7^JnwS25Hj7gX!=2yPGwNi<-{%1TG_-lc;(3@=0Hn zxcZehd*KZ{h}6)n1mk*+YV3pK(mUJ?6s4lF-@J185VQ30+3+u(D!K|X)oCdIkZr!` zGFnF`6H_(15EoK}?zO_pxUW7t<>5{s7{`X~3_kC;4mJC>*N7(ld-Y?w4uV(34Gp^M z-FU;Axh$F>fQSPgdOSdz@+2AIJGj#FG%9ptj_@s-Pc-IRt8FjHeL0q~{O~e& zn*OEGDJkj+FHw`{Z!VMhrYE`Q0P;Le1KtpQ01m}ubn2=nT={ojE*VT+8hSIk!hP+T znwp)zh{Jg1B6s39y(ZmqdAU+edq;9kiF%KpbRKGkgNwkAc`{}J^_z~HxMpX> zVDBZg*D7QZ_ciam-IHnGH4B|?`eck8$|!U$@ptbHDYJH~XJHeuaVZ5)2_v==0l)Yb zTv4l8-#2pB=ncxhej5=eMQB9- z<5K^n`?lX&bRsIx__69bHKS^Puz%BkE+AMA_X?X;}+tiEur=$bt#NUxrl_-fS4?MBBRU0C0iEcmF)Z`r?Y8V)X;-&n_00 z=dxhA6yzOd5pjz*2V)hoy-iQBSW}6jePX4H?B|^Z*FG4;*%Zz3_5{6QuZK_55S8^j zBdBqIGmfqJ?H-M`aeEo|02pFRH(0*{ zoFz<^-BpmHR_U%)q5HD#vxrlj+OeMN&jnJb%W^)Hp{sx(kJE-uanMMTj^@4Japu58 z!>>4V@FOFaFx<*k1GcZE(oQ;7ZJ+?CoSpHl^jq)V_SYrse-Xd3u4=pDMwypiQSy2s zQ&MuwB+zIQD^A?WIh_Dnsqr`EwCNA;v{~6y)!orc%nq!OtU{HD-P(dttZNBQ?plsZJ~FG)W0AnuQpaT2 zqDRR_l2R_-I=i@axS`|v^W|OKh!;;U4UZ{}Om|*Ly3`-ZqRxWv^(gOW5~A}*=MC<; zt8cb^%*wJQ(kV9Qxt~m+S?JT#0XPrH34&Lr=kWFu9h>1eHiQ37v6qm)8gnmS0>n%^ZS%*9EPK}#x~U&AH4qhS<`HUR zKIl59`Pcr@m`b!1Iz#AiI4HP{DB1h8HJ3V98Sg1}ur}9zz_rb_Q@FmLSNH*RP)L{1 z$tKzXtSbl26o5ozZpKZk&@8DMMAIhhS|3qIc5pG8oI1Gp{NcCB#5#p@^`Gm`m2lTc zK?WEF?2<2xInK`iWL{GVe$v&OQF68ZQ>8$q6_>!5euy0IU z;e&jQ$qp|s&6ueRN$w*r;b>%j4$p`jNftT9IUVb^f}<07l~J8favi!WazO=Z7jeQ& zz6s&%5wFK7;Cd)Bd{8m-2tJG~flh1n6*MWO(Z$k;nW3Mm7^==#$L=C$(_Xpv6u!KS z2~id39v6U0-glY*#K~!}t)K|al-kb{kJN*tT<*N_&iq36Y_~6?RjNnIUHGi)YZh#c zBJn{APkuUuchm=el%tN!2Iye1CFiAsiPfDJ>)N8*+5?-TSFc;Js9$3Rhrf~V%3AM#`0R9wDNU~s{sOX2uO?7Co_I?;GSLs-lE(LjEm?R` zcad%B*=~*MAJ2Py!szWsUp$u$%XA0eOd%#L1L6$J2>eyz!hA`2HUXK>L6_--7~2Fb zWJbn6eDBK`@W`GUF&$&6(>11~FutCiPxANaES;g0H!N|-Dz**BH`q3fe0=s2=n#kA zXZl+#5q}rn|5=nPOl$y&eKBrdQTY~?KBmeUL@lH`&&rjcGkLnLXfiKoj_8>MQk97} zQ6I2eKSf?Tbu~Euuy80MJDoIZ8_VC84)pgZ$;-F9PcWIeD8U`=`%Z^bag*=ROiKPA zf?u?j=7x?^EF9vouO8%d$1(}#ptba7wzK5ARXn@DN2y4|*IDAFNA zzPy;49O3FvR)&}|BnI^rdm7N#cAw86I$x+J7>Pb-YNOW0lP3iQD4UhOAIA-+myV2c z3YU7k-F?m!V2mekBS5$i`te02OA0oZq zZ_sF2LHh8=NGtJjTz(vXQOp6rg*C02QdZ0h?u&1ATKEBWljW=FEir3ed!Ip@o!vfN z(r2?uVmaq3GJhIVNeMBo4#F_~2HYRbz4GelnVtJjJ=W+Nn{y#o*^k~vW*>-duchiC z4TZ)?jB7tkF0GujBCJ&&x4(gHom($}t zAJ*&WWza81_9swsp#(h$ge67DuMrcb&>w1o+&{9`bIr89f*W?a+ctJP~iX-=hl zz#f(tq#nyMYq1;0bM`Z-Ic#ucC{c-0cD(hXL#@`z-jI%SPl0S=hU9{pqkg6iUv35y zlqC1OaX-`j%VrO|y)FDtbX!yZCu8o3cgN6O-7;tTH7yzt#QEowTvM_2dlLz_Z2cvjc0@o#?5wyLoz$h(2GtM zI9yoHe>d>i=C*jo-Oki0yiQX97XIDTqTHc*M0akn6OU$hZ)Rmn9CAJ8u}L4F z>mScNSGE$rV*G{Sx{dwE6?*k2wR|zdcI=ha-0ScX7D4RjT32shk(k{tZ$Q<>EGagv z`P}^OC$B-z)>3&4`-p{aebu$<2!m;`u!niND9=eX#-pjUnrBB)1S5RSdOaAvh#1NTaIa}c!u+= z@f%sx1Aq;kMc(4r4YXWp{7e+(CX2REu65G79IfCas1O&_)YJ^Uot$*~V?-0Wp`inZ z%#Y3_y~WArH_UQl%%gU+t)+N8(k}j}_3>3y<7*(g&l_pR1S*_j6^XLq_;T-wR!tKo z2C!oX#C0rAAG}iaQhi)1t;Ji#*7Rl+;@H)ddw=PP;z4BoB+m%omoNKaJ&P3ML9=Ja zjZg}-?T=zD`p7dM)y@u-y-I3@Y37(G47Sj%{Lma?KLmvq_%ozxz=&;gc>9R!6RM^V z;2OAQxa$^YIB(Kp%kXK=!mt(M^}AO2*BJMu*!AE_p`e$PDoVJD5_@-eLcWySq}E=} z&2OByeXC@3yESA1$z%WWcWWyK8wxTZE04!GQimFH@g~( z5~SgJ9@!TTwR8Lqv$ZqXZrwZc32dVqI9iG?iTv%grp+-$ZGE3JJZ^qv*6cy#1 z4dpYJ?vmuG_s>j5nb?j)g%x0aeN1oqex$rv8Q6giWII;7 zE6LSW&8x3r3_T3KFqBS9Z3tpWPmqO!rp$T-(lT@6QVwr(o;y;yXx3}L+@(2Y^$X3F zoqmr;6X`s665SpcDaig`T-oJ&EEk61c;daI;y_q(p!)0l}~J*K?%?#3^7tCv%6 zQ;Y-;u@VDNo_r~7p^yB*gNG)qP83Xuo$CCc^F}g7K%c+cI1&s_m>va+auraNMIk2e zgM4VMBrX9UrFMdW^Cy`g)sRvy-?}|UOHw(_R zV~^y!agC|5UMpg|imuMtc=ALR?XKxmRyayfCAbOoq;zBqpX68)H8c3y9*SiWmO6yV zOKqkf^P_z5F*Qdk??1Wn+)E>eQrMc=OMq9Rhq`H^z+cQeO4ye>X1c#uMCGy1sUwzh z1-Qmz*t^@cEwZku#B!a!mEy_u<1tjd!(i~Aq?gXpFPB$lQd}>)TX3K2U9?Ct>I$5G zera#M<&p7{ji041Yn}EXmtQ7C78yQqF|N$=?y$}9SdrM3cU5!kzSVa7C&d7F!Les3 z*Pw}&a6Q8BfH*VbfLYVnwuE3uG^em4(GB!WUz5bB=x8yH&GOvlL0#2U*6}{`)0wkf zqDi`-IaCcMiJTWwYPJQ4kVY0Xi!tKWd^TYyPI5gr;`H=`m@j*t`j2VW0mY793Y3G< z5UeTZbTqSAsf46g)SB=9JS$suhli!_sbf!Y^ozAifQszjkH3LoTR`mC2=hqDpKU<{N8XkkZZcz^RbeRSymxkVK(Aqmt(deTBlmH6~%y27-E; z$|l7-?TRC(OWvYJ+;)Od=nm2Fn!=%eXV10rDw-|HNh?>Y?{l#WuPNyXl=Kx-Y5kZ4 zSZZJlaW)-mOw{I>WrP!ycD&2Z4;@YQSpHeh!*h|u0*PF$TT#vF8!L$rP|*$x5+J5E zpBPiwagY+jBr6iAc&&3c7@|lFMl`A->nidRvlG4*fV+$n!rxmU)$u$0{WaJWR`69$ zTuHohr0IIC*E7*kv1~P_n@ukXJxWRBEGg{P@+2UrW zHf%R{1K01=bb1`y{Qabn^5D!iHY4OBNJEApt9KI#r=B%Ubh-=;d-N(C0)5aPMkmh- z(ElAiKYnWVqTw~(Lkv)fmdo`APPT&?i7fK$(U#;fx{m$>(c$&ybV&zgMFtm}(Ay_! zA6SJZt=@YoswGn`GFUut?#L?9Y5d@ub=v*a#s2a-D5L&Z?Zh6xHk%5!=5-F(~B(cnw{Mne)ASE0VOEJg$M{&6|E7$Ep@f^jx@r zDPYyF0!b<%Zh~5hh@cSXyb5xS4loA6Xl9U7g+aaG!Na-|C&F^ECw&vLvl_`$;~fFG zMEhZ69$%{st4}<@rUzbJp|Q7(AlrVbYU>W)TOb19By+goS$r?$%%|qjl?Bhk9wf=T z^hH%IQCKRc*0Nw5=^0eI6ms6=oH9sL$oIoD+?4X77QS}8v3d^cI5Hj-iP`E2EKm!q zGK}5<<9j^NWtXL%=Qrv3?HC$PQNHxBSED6KC}Cf&iIhBW`}d%PNFqxI{oW_HeCAHr zlg<^N?mgrC==eKnS*8GpR)cZpR;j zN(~_A4ICafxH-MW1L({Wu=82UD$S7W@4R1{Hrr>=ybx$XrMq}?Lw-=EbaJkf2 zl?U#9KA9B`UQrI`%Bx;++o#FUSOZBj+RYvr% zwOr1)(xX_~MRaPYBQ7)WvfX&4p02}d&d#W%k1CHYT~KEsCiDKCxEEW4DNW(@vZ{lL z=#(6*>=T@0zBOxALy1jw<&6tAkQ7GoP53LsC22$x_Spz#lyv)<34fI)6U`lV@X2lS zH+=D_1sg*%ruAIMT0&({|YgDF1Gj z9wx13zfI`1k#c)EC&w-B%jUUn!y7!}XByxpxKkA?Ks=Hq`tDJ{d zgS3;LsbAz5+nuW=c%2v@?3o${m& zU8V_h7AtQ;jnk1i^J~o71)6>MYdFb#d?Z=6$gHPWcEd`bty#FrRBb+s(~CmtRykwq zTtp`_kh#q~W8ZV`G=<5CBYFvW{t~a1pBrwV&_hePH@qn=9~GWDFbUGJ&r?*&JTZi-G0LFj(+QJF+QI-zClQ7!RaynNp6tssd24|SM4WH%oBId zT5;%<%BJOUh>{7Y)Rnpb^?=-guc*j9Le1pRXnO zF;lU-PR(SUEGC}hEk+tHkeX|B?dH9C{`g3YhjEth!eCvS36Wd!XexCz&C z#(ONP8iG~S+1m?Q_h`BKnT7?fxE!6kW&L+Q?(K`dw^UR5ayGFU_y@XTn9)P8dTmeQ|}Vof+91{mNG7NIh&fHlAY3} z7a{lBt@e(^s-8?#N#<%XnHIZkz`b5OxCam0~es*t* z@#cfS)NLv?4M%aq`5+D)SWkL;`V)OKT%FSK@j++mAk`jZmTC+&7rwg_N#>>~XAY0T z9vBb=n9v8Vvp~O5WIdQgI@+VosAUDxCe}TjFH~a)#ak^ zA0?wJ0Nb(X(P9j*;53&ziWkbRNNedPrJcWum<^>&r$Z;qJ7~kk;mGxi{>z)qo6h9D z!FGY-omH|O-Q6q7sufoq++%`5VS-3bz+Y^{gpc#I21vTCd@+3nC=5d3kC0lPQ_ z%1TZY%QNW}G%4aC_Io;U^%INC0TS^}l~1n^w_eHP;+ij6^KS-%erXTGH5XPT=`{ke zg5Sfzgig+#$X;A37H4=qSW{u`qI1c&ELHzM>fSr5sjcfC4pOD62uKYI*k~$MT0jLv zM6dyZkgI@zh^R;}L69y)-~v}rqS91KM4HslQ4#5cA}xT_Ktc(DB$F>^3WwV83NGhGty{p|H-%-O^_{Kl%1G0EuE z4((4P{WWliTlY<%GUH9H$efkE5Z=Z^(l>b1EU`8z0FH52d1to!Ag@GVqQKUVI%jYB zS$GIeESNKpooYIP-7zP1(7UuNzhCqq)LhG_)3lU!i_vNY7-bp2Y~=GaYgHRF-vpe& z2WZdjrB0Z0U=-`^Qtdo5s%XvI-MT}!<%QoK4{xrJ;)cCWzww`4_(|RKR}4RE87e3m2aMemz)_KRu!{bOeo_&QTRSt=DWmY+(dD(0Fb2gX+S%%0FXDsg8fkS4mf8d z)tK&-MZezd?mg&c@Q~=xX1`}nWa9*8YfdbAt4Y^wT6q9T@l2(pGG3`F3z)OwA{7KE z8RZA!+4CK5>1=&!c7QJ@4d55>tsQZw9gtq2ELr1`7fR@CS!GRnLy~%Q;OLn~KHisp zl9voE>BmQ_d7zzD`GE?I)LNl=Pv2a7nsR)#fwv>>>{{NSPOR^H@p9jKteEDBNuKc346g&Ax z7+Ix(5`2L4EgS59dykd7nU)sA*E9L@S$Bw9@6tcXQ9cU_AfTeRJGdXo4Tw@j)6>0y zSBtOoIIH9D8RXh^OnrgL@fZs#>B~IXcq#A;wgXF*$1f6srRj3T)MweYerX+#gH5|* zQ<5$u)ZPrh9QlND^5Y9q1`+8QDGZ88N7MHJz)OzFE&#uRjc%AZ=4yk9lCAE+zDykY zF={4E&u22*h>x=d2SN}qh@XC}uU3U_K^hBvsM$7e(?_t$bT}ZVQ=QBBRsUnadDMW$WQt!=OQMw@IMZ5b+i`Z~(1Eiwo=UEEcFZ zBRZ(MARt^HqaMV8Vz{R+nh04tT{}DZ z)P=QZo4czXCU6qPNedIGsFp_r``u%I)uUDQ~oR1&9;$D6~j{ID(1P}P? zp96RT2%X`<-*{+7(6_DjxVZPJ&0^A8Wlz6U_@t<5zk;uK@w|bL9u2Ts1u1^c$Zf4B z!op=M<^ei+Y?kD=N-M{QcJXH=>Nled$4G-?oVZyxP`+lvGlN$x8_A;)6_z2+s4YcA z8((j2q}^xWavB+N0p+wymeP&opWzDTwZHfWc0KAGXI;h&EK^YBjP%+az8($YGEm-ASRX04C6BC3Ij61Nh8@m_OHdaKsBROs%X@s& zFQQGl6i$i9e!lwbazMVzv6qRam2Y5sOoVCj`w zQ*N6xjB14QNyM#=AsJ*R(fzBvSnu=sH2Eh)n(AYWvR+Z`)Yf6$1;EgXs{rC@dp~8+ z0A{fI1SACQZWCyt8Y%vp2cH|!bMnOw;-Q{j=d9k`3bnkNw&%PKuRAK=evM@c#|*FK z&>jylpwAX5&C?z7epF@N^(3!xObe}kF`*+>oc)`B+k7dF6?u@(LhT_bkBiiULb$Ks zS@QWfjwF|&cCFd+y6+c)U2_m0=a;VGc4=E>q8go<1)5id9&|w@b3ef-U*ww(GD?Ga zhg%%eTMmxy-^j+CtBDgSyOy>KwxLE`14)W+)>xTwJ@sy(G~ga_?E!vSq(mj)rLQvTR!YK+y%gf<>V=dr`7w9-(6oD}ix)z2IVIw{m*h`$vN}rK2wB^mCj? z`LuN$s0FYiqLT_}xYOqWp8|I7ls}LH$~Pes2+Y?lBu-`sh*Xo#y(72rCj`#UH||e{rc!I5Q`|m9n zf>1$?V-dv()By6$R)T$!+w^R(5{LZnFvVc&Qd#(M%BlkkZq$U&cZMz)OSy+AK@df= z<4z5KBb7&#Er=CP%gJ($RfK@euPDnJKaZV5=Auf?n>|8NCFr`bJyfxoW_O{!DJgG^ z*TGm6g!Y4jd~;swuDCf(q3_2S$s8dZc!cqr9$T|h!NRipq^`H;8@D5jWdC*^-h9jH zlpXv{V2E=KEI6{uem{s#ufRlwh-V-?qCk%&Fr#t_1Xo|>nA7)yr*TCW77!$a2Af92 z1=1tcJ_A|tSnE5N%3pczyZZ5;G8KP#RrrN6KN8=9{@cbU{7p`<@|lfy%e}k<_LEn#0gk*t(!iq?(yRBQ@raw zC3@|q*U@?7S8OrRJ;ZJFqYX?ku2osk_rUmBO4;RSsGwfUI=`(PXGmDliz}@xxl^OV7RSw)ZU|d(oDe2S=(`4&IT=! zsI2mCRX5GWf+QNKylG#&{}G7#R+^@gz9+h6{?89>^CD1dJhs{jf00P7xS6ryOZ9Y%crJtfEO<=?ACAF4gO2N`9e~TY5KcJnGVl))> zE~NOlE{vmk;V<;~Pez1w6En-H$r^PnC&~52O)0ZCSBD6tsIy<=TH=xoR-;cq{Ycm{ z;?`LF=poXTiL{1MREcXUufXzRmfWkr4b3kYNqfD8tgr$hTKlJsN(84ILUsG?+)$!b#rYgln(5OKde4UjkKooYW8*#Gv)c? zG{=VF*3?Y?KFo&=Z}`f$42d+E^UOg9NIx=#b2D%6ex_KMX?gKL#8Ka0xauz*V`5Af z*z1o40h2zBSe|*jn0@KwGS8gYi;5j?@{C(UJ73H0V3pCl@zh}I;ej`(MkA&;_w}ps z4*Fq51a%q~cn#3Mj{)^Daf0fZL$~Z!G@Tz6Yc9;4#-6a&4lE4796h~x4lK@Tsz!rN zE?UPb%h%^jsoRL{mCE>U{p|BApX#p!o$%kXTDwm`#Ua?~HztVYr~7JUs0UZi^%i6m zSCu6pOa7=_(7ughzTr+He!)CK@CWlkJ)^p0cr@hUfPr2fWU~7|LLTJ>MLv7=)`a9;$!|cjugXtOTC>rFd+_X3lTqzUM_0HvYa@ zuNfq%8@>}Y`-Tb*AZ{LW=%g`SHL?M@byN@Nw;DowK-;DT=j$$OdqMI{M0J3x8a^WM zbhdANKj%tzx=BsUoJ^pzo9Z2XP3iHie&RniidRrBv5 z1a+&CW)R$=l|ENCii!zTsj}`aQ*wNI6oOb5=RUzl&tU7ie_KZOi41{|l<^iYW!!WW zxtuQ8N;8JIC0!?MZTG_)?QV=UE6bkKd6RE>zQaAE_1ghyZH1Ts3(h_S>6`}uJbOFp zRLOS>+@^gqTOKK6zFyZ6K8e;;CxAGp(2W-Y3&EBK$9)-Xp zVS8(DqWn-=u#}kCujb3jGnZJ?{uqUP6rqRMoW*T)W_F+WXjg;N*O0VXt0@g)9Bs$E)B#3CwVLxp8yH{K+T=O}5eR#myaj~CE%d_VY4sTe zMy`W z&?h#5WU#6&)8)O;kZI;mU%wO(2fH^5`sOg{QzwquJ(rT<5u+n4+v^@vXcKUXbLhst zg@$O@daUGvGPKipyYQV&6$^BIH{@r3fSl1*I*QY=1kb6|91(Z$^t`C9{KyYREVTFg zsV>v(g~T&;Z;i=!-(Lykl17(q32ye>V8jLs4mV01ch&lS(dgA4Rr0O(LZFPqIYfoQ zj_XT}mw=ua(5@DaSmVLtNQM1~O(kX%?|*(BqFWfVnSq}O4kvj~UQ(T$Ce-^D@2nTV z?X<#cMk|7XB!0k)_I)T9Jj>A|lW`oM5e7eR!8)5yd|(`TrdKxZnWX!alar=&xTZ9| z4K!Qg7pq91-x|In815TuTTW(QDtb4oZdIO&Af?>y+AKEVE-ve>yi-ZHYC0$~+`QPe`+m~A zxopN1KGh63Z^?fASpG59s6Q*?drE{A*}l-`#Fe*4gZmPaW$zCV05FQsq=ML}KLQXL zH_>7H9)?zp+?o*+@p{6jP7MIe8mg=T_yv|RKVN}Ss(Th1P>#08vw#b4nySi(*^MmU zo@+h%DJ%1~&kmHwk4H_e%H8sY`P@2KGZeyoG^0qyIBT@>xUscF#N|-_o=?~mP^BF7 znAkwqvQs&m{MT_&%IhyKpDC@XuGEw7vuKlV$^Uxld&mj%8~X5T{T|Ue+PTy!W~C(0 zR_;gYn_&}BDLFKfa%6AbTZ(iVAR(wX$HL)jykt&DXsGpfm>i%rd2LCV(4!2HzWni4 z-ofZ?jOT#(!fgEtFK@{kuL*8n3X~a-4e!tWn2hoXxP$bH5$xQ2%-7g`#P~KN6T1sd zQKX(PzjU2X#71O~w8=rKqkUnOPl&u@w?DHU5}iwm@nL?L*e&*jF{+gtoSq8O)Q zQC#ELiW=|~YQgawM=$=f%6T1-Vjw#yvO&BfQfww%T1eo9@fp-Us;!G-r9s#5Q z32iagsgtvONvf3EN4pc;pj9wKteGInH>jI)gp-ewMvYZ>CrLhexm0_I6?S+;UF!x( z%W6)8`IbAjINZRZTP=Y1d=a;JnUrE03%n!LQZmMTlH`5!EET0DB8I>Nmr&n&QC|u> zj^UU?3h2NyeVtF2*_z3il*WG>5`y*`!kl}bJ7!EJ*~Z#~6NlH6R0Tb%+yEaU?#~bL z-&ZU+%P-o?{MQRFBOC)fa|3nBQYon#sp|g7*wPxk9wPq1h>2vi)dvL^$K+=Nhha{? zrNK7D4(DS;&XK5AHi;T8Q>I6rUAw?_K)s%`KSb>fHd&7)7;JO_x)VubVmV4J-D4N> z_7*mB(F3c5Y)*TBqFt_1yNtb)Rlx*|93;tC{k@ginOlkR$5!gEwwef1X&DvoQ{}tW zr~L56g&|YzJUUMfx^@)DFk1fPjGm- zHTpCzQYLrlh1(hq+BZ4j4B|3iU*y+8V16S=k*69)hzHRcsEs-fC#tg zc%0c^GIDCNWytGshjP@qcvj+0VLNh(=XI@J-tnMop%7r%y`bw2|7ioxVfpp?h)r`4 zL6PH&cX37HkY$9OP5;SVCgSpiQ@2Df3FtCgg|MK>E<%k8q~Q8QpTAe=f4as3a+N^{ zK4d-)kJj1$0YSWpaqqsB1YNT?+KJAnf8=QYH`wJ{mll=d*CJmIra zcxI#5ZcC%fu@xXq6F4;gA%^A#?ZY#Vv(m9YSM3h4z(GCs57fI_7?*ErSb=fWQ|RmR zQ4w}{RgV2HdGYbBE1@!F6uPjrhx;TMx8IM6v zHOsq&A<2x)?AX}fa1+wF3V{Rd2O_@qoRsjt83Ussx4W@^A#pN%%c1y0=4^?dul(I@ zt7A(s1tHnF05vcIIt{hHq12C-0!0d0Ylb)whL zm)2N_3RQ0gj`UivdULCDd+mjdgjOT}pPR1V{LlSlWRHP1$joCRl@T%yl@iqmV@0X- zw6R8I8cRLHZ3v_VfAl}IHiK?(#O8q_&>x4g1L;ob2xynaEk=Sq5=#V4U;($~UB%4F zs*Ne2s)O!`#ZeIRm@TEzn#%vW^dCL7)ehr$I%vU1qbL%fS+>j7zQg`F$qh0^wc=>} zuDC6il9vL`;3j|@ivZ|ib0xb$&1fLgn`O+ctKfintkPMv7iQ(W~9Nd5!(>S4wJ9$HH z&A2T@0)$kg8pwL)R`jo?F<>Oy@)B>Qd07GaTy27I9o4W||%!8{F%Ukq51Ym9K@%Be(5}*yR8aQI$)R;pQ zIypbIA4=l+T#C7!G8Cq8Pm5*YI^gt>QCpnN9jtSDN~D^F+hY80MN@_*UirqtnyrQI zaqUljH2FrY^zDWIO0V9}Y^ll;=L!4tmG{G5yJBU(98Vr*6J_CK14F>PaUTSl%=ZLZgPG94Q^L1!Wt3)JlR?o)85+>% zZuC**NoEUeINZ1K6u4f4>-$9 z#*+T{4&?h>v|Ja;se|hpHoV&4O}^)C#GIviQMK|5qbYjUr=2bLeCPSR$KEet-nin} zlw^8Ks)z>&=6e=Wc|6|OmYmppaNBB+jJs~kd+B(An=Y)gd^qGc@Vo<5m4G5}GSIaE zcXZ>iu2^A43T_HX1;@0*aui~%bQX-?&R{yHf;|TcmK2^!(6(S^$LBe=8!?5UVxW2- z807zuXJZ4L^pRF#>-;V?6kQ zk8$K1rAoM!eVu?t@3sF{^UNxqVUF@AV~2U5v+Cfz--rVn?*heZv8{)U_!c60WgWfA zHVR6WoB(c{U4Q4_N)PowErfwRc`!t$m}0oy4r>d}0U`#9v04AJf*2Hm%uo{^jMy^N z))6=SVV3{AAC149>0E(Z{*&NO=MWPHvv#P-)hkP=SvfBd5LB2Q!K|IQg;gMU=}B&9 zx)%z7ozLZBFHJ6Qp#enO<0T(XZc2#0TOgAh8mHdKs<5+FZ2>{br|%W5n#0 zE(FOAEQp{nT^_-O>U{eeHC_pa4p!P6W^D-OnoIFVw06W(%7ncs>Tgk*#E2oeIF5&( zK2PWiE%gzQT(~KMo-PUx#erY{DR20X0E<1yD3J3-IgQ1hFd|AsPq>>T_m006?g$kq z@Nf4!MDzl&qnPXoHQRv$%OvY1?+ay$HucE;+@a5h8WH@()rS|y93>K8rh&(W*A;k^ zMW;rhNV`yR{w=Yfbvh5ewSoQ}W*`(CqT>MV>jCC+f=uhQaj3z%g_!1 zGSkxPfB7OTO{7Jd@vK^i`|ip_{Jbo0^ZQtz6K_7xgaAl2yZ|<#0}>b`a-oK2pcHd3 zDg63O(@8PqNa*0hoAH%SU6z+axuPqCy6|dbamZvj2C*mt-uP>q5FOTWk;PP!k3Cg{ zv~abzR>~!HD0w4dZ8$ys+4%R>bCj;)sy%*k(Xuprz&2(DJ}qeG0$46Dg8g@J4q)+S zGkIWNK)@PrC)g1ux9wfPtXe7;5FY*Km-2&$|2Ho=id{ry54j+Dy@>J`%7y*iBcJFP zxVheroC@9ByR_o~{}Q4q<7YG46o%-0LW5|%|>GFUpN`vVQ%8f4BL`yh+Q z8{av${7cNYk=;JW*wbOoiSjl)QH8JKT^z5yN;sXB@ZQNuMmkh0^ze>zK#Z?GSTP8(6&} zO8{kBfW8M&0w4w(f4`JD;SrvR)CkwEzu|<78(t}&PLmC6fXJLrxUh3wtDF>Vo<1)m-qDx{xt+t~?C4$UU~DcMd!Np>F_?u_XC09+^XEFbjbu@-ycCe+`9; zF+d=j3Y|kyg!*x7L?8PvBZ%F=;tA&fYK793NJh996PrCcO^<$t+|fkjxzbmC z)peZgM0t_s2nqBfFGjs#Gm-daA#hycm*nxK7LMDPMK z`Q%UcmBt=9pv8y597x)KOS?J$_H4Lyv@BO%_&42|35~G8oh0$bQAw)pM8%@&AaT(q zAn4?eC-(M7g#_)io~S;#_Q<*A#7LzDXBIvhY8xX@lU1NrB0#CeG20d>0gz7ZLDT@F z5H(8%u^K$dw@{xyQZu2dIj|v-9@_}^-8(Z4;M4 z_{!Z;S+HMUXaGb3o@?Tj|8OhX`{%!X%NLzM&@LynL3Q^~HcOy>eXfkEO~N&es#kwV zzgXOPCkvO>KN6C7#vp~;T(rfXytZ&1@vm<}Q-;B=G^AF6UD-DS#j3K@_>s?fld89> zAx^S_&B+&y$*iJH-T|?*>cwde+$>(Q4M~@Tf}$6T^1<6&1dE zm$~mqpVI&e*@WTzf-3LRTD+@v<{`IwTbn%g(B-@6t_1fJ2zD@Y5a*&5oJ_gsp>tO{ z+Bo6kiTv|g4m{7}e`T4^;2}rGmUir0uoUZPTv+CF+0`sQ;3ne#;`tBax4mnxf3o{^R6NV@C$>Gu zOgd2dQpz+C3O);=p~kIc;BoWE*8i^z4<W(`N}T~uGZ0q{vzc)PP*%ssQJdQ4u}F%7 zuQPb|Zm%z{Pf7t~nN-3w9=h2Yfm-v%+IRdD+Qff{X}m!#>VpOzkiCJSE~Br&y|IG% z+g?joz>KXj5&F~gF&e)Me9P~{c3$uvH}x3c)d5fNJw5Ho0cL+!WPCgRFDcvA$+0pk zdK#`-fW~qiHLJF$jw2IAXknWcY^4NDQ3pM}Bl1r;8rL3R_h0FqKJXw+dF%HI`ic-L zmDHPelV3pc&I=lNddL{dUMO3-n*3`hm&{3yDuHlw9Sm=voLu`z^LpEyI$E*sdxm3o zQTR?D55i3o*^NB-ZXM1nptVx3m{9aPm}J!NF7<_|_`}66^L_+NZ>T1HOCnyL)0BGX z)$Epgc6eDHA&OXVj4TR`%;M{d1JexT!yCEsrx9I&Yj9H{9Qmp|4Kd^J2f z#9O<+TQ%>&4{>et-D9nLM7(|WpZV_e?6<8%Gjmez_>0H})E?hus}Ft3>muY^*}|D8 zkY9ULIkbJpxn;ebgJn1sOlCmErfZ=Y=Y-u9fuvCbG=cy_(Vvn=_84@7Kn4*7r|2=6 zdsBPhxL>ghrl^?H&4HOz6_&BLuM@8e=KGj{axyp%w=rT`$Vm(+aGCv?#zBdO_Go}m z)WIWOMOOmPhpj1qC};D!w&?*TMZnsOa}d~6`zLDyN&mkuxUe=OT$if=x&4JBfj$ig zo4t(O+GPM}4vQJDrqmSvLnK*IY5|d?ilZENL2P-KVqI;>9z!(fEI6tMnqPwSaj3s0 zd)s*XHk!IZ1!t8LCqM(;VfN#t6U<(Bx*yXK_Cpx+wFcOGHh+}Yn9vMK0V|)#_ZBta za2kAWH7^2AtkKPxbQE~3!)_xf`#J$0Sa!Dm%JgEIW$7~qMA}ocWyU=egRSpNZa(T0 zU^YG?pimdqHiRQ`Qw+jN<1QKMS67%3F6eX8WD4Jdu4UH_Wtva zD&FsGJy5;yb3XS4)Z%bdM|iCLtr6US$i9($k);{YDTUEJY#7Y+D z(S44;thgmIUghZUUMp8Gp zi-bG&6{b!E*ANgp^N~Cy0VuA~`O)3oi{l?Zd?ZUQre17t*m2}~DMp+8{K;zTZP=Oz zJN-V%xd|Zx%m_#jmhtMH>v3bXI$J+sVXIk(U*DJJqKSidMfl#!w zS4uqGY|vf7*FPYddw6$)`H$B>^o>WavsNuVaoqToWfJiLgdSaVfybQ@Vs?sJpH&uCa6s(@&EM zrmKB+`KB9Z?BtkA(WXAL_74^3_z33;?i3cAX<8Ph%3BthiA@^Ci?^BC5{pb7-d_7^ zZAAVko&PAIZ}LX{_0YO7q+als`?Gqx8L1^Twil_k9Jm~SRPW4-_%9~RO~^zj8ZF#& z&U>%IoAve0>PZ;a(!;omUAR$Oo=zXRC6i?+|IyIK=_j#)4L>|vu?pp+gXA&UvtekjnLBo~jPF4z2+DaYui4&>lcjHZ)?e(eNej_2oe-fvH*Uplf%68p zHYmh25^PZ3)I_6^>p+czn)`5+GPK>_CjS}XhTT-d#9}B%=aE}xa{eR#L%u9gm(MI8(XOFZ};5F zCGMY~S%2=S)}Hj(b=GJKZAN+lN%%)5%A!|qza@aT6f8z%Ovu0BGA#u7koWSCTfa&| zoRrIJW%loiy$b1pmD$@^o6?inHUaIh_xc2z| z*l?bbkeF(M(?FfDq1*#ceX$HF#;fWZ1dpgn`*07EadVn;>rylM#x1)xRp;|vlQ%8CywI5& z0EL*q_g|_d`__cO@s29O0%y0!i0z>lhqfI)<50lk5}*TMzIhF(#+*EnAQ{X6$dAdG z$>n7ix`A{tX>2cQKxqNwS*0*fWHFMSp36*&fNiEsOpR3aB*hJ!;SaadqMT%q7TveX z?Bp;Ud!j0dut;lIumxl6US0Kbzf~0{XLyIGkTt~`_GG;tt49r|opQwpR9_t*Rxd`| zbXK2!Q<$Jskb`WNamAlNy;V7NR?qatsb1y}DvP@1^_}4O=w-13D=m>xN2qYubCYzSgpzZk;S+te&&H8#bH`^jQWUn%t9!it z+UBX6q;gi~pk~^L0bjC`!H*EV_hjYfWmc-T@yEVWoQO-MeYyu)ef|d|cjj~5=aB_F z-GW}R@O&%vV&nTBCnDpme>+i`@YF!k0L#{2;uqZJr1Xe}aMg-6@!EwU`iNaQT-F4w zoN-dFsB7tyX3em+svf*HJlFr;X2?LYApfvT441_LqnE!NeKQWz=7wQhL4^OADcEM* zbHSuW<5<)paFT*vC;?&UKYD~eT0Z5Qt3jT4$cgL>%w|B=&Sc7g>t`Ki#TzM%TD00G z%9-rwx8TEkhfLGW`_ww3#L%IO2NQL*WMh^_M@QWvZ(dde!=*FyH$(KEHT$atZqS@g zONW2R@kN>n8+Z)D0K%9X@(LtfPj-2y)DIA+ZEndSRq_=OFB)o z%|H*Mxl;54{p``{Rhb?7GP0z_{#rOS?lo1u0kg;U0@ZnfDC&N<@UB{$1r*#TT-G1y z+%etqEFoQHBkF{$W>+;i%LiHF72XlEZij5N7??XT>N3jNqxx*gerxEO&NJmwfrCdl zd=Bq!tbcMN_U zd=6sWpbTMgqCj6Nm!>ldBxiy)c)G}BkZsGBed!xhg$k_wu|WLgci6P$BI?}M(f`kgloibG+eqOOJAsS1viGEK1)gpa zNrt&LJXrOqBeDlnj){MXXBjVI)%;OoQ+vL)x1{C}~4C{ z!w;sONA35Y-5+7NdNApWA&fVXQ%3Y9Plj-hjybv5l60sA%|$IYD(-<=RXuo***EfI z@6>nQsEQkdHA;JPvL}b}j`w#w4)h|sO{O;5);KhziowHzyL=RDU%b1WX84uxV??%L zq*3skhT+kbCj*~Owj2k-fH0iEExg{I(L*sZU4bWk-k3btvX9PLNc9{VxOUbgW^~%2 z;!1L_%1&NKdB^dYBm$8C8u$>*xv2pcdUZ7XCWhk<5d^{&Ci+xSyGKT6x7w4N@t@Ux z&5rzBh7=6qnYQ1pJ!=Q~WKatgWt`JK90 z3^<{VXdK1DYngFGjaW)Re(0cw=^X^rxd9%xmIX)>c0~_JAJ9N0$mM`-Kx89etU&*O8=BhfNAr3N)a4 zkrT&2FH;**a%>h7BSqKX9jkjDw&C<#?7y9jGSSI5vbsO=)UyOD`UysXiw2&=bqB%= zM;j-B*w?R&BC;oU>pI-e;U;1_^36M3(bC(uZm18-4GdGO-et8H7dG@uDnHiZQrpw4 zd>a$npFDSF)fwka^uy|q)l0|Q&^xJ?1Y}HxdQ5App17L6@Pg7Ya(B zfHInblkiY010;Lrm{zpE!)_xsIq3kOf=rW%j)4#Mmj?0-JqkJiQc15?DCYJ^zOoeR z6B^jHa)Puh=OsVlf1uy+&w{^VR@?zFK`dJJAOKmmHU!&TZp~04XXA-x6Jsnc83*kI zOsYxYKZ^8-TG|CYjeczBj0o!V4;hR|p0kAXD7 zDl9a?w~&h4*(DYPeOx?Z(H{tJQriH}Vhx=D6|mEwK*)3}U$eDrb^tC8hJ2n-HAtho z-1Q|6Eq+j;sW6qAMOMt@$9kdH8+~qN`QN0W-E#E$=W0Z@T6OY$9_HHhaPx zh7X}1@1z6q`e{$H03jHwo~3i&hl1VLF7cIOFJ9?$U@+6dJJ!+2)=##+{_OV`k79bM z$vM<9eJYWJLgMeL>Y6s&%k(L)wQHMIm8UG6Cw-T9lC3ZJRmWYf&Ck~H<#YKQ=wu>t>Xf5fo6>CaazawK~Gi}mE?O%Mep}7y*S&LA$nF940Ur0h+2BdB)x9{ z(mU!wzJPSt+$F2FU{OX!up(WQ%n>Kh2$yo@88>;spF4pNv@!E?&*2STrK$DN`_Lx` z*%IB)GbX!hU!m_kxhq|E^60UhTNa!#P|w%`vq@plpc}U)x-jh4gmYb9$8Z7WdJeh8 zyG|^Dfr@|s*vdID@kv|@diu5E=CMf$2c1K$0zAF}rc`Ir>O^nt z{@#bUJ-+kWl1C?rdNLIeL--33qsm0lGaNU#kOx$D*?m;j6siHKtWcn4OM2uq;7QoRSnJig;GU^k-J=4i&9!o^98*%hJ4-p6;#RghU@wT&n};(Y?o6O{vaKJZup^kf zHR~dB08j>Db?|k<*p}8gisWVM_nnLF{n-H?xkGQcohy@X>YE!>LJ=0Y?&@rlE)%% zCSgW?hq<1zjmI6ngO__3jK}aV_M)6k2m*rV2L}Zr=^Ag4DwCb9JMFW0ms-`5NV!+Y z#!VgJwI@2OgK|11ly|wL#f`=))nvTJ^Tm+;*H}n|v zIOCSyF4K$@u0C_9`=KdO*k!t;`oU7dZT_2bdsH9uMBfj=`LO(^2n*1t$HhLNU+-EM zpQ{!kVA*uDyB;a(T+J0X$wiA^vv3T}O?Wc3`;&xor`sbcob)kJlzMGqnUl}Wg3Rjb zO*pBhc*#4(_4^7jMfTm&q1(>fA0_jERlYC-uIBV&*MQ2u|@)6CT#B-w{eY7#T?4`X$&DL((qJ$goVchNpsR^VT0 zPn{bNVkJ1oWKz{gv_^`SeYVPJL~NjG?$GP9u$+|9117M|yGuKWhVT=aBGSB8U65uM z{UX+oFCsjzeuCz@N~yWHx6Ox}yfWPK#ev_CF}cL^J4|P|7?{VZbm|FFQ8bxG3i4Kj zNyhvSKS$TQN=tBtP+1&lnV^^8)=$$*xDAeV#hN^rA z!;PNQD$PP1cpbj1dEv@1J8A=cuF}8JqpI!KQ$29iJ>0OUK~2q8%>|@(@K756+i@^M zq1j%d3k=L_tJku}Hh`BnLm2fw@T>yXya+_$U`w+70*pGp~hpz9RfLUKvnO(n01dL8%LUyc&k zY=9Rh{nq!mdiml?3Mb!_@rQ*1KMA#73f%rvVD*>K>Mw3m8E}&kND6D%Rv%*c)L^v% zNza2*-g2sAi?WC5EHsabbm?3pwAp!BQML2k#0t@SDZ&~nW=@ZIDpLk> z76bFIp8Z}GGRZ1y6-q~tM$tjE%k(?N71XOiZ-&&9C)Twt1}F?gM9dz)^PPQv>xT83 zcG1|<(N&;643rH6tmVGIfXS)etdAebPG#wCa~~tbf0ChX zf0m7?AL{~)C^#*NDLwlgmfnk?NTZf6)O-m60z@XcD+nqjH`-Z$hncHiWrob3Dj0wJ z`3s0LKH#SMpu?yEZUF5Kur~lLiFUz#hkvOKpa5i$WJP@iIC6P3gQF$_59z-C9d-|O z6qZtbnQ{{RuODfH5qul7b-!Yp%Z^7)jRxw1p)6^+(DS=4pu;qbjBf!pXn`tZ;nYlO z-sK?nQn~iBR{`z{{(cXd&zN~zeKy(2$+fhT*lXo?-KRy@*?_d%fZBJv_HaoVjzo-4 z^7KTx`R((~2|sYl(Mi{Ub>GHI{!&{txxfk_C|xI);R*xUi%6|c_6Hz^eXsuV;bVjq zsMkBDu~mEk#SVzzcs_%yanEgD+Ebs$UXiAV`h){Wymbte$=$ZqnQh1wWjde?i#7l_ zwgFWqwT{3uU=2|O6peiZqy&W#KUE8QS-wK;xRtvg9l$MG0!Dr<@#vcWD*ESg!9Nuy zMdq-X0y==;?`;5daJTOPxAOBPeW@e=)^GU&cgc<5y{JL`Zp8Ca;={lFhX}aR4SGU0 zxaYrwT<3ty6hF3NlnS*dg6!u)e<@L(spPr>VlPw4rM0c(V#f+F-XSL2CeVyuCBe(i z@dbo-?)cNGoQ3c^jQO0nn?j9ZfCyS#_+umksAz=)iJ15$aPuwT6wVFMqBzY_F*Ex7 z{}O5yUe$Gg3^Z`-;9OY~)R(%(YNv zK~>w=fz~0{zIbdrnBRQD7WqM$Iqs!lj3xra32T?|rjyF7-+hN$^#n6W(j?#}H=T5K zcgp9FwF6!H+`q%T)%=hd`3|iksw_Vcy98C~P==|KAF_6d@rtM*rG(+mTzljG(aDwU(%A6h>oBrg4$ZtZ+6R+;qV%g6Ob z3wC4(d^df+0v^Lxf)I6s)O!Q9?*4(Oq6?}u#+WLG|o2nm_)2@2t;PNMj2Pw|LkpdSF3RBT?DIT`Wj zt#8i+W9;!-hq?^mkloRx6`3$s=Yxh{fqUcQ7#tCl?%Uyf!BQrZ$^%vt*pT#Q8{_b- zzWl{fzMFgojcP3zot7nQ_2^w_Rjs!tr>{i@_F-bulE03XdeoUg3Z(GXK?V95N{^vK zlph#(fP_Ttvk&aGFjm=7&LX3m5epq@#ElE7f1XCPdDI@$`=fY{n;XkA-u zcIpeE-!j1=Lp?f8R7`{A5nJ97c5|Iw29ocXbE5v1)$L{6T$wTNUb?HWDBHV~dFp0y z%$d0CyKNPpF0LP1ozs^xCyTY!!`Xx3qrQ>$y*j6cf*#+v0^fyf^Yl@XEHV(=98A0> z@%XAlqG6yX3CtSZr3y5hGEJ5Em~6Zf{l@)qH>4n{LD{3g?(TD_SOjv5h0djL>Ts6vvzo@`9zvK1XF~_;e{WnTJ?I64+c`6nkd^ETvBxXF^=>`>#k|*oqY1^MCmQ&G8o-t) zw-Hmlzra9ZHff=JrT)HXqtdjB7aQ+eQQl*ILJR&uPXMTLce*QKJACGSi)=!c`#YHE zExF&uy=0TVBJ=Ln93`-wEbYPVsFk}I zKoDI4DSZ4N2Lcu{>j5nwF=E)!(s)Pp zNVq7ELq(OnYHqP^rztN^Q3%sc8D=0gl=*S1Zd3CrHwSx=ISDr*nVcIo<00ZItd&zy zFrP$?y%e*u_v6{ZA9Y++kKmP2##}NbL4Jkul#f)t8s z&NtW|lti4Funr$?@sqV+OG|y?NRn)cCDa5=8b4lB-Z9%BD$dw5W^#7oBmcWM=X0h< zL@#t!ahyEKsS_|AH>DMxFJjpPiW)j@3ZADXy80qc%Y)X;sonh*rijP2Jf>%bksPy9 zE{1$BPVDfE_Zzmedyyp;lrLQNzSZ5GTjBm`ZuYaCyzCa5Fc@q{hytKOzMxiQK|e+- zYBz{(-GrLgK*0@aH3>4!IG|$%imnT(ds&Eo34s3kTZq7%T$c2K3TWD!xIcs-;3yt9 z-_%x)MS$)cXQp6;i2+tyiO=p&QLQH4xp%xEi!{E)n6LGLBWV&>5F~KL%Z|qkulGq! zQ4en+?6cGFuF@+|Ht5loGpi$deQxA8z6~RdiTaAPu7dJI@NrUmVFE`SJWRIRsaMTz zNz5C!XY*V_W$me#cb;Qqz0@!{t?vRAsqK^SXq2EAPGBw=-dn<_d@jtQ)b-{g`<+YE zNxo0Z>e$*=g<)IVTc=*u7M1rd7Ah=_$Io{Y)MH!@T6{im3<&qfLwB+PTfYtr$$SvJ z(GSS5L-sc_CazdUiQP+$17#pv5}55ZDht^J1=zuysbP@5Rw^R^5P~no00z>A z%pxa@88KTvP*S!(A__6Z`WA&R!ELbsQ{5!o)Bpf91K3>DoR$S=fmH{bKQIq7tUY<* z>NVn;GVl1)oxDb`K5Y!OuBxr+-mio=>Vl&EZeU|8uZE#HHziza4D2?o)J=J_u*(pV zk`3HSBI?5rLv8*dk+u|%?(ms<)Ak2bpWg}f!A*Lee~Q?eYH7|%cGSF7olI;o;&U4H z^`2}%6)7+FWZTUpx@>quM@VRllPZU(Oae9;$aJQCs(DkX0 zCOSkH{O{n!M#CPYrqGmLNT)f%EB#(`-ic6&xMXA?_1uE<9e`0R|IPN}qnScWUMf&6 zIdR$p(lp6_SbuLRZga;N(7RV-!1SpTj6~+L2%`on9Dq34vPQ!e=q&(jVg!5!i<-8o zJSfjxRA)wP3K-bu!rF_)O#%XF#Dl?xuS4mE*w=p z{;C4z*R~riD)VFH(RchT8>yh_#F^&M%4E3<{9LV^r4OV;sb&-A-1OsR)S%p15}KpY zap=L^<&-q_@?TE3On+9|r{aA7E*q?p{=Jp28u1K5>MaQ58X?Vo zN$u9%%$I8AgpMd1|VT<4>s#=t(dR< z>LpSsy;AXQ1?l5cmu!Qp?*#-B8&ug2GseDXjz4U^UQG&)eCL~KN*4N&?B-eMdeNLO zoL&@>(syu3Zg&x_D)g}CJjY?y2Ov;qf~7(=B5Ck7IOFJct@+<&fH#0};AzFI$bbQp z^?3N!kv#AB)c_hDK!9OvlJ~)Sr-cAmK9~fV;h2$n%bBTrO$X9nFr=w`Tl$MUzs+@b zPhFP1^J?fsUC6={?8i?st1kukfj2>UEY5W-+FpYdI1118+w&ErmL#@xc=;N?_X99{ z_PICq0jp5LgfjOW#6x1_pmWZ24cWe}_f}XrE|+2K(58J{;j5o)lI`9SCrkI>~u^pnPHKwyOATC+9a@ zi4Xm`z+x9*kpB;H?;X|jw(pAuK~Y*nrI*kIq=-_bgD6Er6s0#6X(B~w0Rlmg-a%lA z(nOjx>BT_kD2P;vgr0y>C7}ig*>AG;9p~)j+INim&b#NlKb>R9&>z3wob&ssM}^b{ zB^lW}g+Rykl!)&Dc_(p;+05!6P*U&v&sqFP2`JD44RKA4@*81igkD{r`y({vQ;*tf zqUG#BXp6j4oxf>p&AqWFtH07VCU%G0B+iQR>2X&|H_4ykFyTHU{#AW0oWhi_7wiHf z87~7@WU2ns#}bDB57JWPF|1X}Z%KHHn!FjsAR29rXTIZUIlgP65@ zS?38o;X!>k+PVV{z%$X8tUPD(thB+I({2entGKl?EwhZtm;Qw~%m$zjl^CPLT2y8^09GAhd^RUfcz0_Y;2j^?8Z; z&##u&eBkX{^u>+!m^Kxdiqxnw(W7pIVtOL{VsP3zQRkKTDP zeWMUtPH1ZxNbaHKD}qpcUfUkSF347dH_4|HMXZUPcfQE2S#(d_Y)Hx%mZ3R5ed%nD za(;?PixV|h8?eHiyW3-t*%PG`#z#Pm_15_)-Asr2xnDW>x}hZYsVt?N&Fx#a-@x1F zpy-i$Q{i`1`~N_Vt=`4U_PR6Mexr8HQfq@A*bs%BfBfWDBTW=s=~l|vg#HB&gYHah9&)m4Q#!2<@Bi~*yZE(;~MtZcYwU#!?o3Po# zxdjsI5E=|?l9P!B?s-d*$YH7Sv!Cbhv*Yi^{hAEK&Z<9%w2zqm*&cZIHc_}bZ(_v; zmWPBTt zYBTis8WKEumBMLh9;Cj~<&VsPx(o%;k1qm`LoV?(DZ5K4zJw>w><=k#6BmUS^K)gR zCpXxCG1mKN{Ny&xGYuy*Vp_R;#l0on%+`XIFSS@CLzI}mU zOr_#*g!4H5zcHHrA4}Y;M}%JSLq07(|3g&bDX7)jPq9^`Ox7(05Pr6fRsFhTMLOsh z+j!q-G}OEySguKX+$>(16I8GHP#B1;#d8y?u(r5d^@t#u#TL$nrUOeA-v$Ardv2fD zlT}KXnoq50z?_z|&#FkhCE>LR-aFOqE;v_*Q*K^|N;e}K<5m2^Ze8y7ca-~P+B?l% zO%&;bVwJmW&ur;Wof!N2bsWW!gLKmp=c)-Yl&9bz$rtZU!lZmvEVHKkEfaun^Ng1v zR-skx_%}C%lzd#NvqeEMVn@FIl&B?=-|pnV1xWhqhDB&CB=8h)YWyoIE&eB0Y`+eK zl&`=>xC5q{JYb@+2LKHCvoIc)u)kgi?wNtjN7U)>YhXJ@G#|LZ<$Lr=FuWo2<>Ym< z(OSt9Q{|3)e@KoP*IuB3!^BQpBrThN7MitN<|Noo#ORHB4~!3(RStU{WSZVdzc)lK zQNEI)_o%z@aSt7p3PeveSco7>{qpbwAF%>tEx>0w80Rt-G)Cr=rJHsta3}d{nR|S> zLv%j%o;cO264J_9O%(3IK|7(5FnYNO!{g(YU2}mCf0`ywTL)2}pEPuoME|NQ{>rf2 znRR)arJ6|JYN}pK8&$d$_;9K$2TAfxi@TPIk_ZV)cMTv1MDL0akZ6;#?NV@A%@`;KGO5j<&3Q$ z8A57Age>XD-FN+t@97&wVw@O+Z$~qC91F6Fl~*daOg?Hp{?`uYyF2cqEkctdRsdU) zie24-KvFH?y?k< z+=Lq`9Rd-0g7W!gF>3(`kl=CLGR`;Maqh-JM1nZFXiy|ySbTFtB-W6!0pf7(x>>VxI`4yzWj+W z!N^HKVzR1U4qj#KuRlj7Eil!J!ww_1XO0Z$HMgliFSazuN%`3|a{${mJY;kKvnu<$kkDa2v((i04MWhDFWI-34 z3PFS4bGwS~&rHO>vube&9?x?}#Vz(~F?cvp7eKQ{m-p;;=t=WxqHwLQES`*weG00LCuJ#7_x;DPgk|EgjE z_^-Yl4pz+q#i~$tf;u^~u&d&LRYeAT;kEupCIV^zQeqJRm94Y`b=JzJ6^=Q_DkTuE zbBBhV*z5>bxz}8A$eZzs?p_T)?|Ql=Gjy->`igy6?7WY8g^(h};b7;229ca7aipia z@bfvpny`@vmLAnQJFi*NG=`}+FA{WV9=WODApnM>x6?X!LiT(XZ3PeLxUZ%NDf^+J z7D2snj%o|8m|t;vknD*ALc1qW7Lt;I{ue@XMd;R{h4_gmPoB|wQ)ZbGyvK2V*o9A@ z2Uylh0KEHu!M9)@RIoY<|g=|;v_(^SeBYe^t+eJ7|oPqj%jhs_} zbhOLfQ^Y0n}Auv3tY^$vQKF;*5&)t)iomC>buG* zaj2BF6{H+g65hpDi?UxvTqZfbLr4(FO+KkRF;V5eICpQ4Zl6M|^lL8>e^^=R25r{S zQq$##6&c@#&_*HP7|R`dQvcjPATeuPQo(Y4P6$anOj1uDQr`cdh=s?PQ;#2cJ?Uvm z^!~H2%i?|Ta>)g~oYa4DWh(YN!YkUFY~xVMMT?vZu}WzPMXfs+`ReldG7sc9zobwwfSWxBsR zEB@?)2j9}a8tHSO&gB6(5poJ}I0N&-k-+!5oY(IpOAeFcjw={Yd`Z>-nyEV)P?AjZ zFmHl>Ct4N}21N083S(1!{n+-3gA&%f`oGiuZ1*HqQzX4XNK~h=$<;Ly1va{I zm>%E0oKxP;ab@qj(>5)2KY+aZ>NDSGy}OwhJ<;qG{({^C_GRo?KJL&GAQTo@D$o4y zr1#6-(VG5|{Tx%7W$c>}p;QK{uhJUonoHY1ZBCJ9cbaO;)8)2N7IDKWX*Z(I>s}`cz`;6gkPRGAa|s^l(z)xKQxZr9{7-iW7%p$Qb9s|elaT+T@E zf;*5*U6J|M@r<{={aP=qp2%%&LP!hUxt=Bk434icook7h;Kp{U$1dX01C+x==CMwKJK+{VOOs_n4}`G8Nx2;7=I9`chcXol-QQ${+&Als?B}F=Jd4s9+jS zIo~|IeLfYD9?RO>sA$BbX8MGf(Mqb#b;bg=Z%(hAEYTv9Hq(mjOj-(iAf;SJc|&C@ zTlyg4kDo%IaB8d8q#9K}DrwhPo2C5P@5Fot8&j;RCO0SP^{h!4Z#B^tml=j>x3t#R zjp@dH?%M88E)R3VBBYtQ170K7*)Lz?d+?bi6&o0{LpM@ZgC2*@y)j8FWmd~@5N%da zsgi+pCL=*a)xWg@0qZabG2z3eABM}SA1aSys-+CU$gKqNzB{Hqf5bUkfg?#%?pg5) zY~xh(KOp7MBm4>iY{h>~Ygqa8yKSi4Wv83?;}zK9XcztUhzdKr_3DwbmM_9Fw*xGD zswqQZ7c+e>xl3Go#H86hJe~u!BdjNo)sI5HmE=>3d;H$RgXSc?^^HwTYm)|bqg$Wv zCWg~IV!jRU!U^m7awc6Mp*BR z>+Ufs)u59R( zP}0RzTtBO4At_WNC8}nkYc8?kE|;CxGbWysf(^V$8Xyzq_k0TY!0HhV3%v^Tnf-SG zzHKVEI!c9yRS%Hkvboh)1HhJPkP#SgnFGlDvyk&oNZ?`GO``XojI4~JuG5bx)zH{M^|Gj9^R z)>CUt5}aL!BA7{bxp4gsGzUu2web5ykS-*->RKcI4+U8-Ioj%nR z)1A%EfVJ&$MqLMr?E7*sx}_z@9X)~UALi%p8FjT7W0z+xULJ~c_sfBvAzcSZG&6C9 zg5GjJl)r8>VRN1kL%Ai0#~dOTXZD{&H`o2sO!qr0XH##ZcVLbDTuKH?*Gf|(fbBVp zQjf^m?i~l0V+;zpf3jp-3;gs%(4u(w3h}_b0--=Mcg9tmg<}soDKaURto8EP=7Hq5z00>vu2yV7 zB}8f2_dIm346w~P*H*;9Dt+5*!&l^HqEK4+mAY(`l)KG7FPBW}6Q06t9&*30`*fd! z_Rxbp2Rf(>l&2tWK}hc}aSO_$DVHz@7sB@Fc%s^g)ic^2GGNw;gJ-Y0 zfU$RC4tjt9kLUBspX2fGNgJ3>_dSsoQJ@O2#!#XjFS%qKu>(T8T_Cik2?&NIHMlW< z&&mKK0O0rMr$AQW_u_oy68BLGPVmEOe&WTXr{$B2#K&pRmdBDLFs!GPIB;W3u+p+SnET+h%D(Su8q|YZ-enJMNXPNE@PU zx72Bb-Y`lThh)DM(#~@O+kbIx=%IC;WnSv@h_5$q8pHYVB3I5)?TRWEN?GiE?BQIf zYj!UnIT&KqB+uT#xZBlyNV#gQDs}!31Wxvenu2SO=9{&F{?M&k*$iW2@`ICBwF{k3 z-|KmNI^Ej}u_~HrV~U0HRM2@ewS%guo6Vb znP7teF_1F8t2JWgTu+dc+)Ym$Vrjvbpnmu;w2S9=LLQdJq@UK0Xiky0}c@QS;EdkkiEW z;YtUD2aBP`(@|oI&4U94(j**IWGp=KVhp%9LliMi`8p!Ilf{2f@}TB}DtzhJg_(0G z6N=bj0n*W+>BPr^>n#TQb2l5wPL4R4Q~SCd(yJOJiH<}ThUz%8m6+;s?$3Z)Ogg+Vz{(?8a_sQJ{9QTE`7?u?{VHn zT1Sw!h!s8e5RRur*@F}}rcw}Q>;bE~m{Pv9pWgj(%C}>8nm5ISxbW=|rBHNPNc-!M zf;N63$ydAM88I}G+dwuu zEJDf6@d#{8bY$@prq-ifx6QU1UF84;Ry{F(DKRkj*B^+X(x(v*J^a33@}*k=?=n_! zuB8ko$#%7xSPbiXXcso^E9`p9 z!)nM(3K?_yrLtawN@=6HDcIBNmqMRaSX6OyRCb-sX@*&Co24JHQu7?usPNN_2!T#lJh#oT!Ud6oo z9M)zYnlz_%$`AvESdt5lwree5t}uqIp9}wnh;hAY$mq<=?&1=tn&UBT-1R9-8u06P&1T+Kp?zB?rKyDvzA{vg{Qm!Mpk>9sLDu5Jl z+5-WjDVS4jdq8d%JQT=~7XV;iisV3k$}LA?VnH5>WXZ!yGWduE!T}s?12*Kvx*Vpn z|As}wr2V@r9mwW^I*=hS*0MVUAbFe^?q^w=Csp80qs_j*i(J&Tx4*A_l1DsZ80oxn zk|O;$i}l+&N=Zd{|NiI}`W*IgWn|weR)y+Jju!LK%l2Zr_Nyl=)DP3PXHEl6!a&?b z**G?xmLWT0ee^{)DLEeJ(k_&9k>00c(;9ujopsvsTctDOJv}WVgz0$7#j%<-)|oq` z#`6BsCDsf~ltZoig~7n&G0~RZWp<6o$M>{>t({15 zwqtpd?PQY3Fo(TlqC%j0MkPd*ViRBGwr1n`Zh3~q4dq=}o;No`zckHs=~H^#iE7oa zIl{BuL!oX-FK0vE{o1R7va3Y{wzdoD{NwOvyA%*3no>el100r#QrLh)$NyZhhg@7H zW@ATzL8|ya6NJWHx{)r1zXb>xJhf$4yWnhlJcxURS9WZ+sd2cb@~oB4qv#P9KO>bQ zhua=jym`ScwH4rqn9Z@>0KyJt1PJ0h+kGznYk@G2W9nQOPiRk zff%iw)9lrYid8;8!sfX7P=v353Pd@#KU+oKt8W;ic)&ReMuWWhx1fskFIJTtXeILD z%$__Hg2coi7nj7bC0&165X)Y>gDXRJ$ODv8lB`~Cy?ACNOKHT*rSG*|RA!lj-iw$h zX3Ph^)GK_Pkln|QSb)-V5d&M{Tm_cOO5B(@W;a+`KceD}H}{6{)*cw-%Jl0d*6v}Uv<1Qa=8lqPJf zrp7-db}&?S^>zuqkOn3X4*r#kKA_?R;{4E$5tM2{hwO!&W}};2n0f{chwyW{ zrmFVNCp3**ZVdErLc0>MA7^KxRpbJAOL88o(TuITx(%M@;r!9%XGCShq)GGWv?e6_ zmx?mMajw4OBiA~&6L>pv60AoTC?g-^$GR@c9Z$2((g@Mon9Hn6nsvNlu^}}cahp)l zX^7>zjiGQYnp)^|4A7Du+A&b!NCfIF$q#p z**oek+50M{bwHB$*Z3%4+awxJ$WRP=x?tNghF~Z;@ZSNu`fp2+ohH!=QPKj@*OX*k zj*$BRLe?eC$>uozT;23^Mo6Sw&E_fU_jQ*ZaB$ty1a`hrk%s6o;WXznqL`9TZ5nH% zqwOe6=Mbr*lfpad6=>Pc%Ld?@le}Zg)2=}d=7Ju^FB2+vX)tmG&vx~*6lR3vAmY4N zlX~>8ts=F7!-^7k_^g3a_`{Fr!Owg5-p3o#iBeCBcOjo7>?wc?Fyjj-{P)BAr;JruRzKuZXM+R z6;fjAK{(@YD>=}krIHr@$2J_KK(-fTu`fU%fOsnIq(pOPV@SDpbDis;a-yrn#4R`s z)+s)MaK?+GxC*=Ys+zvl(id(#shK!8r8?U1$#|eQkNW)gu-m7EOqmJwb3BI$F;YSN zB%Dj2PES1{F!^Meo{Irf4}Vx@<$ZelU}s@I*|_n0V!=>0B06jf{k_A6WQeyG^|OJD z$o_$##kqw41Ckyf?=j~8BKw!sE9z|hJXeX@=d~4~XQKA@iZslLn&4u=3fI3u ztO)m(g07fceypUO=eARClEUz=vZ3R`ekjSiA~opvqB@WPJAl-sA%tYgb#UCK5T4sf zFScB0Xo;WR)UBI_)MoSTmA;}fjeVZj${0zt!}D*5yQ4hj-_o2lcn6LM-B>t`a%%*K zIgH`u0AK^Q`H1*?4v>X4HA&?6%6~>&Rv!tRPND$7%!SY=p}`bRN9yTH%SfF@HEGw= zTeh9MJo&wo?-acXWAm}ZXQvJ(H?0Ob3{TqhAJ`*YYI!9v0?9nI9r@)ctJ644ix;T|1=7r6e#Yu0UHCJSfkRe7=-A4 zl+6n=o+4zShbrTyN3rGKZ8xsEBUcr3kV`*$fy+`2OhO@{WI00DOe^xVOUmNd=Hq&c zx|nkqsbp)WJQoflnb>nz@OxwFYv*&?%7O-GsvXkoo2oygV^Qx!)G2!&_osMgIhsg z(r2JjWU30dZ>Q8;-zTElYri?3Ybq6OoAjuFFXNEC{Q6@uALV|*DhDEK`dwy&q8#5^ zkzSh&dA*dE&%i`K=`ZWw5Nu%@Q;yV(+&xV-(c=M;2pU)4aDkmuUp)>)iaD4M6UZKv z?JwwpjpqM0E*zo+z$Zn3j{L=z#d`P`TUNOf^?0#7MvxfOiA@NhoFR>LD(R#g7Qb`C zWP}wpTqV8|2%Ep%dRq6q9|z20bAT3pfOC&hJGU65&@`&TRX9H5l(s+Gi}ju}vxC!o zq4zsH=a~H%va@3OUCI^LP@gIiVhrW3ykzeU;$W}v#cy9wtVjWdtQiK%Zj6dl5!_$- zUVR|-jgfcp0s0B3^D?qup7l=ViLzsLp0)C3|2O)&MoF)U!cq}UvdNZ9^=kZ>M{yZF zS|56{y*e627UD1IP6^K4b1ZIugZ``e%fd#Q^m@+r1Vu83$u#H9!)*RTLBZX|ci;x4`4iTt?=X6If1uIi;-s?~@3;-ii){g8YN%coT7p%#l|Ej**N zJ9E&tXL;7LL4t&Z)VlcgZiH=blX2(GBt-UQrrrjgPv@w1biz=^??@9J84l=N+v~-P z`>9RV7B-s6DcA5~9p6KzYhBvW4zTDZ*5cWU6L8jZqj;eHrdz7;+{u*2ouodGy7T#T z>L7m-JL4xN?Z9}|u_MzWn7L9cN#ISt4-ANd*gtvXzpVwU+}+7KK+~zO<~YN?S{z*f zu>rr1@`9_Lze6gzU>B)>3}8QMj_?!NTI&szhIo-t8HnVn)|^k^Ec&SYI{uc1qFP9! zI#%iqNT9g_kFag1PB)6^K-0@fTCNV+7&`yZW85+l;CNu~%~%;hOHdUbLc4%gX?ap{ zAwn^xwZ5*&B>yd`31iYQ`pc)Xs@}{o?uYJomLyC+&4t-FjO?o&u92p|o5bwM?E$ve*0de|;psb{b3cxjGCP_XXIw4e5B-CU9g9{Fd2Zda>S+J85Ev*< z&NhYUJ7YT1uD?yaQT5}Jw&spNFzk1(6a=~l0$AVqKN8}HYp4LT^!I>4FvVc=K*B5g zQHsSsQ{p8di1h;tCnaC9g()lR`(4{JHQEjC=RGffK_e4hKc5D`3YIm1g*58^t85;f zpha@UF&eKuK&1`6n)_IpCMVt5JA3&m6V%Wqb%HXM%|Lbqz2-rTH3XKawAW=zSz;f) zS>9>skbHAz?|FgQCjk?Kxe#vZXuJwF;nqaA0rBca`;OCAA83W?o6Y1hL4Dbr3=s~P z($*I83%4vD=uhNYos9>D-3m7dzTxgI!U(Akqb)2;W0y$Z2XH3ngl?smP<`&MU9H6&|apl8{Tb9RF6KZjdEEWM|}k3yo_vs*#qG6g?!afi7xq@ zhtmUH*XjSxl@PLfi|{i_MV~P}mL}bY!t&f6WtP?c>&(4sv4Wd9?h?6vinQmb<|%B4 zd2$s%)6{Ms;8WLnuFC3!wDO55eh7JOs~n2=4c$&) zSp>i6T6W6mfw`qEDP|{mc?rzW?>Wpm(^*WC(??i2V9=QBPfPulaQTKd`UBVy7+=H8XLV{G`o1I9O zCqdj(i)#EMZuW%3!l>=zT8G81%#Wn64mFzIZX5hC0D;VVps$vB+A_F%G3w8u!zxrR zJg!q?Zx~)H7+y=3621O-=t9(0B-81lF0ZZsqWAMXDW=oH@r9T2nxlDh%&pJRzsSAzE19jq*i z$QsNV<2yM0+*DW(NGqG2h;!Jq7}+W~YslE%as0~)eJ?XCRpDALUOl2L4{qAdYLWH=VKuEp*Z?F?w;kIHdeW7U=AHt$<0y=QwP*Vi2gR1i+aSN!kW>^?e1(Yk{Lc^S`mm|Fm%b zJ^!)7vO?&v97srmE+W5|6eE{pUs5e)NRdNI0m!I+NMpR8`}SYGpSC&B0rm0d>z66L zmzf@IkUfP#gN4K?^0*FOkAQ6VWy`Ll4eET|BUM?j(H}rUSR5z}D=>2ik;(C&< zeTtB}%KT}yy81{hckcW5#lm306#!9pj#HmI-u97D@j`ebNDN-Ng#_EcgPxy~eHP_~ zJRSWKXBfNgoH25E5|;z4Z|dUt+myk?k}?B4}0lKcdwr7X{=rBLsY^}`|#F3AWURMl6}F_&XAe8 z7MOe(ue-a_xn4iEeQQwJ<5Yz;DGU#dm|?=jBiSBXKqLCsU(FA^uelxdhVcuv8kHOA zs{sV@jUb2vJ?@+c<)I)2gvA(&ALyhDzn_0|UG9s~^|!6bb*#hVQSd3$hc6n=Jdsq9 z*u0e)I#Qu75gj4BhSVID+;-)<^W4o<%GK7(Q@ev7jDSL3aK`S$qW-tQhEj(8Ei0Sg3XyZjX8@ zpP%D0hFzP^wL46AIre3YFj3CEi!TJV|;u)5$A0D)(C4QrGq3wYp&;(d0_6 zXQk8Td!DV-d}o}F?XDtm>t{(FZ9&ovMAJxNBF{p4oLrgoG!8ECq6dtq591(l8m(AE zGCfbpv^bcS?bpLB*4w2{kP>bZ89NnBn#;CXF-@^N$Q!zy z8xSH4n3}!O$HDc65ofqic+@O$WPJWBg&!fqXLI)dKH6r~<3`Jo=BWK)RGj+@~vbw^m@ z^sUu(h%E0+S!app)^4QRV!Hcc$A&9_hI4NP6uoI)YS8% zl6i>>_dIJSh~$#H_YM=cozMW+ia|22q6~N_xp-H{+u!b^M>}xe+#KU}bUQqCdrv2S z=X#YuUG^C9_%Nk_luqbEDcIv({lz0t9~w60TyMCP-2Y(JB@?vLC?I{p{|pfH?@J2O zy>E1A?KY1$xHz=Fm*M?C8xA?P&a zvkbD`5@&fu%1xHEt*SPCN664kHYO%KqSvgi>BlAc4ga;DG=Z+f(DtT?_!i#fX^xSZ zPfEj#O3Od_*d^`xFY*Lh_FiP0j9#EfAS6ds3~^GS8;h4LH4EVSoi4@J+5-!bYbM=4 zrc5r!>pG`U$5W9t)SeurbstAu8xt2Eh- zEFo>7L|wd?vB{j57|lpWRT32imcJ7c_ZPc!5ozfDeTcxrzki(EDK3s^6Wb z^)7$0rWR2r9KH&2AMcoRR!NzQ1M}~EsrOQVPQG8^>SyqU%^Z~u1%kmt&#pp0u^}$@ zaVbgJIG#%N`IRf=BI-7jo}+vDO5fAD8Kx<+E>RNoMY7hA`NmzH;dcWwG(}fU3-?vr zMc5^pT^3*oobydgMbipHQWsnJNY(8YwW*lc7QTr|y`%G~z&peMYH-pF(x<$alqVy~ z_0Cgx3hla#ruUwSWUf(@Cdv*uLpv6OxcwvrUis|_Hx6V9B*nhCOg$KKrGkgFKv2M$ zCdkG>Uj*@vfbLL);AmmJ!hTxzxwLwDR*zdLa-}{WUvbQfL6UU2)n?zt2K#1HtLWvD zfWm9HZQQPQsMcEE&)a~N>IG*(x^nfqp|fA&&a#EyddL1PVdg~hFlq*`4hXf`nFI@- z_)J{0nof%0>ov}x{0GX|>F=MrEjSXx4O$@@v%%6=*ni1N^3HTLUC(;u;3!{LS$gO7 z>xitYId+mlFREcaLK%=jki(w}p0+8m=PC3_pMPKkL8nNzn<${zoh{+v8e)R_Kvb-*G;(rLdw zN`mUBn!y$wH*ZGlkImI6vV82;NgQa-%Fa&lf;C&-y4M~t=fvZW85Sog5)l720tG`*`Y<5nHQj#ZePpSPjaOwr)3j|jRz5@}UG!yj>n zG*k@l-R(BjcegJXm^ZYy6LNxlcb&WA#=9!|JE)9dLM0f>VQ4zZXxpf_#7Ib(wLgRXJA5hqW5Mfbl}JmMiSX5&1=Z5D!P3E zRQgT<$+C?6m;}XTA1C?ax-rJzj9B8W^)eq&iNtHuyse~p!RO&8OI1vi!U1SJqGce5 zWNMILOKf@9SoI;b*AmSSX)Yd3zYL3z5pt~ug zG8<=~+P7xy&*tMN^)?dm;WL#FmMtvS^Nsv^@q?it0n16N$!l5k@d0l+{fw~lvhN^N zo@mKn$j=YOZn85`rfD0R%5XKfkWm76qP28YQph{Dd1h>|a+!!xg!ypkHoa^2^sjSS zsw=g1RpA^w@r;%gDkS7vgx(0^Zn+hyx|8!n-rUL`I8KN3cS{v+`vIaI)Pjne#!VY1 zPU7Rm2ZOsHL5|3_d&v0`xH6>`*cf#_UxyKlVS8fJOhCMO0k9_=}=j-Dm5hMzE&K6?N?O^VTfZP`HB z$!98l>sPeMsOETJl2B@`e<6b`>@#qzc{C|? zE)mkI&L7C84ZQ7wgz66emmowY31@w`!~aFSuvzVt2lo4FgRg_R3R>!mgb*L9w5urv z8+;;Jd3^$J@QTB>mt+mH9!?4v7)hMgvE6oPiKqbb9tSB#lBYhvI3z{dIalB%8U$EJ zzjz0=xq|*Pp=8UCG1*dI3}2?kJ)Cuf6zv~A*8s}y^WZVcjG(XN6Pv^pNw2nkl-FBE(i#aH#EJ_2Xrg8M|G(7ZrPC(Z@g_KaL*@NOHtaJ zFraE@ks8y|LyPUgB*CyDepg*XgTDN9`_=G?mPPInseQs6MfjQzjc~s|Qakp%rOVSB znn`z4(RwMVQExU_v+WAsrj7JW4QC=PsYV_nNmn_o zCzjZ^3h*Pr&Y7tv)|_6vkr>hO9%W z`ajd?ep>_ju8K_b~#scdrhb4@jP@*`8^!J!$CBS`t@W?Dw4I*8h+!)SE{f;k53Y# z+RYt(5^m?bpz&{;4UODi?4!F~p|}82j~-=ac*`Y@m$B)MfJlh*8G|n}$@faAzN*8= zX=9)6ZXzxMQZ;q1U-0@j1jqmfv_Uz_`TfaXcxIdB;c6k8*XKgGyq~@n{JfnYh_9?$<&TZPq3+lhA6_$b+$$M_aB*&g)(L+3hpOQrS}mu>y#5=$7HB{u2GX zB_HgQrds^6!n!;AUC(E;C(^XYH?J0bUd{1gIbIQrP_V;`&#+D`nw%zO?TkzO^7g8~ z<0&DkXEshurc%$@V#j$Su>o`C3Gb$6rbw@zlu6>HB>THEJD+MR*}ux8(ti3`t`#`s z>a@d%%Cq3OKxyGVuBa+^rYCZ^OL%?MFMjwU?S3#hF60wSWlG%S8O0oEzG#Iq0oH?L zKa<%J?|(|ie>d(1(-C3g=@fM}@D6$Wl=S7eQf-!w%Gx5s@#v4+135xSrO0 z>Ri%O+##1%=pz3Qh$Q|=NHSD1v|FHP-sK()K$#>-=9zTb6Xx=(|6AmvEuQUUZzl!!Cpo z5E~Bg#amyM#GI}3c^f=+ zOI@1QNWA|40>4ft4x&69qUQW0Qp~=sdKI)J<<_#*pMt)b(@!<%bmKRUr@e3BF>{V0 zZ9$T0Z7TRUH|~WzyR77ebXL;YskyD^eP&bO+GK)^+l`P*y5JH3;myA8G0jS9n=?E| za?~43F|QiIkCx7%^etB!?6S@$QNKv?%`B(BAK%G2MiA+AXFwPZnpzUF8trjB=kt@P z{0hIEPxzu0ZWaFmHW)e>4cQ#{-}!9OPYQs(?O)PDL%yMh00erJ7Mg*w{0lAptg*sr z3UIdE^<=yMC_PK=VvAJ4swiJzvf-)3IZor@gwRgc*X>*2eWjwJ=SQ#M*iv2g!Y` zCrqCAFZE?o10I5Fb>@=?lHPH72#wl?WFGKVxBK{8F)n=X5Kez8l++HP;|ObyowZwl zc!*N}XjV5PnZnl27QvZik&Ifif$HsP*mu5k^#b@c#-|d(=kFi*NIVU#ck>K}7B&P8 zaJqLe>Kl%dtqGeQ$nVn2$u*oW(mB1x6g+EOgYETFts551;^Vei7L-)86OeOFsGG&_ zfnMH}!m^X~=#QmzUY*p#T<_YefqBZC$(BBspU3~4M9Iu$NBIP)H-7UT;9T5~2wSKz z1JG<%}0>QFQ<%TAtsJ9o>eY^%vFG??86_y{GdVIOm;3CtvXQ%k} zT7`~jtooaZ5PWxD3{phkVyce!;wRd$8CH|#*3O*qxzs9mwZyL-aLWtDR`HZWCNDkJ z;H^ly{;Y+Cls5lK*EI#9tP2pug3!0kQaBcxT9igR-r+?8EG7SBC83AjZb*5T;_c` zEusx}tP7_zl#dZixm!76F~%{*26N8jGd&*8#Cd%-5n5D+W(K?P%nP#foGsnsrpQ_h z;UD`Bi}f~K8Cx)Ay_O^k7YEwl@2kDW-B**# z3n9!laYr4M50IZvjG|XB=YnL2Y0yo6B&5W|Qh?Y=vsUVW!3nwVTV3Js=e-58{4ZU1 zj~D)8a+Rf8$o@U6w%jxcxRN)3ca9#pYF!PcD1Ganv2urw8uc|P+Jr7l)O?2fMYA%u z+4@Tt)yK}t6bY(4c;>h0M4gkH`p76gH#PjEARi_K;c%F@ZTNzhwh4pM0hgS+RkaS5 z`tY@F@eAb_-Guh+!cV4I59{92HU3H0lOxx5G$g=K&N%lF3bYCY2ikV4i3W1=-1(N_75cGYqdoCfvC5`Yj-=@j}P zObZO|-o?u|xZQ87RXOS%$E1^P(A@Cc#!|-~+t04KeU5klzuhPSD~ z7Mqe6GbH-B=wFvK+@{A!eRR22mBQY>tv!z`2^vG5sa+4Bq1s+Q0|(BQ3ERqs%F}uR zlARA8p~6L`U|iv!xne^XbpZU6cv;`FlZRrruS~DYOqex6q!m2C}Eo2jCkeWXnBrSta6?dI3GL$Zd0Ydx0u;MJ~IZ@em5b2x{Hhr=dI5K$!hqq&1uPdF| zSg$?J{>8Q7iQ>zj{Lgusm>GAw*0~m5G4u#6Ey!ghR9z5kmL!61q=?!rOs z{f=FY&>ovDsucwr)}aa&9hZuMeDnTt^Y)!F?8`)PE3LDM)@QCNh}E6YP{Gw5hpWX9 z?Rtom;S8OQI2V1wvU55wR}vD>t$bB?K<_CSf*vL@XWM-p7JpTUJv^peNh&7YfOG7XdvW>e z0N#A3dQomIPhLdhJs8fq^Z()PJ)@f3+O_Q zX#pZZl->jcmLN@O(IeQ2_-}bS>M!mmuI=2y}$A9v7h$`f9_!%Dfd0+ zHLvSDkMrgD=I|X#Zc`#OQdI?=MtP}UKC%L=#;ym=oEj?C ztK2p?HjRjI`J^x5YjMSe-QtSolb7EkGb&)ibgPN51Y6K?srF4p9E%Ic(>uyJy2z%O zaXUcsb^`zf3B)8R_a|H~uUVuRq{-eBt)X zcN;Qa5VM?qqW@%s_rDtxXZIe=LxZcqw23OI0QQzcI+9=}pu;n&Z?1V(QlMue*0N$J z)!rt8?$EoJO}R3D-s4=^W1T6dNa#>s4vH9zxSCl07Rz!Rb@59{@t0w#Qt@d`C%0KC zC1a!L0$t2N-2`te(^22W!|#W)Nqx;~&i5!oKAt%a@+lHEpNBHbNCm4hYie48=C5$_Jaei6g&*{~3rSgVbfkAt?s z>6T}>hJ6K)DY8l3oZhca$+H^RKMUGXcnZZdXNVvBiWFsIY!voWQ-PBff>fmo?aZZ$ z@+a&Q3o17>voO;)MSR*dvIbT6ztg=T@Vz4{%H>tZlL0rA-{9^j>T>qXin7WgPiepSw0)GSYm%4Crr2BV3v+yPFFV@lvk*Ye@w3bR zSIjDCDuXAy<1)?}(C&Qz?Oq>LL3c*M3H!fESKFHY@50&ASj-E2$8Zcm(kLr5R#7fV zS5@~Rf`iZ-U(BMeC@R5rwSM}Hfk+Pb^5t~gv8yY30|je&d7{JXA~&0DPk!RQPt2{V zydB#m@KUS{<(f(HfF5_?frf8Mhm?D-2iMvcXu9B4a*sXk9c8s6RcB0krBy}_GY*KX z2*-=sR6=$aT4$6%LEu;Fnv0AwD;bb&lr`k-T6*Qe5ZxpkuX?nEjxsv-E_D{(TPIK4 zPxYsrLAKu`##iBcZh-Zg^K%b!UoG^He3s_0n2*)8^yEPlL|{EmFc$CR;h^zD&}HkqG45HgjZ4MxF# zLIUf_PykXf`W5&B`fwdkY#}f~u+ZWR8On`MMM1x5lTPiw1aPLi#)OB+P1idZ+l?SnR)?fp4{uO&y_x2aAG`s&WLomt*JIl1f!x@*i z!kOrlQE-!tvH8;df@jUhvO6RtKXQ7{xMzA;p0nis6ky^vMTo{IH5k#0ram}?0-c*{ z39YaTB-^NZtXxSyO@!jqhBqJv1@>kkPMV#HIBQe6`Rw4BmxkF>k?=Hz(-B6b$NAWO zL@TE{{Rq`3@0t~fLDObreYT~1XOtX0S+Ejz<{XD3O!E&h3`AH{D(&!*2Kp8B5lW#p zsXge4+&T+zqqIe!Pb7}+_FfUadwMNTd54;7UZ+u6G2q4<#eqZ^QBqy9P-jZ|u^=>4 zw*I8K*_Ze4-z0WDIVVcTDHm;hlT8$($FrN$WHQQ=6HprVMf@IZYUpukNPd~LqCWWp z`B-rR-=&AW+V}epmx0XiLa^cdXQ~@)40e7G=o32%@ln8M1$LvXjedr*Q7AC`7>+>! z&t;!;r0DnHH$w)dJ&AByH_(*;A%GD$GK0LkZT^hG+M2(+U(;8{cFbW>?ygojou6jf zQY%X$MlXxU2Hfds3XhIgJACW-B@OmGsylWCq_;Q-uvd&enI}o5I`dDDzA26>)jax^ z>GZ9dTP#q6+Xf`(2w7=5J0J?J6B)^u)xX>uIyF6eLnK&NBp83E-Ouc;HXbfwug-69 zWZ4`Vy2TPIuRL0Xmvom_b#}GNH^XR2rf{0hS8TFZMvk!xYw1b_6f5urEgHj^DRDT$ zwWjKwsBMG=OAw}G_zCC~$t_AB+Mims@h5=?AzIk@!DsfCTRl5|8fk)dx8Y(`brNS% zP4foo1|`eg2B#v;rk7)X-X0g`>X`Sg+M>I^N!dU^H}LA!au{|{PMgyf|DE2&Q?%kl2vGJePHgi^u6~Nh_C!FldgV-(!1xk7oY-i`FeUp{+{xr zPmS34VKa$rlHBB{=1gtzJS|_HX(?-Fo~@a$7Dw_m_@OUry|C-S=JzpCfn`Z*PG6bd zKFLb#HN+|5p2cX5FE&I5jc*AJN!NO%+r!QdqLh4c$1y9I(#r-9b9yeC6~qW--{ndD zQhHHLuz&1pogh&?cFt>?1)!4JcUV!EAofmdj|>*{)v`twS3< zqQ3LHEF1Pk1ZU!3sD26Q+CI31W?PdD{5()P4ZmITf{<1b9W)O2#lM}`+LU7VpC3tJ z1Qwpj^i51MjD;9vO3b4{!_iF*wIizTAM6aLVE_@`;^M&U%;=nC?eapv>UH(olkv+) zaoBRchG62~rdQfjj%&0V72vqKdSrH2ZSikz*I{Q>@oWe6(?z2N1lkb#QFwgBWlp_k z6UP^W=8s>&z_};eG{n>`f17Z@#>)M~VW7MUcsDvGPnyDX2b>8sI$DtVz@O#z-M)jK zhMh+T@;-ND2`I7uoZK<0UE%1Oq3ZO@)(eaym1#eo$Pu(A3brUtfvt7-M0GwFVW$ss zzeY8h%3q2(N7=*e1k!j`W=;&0<%VPoqf9;|U)Bp`_WYysV#K?6My7j^XX6c1mtVv{ zq^NQfy}9+5)$G*@{qKwd+%DYXt-S_3hZc!sz!I5|rs<}DMvawcFnVjn6*i=C?4Qn)RwgWRaL{Dr*eV)` z!%pdeF<}9CSq`EavQ@|)b&{hL@GKom;~WX(*iRCfj_thiti9d~WvKK#(Cb!cU8jga zTj3m(BH3@lYqF`V7H!qm&$PJ$nWQAgo|P!{>}4;gU7D5K>H`CwaCKISQYL1WQeql) z%c3)&EbfztzPrz*HevsRhjro68}DP`LW@rwyiHccNzzzY`g;dXIBS9q>ChC6J4VP^ zDt~RQ;A|km?G9>wQYLU*SL=}J;RYcAkkQ4mpWC#ndJ)A%G+HgPAI&zV4VAN@`ad3B zc9db_+Z=tr|H?f=xw#3TO0Bh~9IBxqW#Tm-N*jhuC&Q9Hp3y_D8C}1l>dU;zau3qw>#*ZP?hB+jNYUgZct&9ID?ZYWuG=&&_L_?I{)L5fdVshcaC!?s1Bx$$b|rN}wjrHcRi(HSQzEt%nFUwV?z;x=-bsOxMx})#sP# z-68!99kA1+oglQGGq*m1MBieL4nQ5k)(jfFaCUM*e}ZY3WyIdQ(qfp?DQv!B8fOpu z)=$w#sQL(^HrbA-Rb+$jJH9xhMl6UDRqhQ!e{lXh0*qqalHcu`xxQ=6zkf@2q4%p% zT!%n1QS8oW9!<)(e<|BR`B0{I+Yh_#N4TrA6QihtQ9i5f!#Vp!WvQ$^d*al)k?SVJ z%yI&DFKy|u&E<>Z$eSHn=p&HzIy&0Ws34yd?=5ErWJVKa8(uS-wQQ&r zzVo6FK5*SJxEZ>`a&U5`1c}AhQy#vj_%xF&B;t4T6v{WI!(QLI*UI`UrH4p zX-<$;Ri7M%S(zhr*R!I|yON(X!))qwgf|GfoPL3SLUa^uxgl$?h_SO@g0Se82$5!W z#ndKsVaiw*a;3#rIK}ar&X6&qP|OU+UVq!8$46gAr1x%?RXyQ@_$2=;reO^2_4KPY zFWaGfGhGcQDD{1m2$aBgUB`?)MNVT!|Hn!~MNbYf@GWrXq5Wa!6ug7NeMKF7S%$t7 zcOq1;R-*$~3+42jum?`pFU!pj7#3Ae}2_!Ru3Bkcr09$)?+ylZiVy?Gm0d1 z@WPNBqSI>X^?oLXDZ|)(dZS_PqADB969G^Bls7a0B}No$!k9#%&U>FiEbLG*6C$NP1ZJ- z#$<%k!LJxHfFG)7S#a+JbVm#}599p{E*AofO#xtcJG(<`PGq2^Jjwkj!~lH5(+c%u zzJBP|rVZF11?6dD#+PQ1>tvL!gw?P%RqWt?yr!|4OZH6pltNeM?arn93~g;A)Q5QK zKmo|0FE7in<(=w8N|Yg|0$KcNqGR+iVXx?z6S}gWHDj9(G%qdHmx{igL7^!0Hm;%` zWMiJlLL6_++xr);aFo9zF+9^bQnMBt+rDsbYg)eD0GO871zAFA?C~q+p+g2k__xAu zmUdC%H62=~#FK|qV=lET!Pi0|m_d|I%DDk2X<*N-xiXfa6(brmX)=^@QihKUbDgC$ zaE^Fm*CY!i7j)ZzalA8+;?&+$J^ZnHPk+cpH!TzvWE~pzMF--qp{S@Pjz>>CUf#LA zpE%mAPw7ghLTeIQcxpHF4`t;}pXbT^7Q3Jqt^--F8rNX>@;r!GkFyQ*6-OFNBAV)i zi%4221*3!TafOb@*UH+a=DoNZSFdm%WTR{OFCDFFd*H0snTIk2bp}T}?Io<)5hy%J z=t^iDL>Kt%fs?$m7I@_9VWY4e^7`DvUDq_VEjdOW2O6#khPO5 zj9H-*e|*#Y?l{wcM!up~e--(?bcLY}rZA{VpP8MNukUgw>Bi^76(xyF6%|M1Tf(Py z@f;lv(9$43+2_g&hV>)Td3lnCU1}q3VbA$)3vo-VK5X(+NrWsvBpwe!;8*&1+8;55 zIBhMKesm5i*Ux*V8p3s-08x#cX!BZWb<=}iqV=H5<&#L)u$jtzA?w1lvG}zWYjgPs zU($ZGlTGN1R*RF&3ab(WcgLJRLmtuqU+@BNz<-|tzcqxq9@G3dA>T{6j9sdR5qwhM)3jLN!Nu@P< z!a?v!`rk3U5Lajk$RVz8THoU+t=|_7t=*#?0jH9)&q*g~l^FEW6OP5-{zWBvGIVMM zdcdR^A($*3qN@4cZb`84?MI7vYBU#(ovx8Kj498_pd4d zboyn^t_4`1SZ_g1BpX|X5L^2T*udV6C6aWrq!^ar)m+q#T2gC6|AWxh1I&`D)ZKsv z!;1$jLJp%BGK+Q`e$rnT8hp=?a#o!YSOU5c1Ix&wV460Khs_<`37KdDcV^XeR0%YG z?nZ$3oF8H->LrgsNG+5&sX0J3v&}MHu6`nJU9`AUV%hK@{7^`3XEa}VLrpP@(7VkS zBy^N2FE)w`>8V3uO&|Y~+JYe5qoD8E6|B+QW7LXFk_^ucJ`gQWxthakwt!JzqF+yD z(JmvdMLf(h)q423s3LN7M&9FD^!orqvyjIP^f9_>ooOs0`-S!2BBb}j&4ENOAAvCj z3WhpRBgxj2FWEtNJ<1C0%^{!>_cz1qKLHE-sYCax)K9CCKhB{KU_f_+_}ZQY=g5g> zw|GnaKmQ~V?w)RU2SmXj=qv;P!q>`K=*mr9vo?+PwewUiJeV#p4a<;(jyY4r@C8H>~E!? znCkXYH2lP%`EyQvq<_C)759*+tzD`aX;B!Wd?}D|81fO4=*4(@T+~s6mHL>(0VEO9 zVczPwbJ8WtGh(Bw$=lGN?jGiqa*t1GQxjDJ=9Uewj^$~@tDc`f5oH0UZLa#1fjLU8 zW|qDA_b7)AS*=OwO zR98=yngF!7tU^mg7%*J968FsODaj=9HuFCrA+?tZkoY!%V?b@EV$Yd48oh{N59E+| zGHQ>HF|!o4++jQSh{=etR=~AIfUBOuu_v}D{(<7zrtBQ-%e^?L_Yf~BVLxC%2eZ8S zc&X*JBBt=<;iK$)PLPOMf8_{2O8(wer+SjpJ2Y1Hjh8R~(D$lUyL$(Vic3ROqa@`hG zU1CKLL4tGeeA-xP4Ov&JEA2u4VH{G8QpHe=;l=x&WZxeJwYN>vEiG>zs4)Ds{ z`>*T2y;y|*;^2S%{w1;2mV6aF01WB>M#~pZBs)MzQ48{8p*|g4$Se_!(B?#f$nB?yc)pV535LG`H$#TDx z`1m8@JtZ4qqOVNb6;$SW-2S!qOZ%M57z3A(pfm;ETqjOR{)n`~8YgAnM=22vUWobc zwRl$Fsv#$J)x>qbHsuYDhQv+O4Lt3t#P(ZrUvS3wG{Cq>42`L5NY_R*(;7=~-H_Ak z=TS}iN2(&p3~w^)Ob^`9dV0P)314pd`g-`r z>pvlin2hg@y)Fh|oeeI9zN#;iud>fUTEPal9#fvD+m9;yCOZ`CS=G@>14X+eUl%JBVVw z^NB@o=MX4@CCuEn5GDIX*&xu{Lhqw96In8$qCkqC?Z6+QA#|z-{QWMg^RH+(&X!3A zX5e}2c_<030#e0ESBa!yRp_Ba`$X%5_w~pxnSF_G&FGRI(9a({IyUYwLYiGoATg=S zpsdEIMtF-{1YFR}E*@hXk;!$Y;7} z8;xFkh`Hi`*SW*k9wy)`}o2T`LXe zyD0Q>?YO4b`rmNPSF0=Zy6hjsdL~?8cb1&sJ@^3o#-F89iJgwrPPmO-hag#S@CL=T z0^71z$P|ytfHIY;wWHT=RT_S+v(f?kQXIGFi(aoD01WMGOvTtX03KX`TrzJnXWgMu zPD!bmoDvYh26YrffyMo7Ld|=hE=`w| zsgpermkORuqzO5J7!-y=xZ=M&cg{{|_B}D+gi>>+x9{^fm~f|4LW;+o$w|h;<^-GT zXkD*4C4=lmdBM=if;p)taA|C=riSPn<(h-MfU}M{Ly}SL;pi=5R%908N{?haQDOED zRV?|upp@8iw0{Q-hYS&KD6 zl<3e_mSKt1#+fwr9csmXD;rYPb#b>N*x(6|?joEKc7wPxEe;piA+_Ny8`}W#9ZMtt z9E}&4Jz)HF1nNO|4P8Oe#z}KgLbj(Zj7Ms3dy&I} zoeCFHMrTBMg(BtRCW@o|vc_YkwhTY1`M)=h2LOWK@Y0|+`g@FN8hEHqpgS1ufa9Y* zdW#f^u9SB*@2Z7PJ196#oGy>h6Wj?tqVgJO z!Wm*);f$q)7*8xb0HyL_38NkX7R2VA-K?y()aSPQZ^O#=E(My{(=$OmtiP^5wmtJ% z2Hb6es?5ZA8}RGS8H6UXG^GkGRSt`d$y(kL;n;F{-N!$lX%Lq7l@XZC0_Z)b)uNha zC)U>CLsS>stf2jC3cAf#w$k79$?8$38UFIJj?bY=kPCz9`zxQnmQ-J6XD(LLB`3VaC=3wIUlSVL)ijF*T$q98kxDa35W5BM@tQEu&1lxf+lzJ^~ z`JzL$dX`gyaYa1gO}sq!L2vH|8;n95;*X0|1qsOo+7dsFvDl{Yp;Da}=GTGIjnDesVWp$a z!8}hwjp}46Z{LKUKwV;D0KG4S3Hbs^z6x*f;xodVR^y6e?n<^Y(phtQA1SZ%s6K@Y ze2GvSHj;MuKH;#vFcJtWrK-Wta_4q5RN(d zn$ei5&!gSGV7ZlZ&TF=ME2W|6*seB?BLVjeH6k>2mY`*&QM-b+;QYde-cS>)aNP1n zH~k4Y+;wI((M~{>NZNaHj-Nn!&dbelqa2s6OK;z+ED$G66~ll@IGP=ez03k`rGAD> z#LLYmeEXFdTBmv2%ws5FS1L%a5^r8SCd11%da>PE?DeFG_W0`T#ktpvyLA%HQUgr$sWWD8`?AbY;MZ9g;DAWPvF&GIo2Sb>UTzUe&}C4s(y+F z6Sg${R4f$4(!)Wxt)+8I;h~BaXF5a*mnGshah;r>Yc8LYS)Db^ICUxFt?7C3=y%q( zA`FMCr2qO#SdNCE7-eG(WaRMB1gY|aW#?*D=H`j+!^D0}XRuX*Wd|IkJCbS-DFg2c_{Sm($z_fKd6_ux{4NfGRROPxp^ zu~PlWC_CJqtmkkiB#C#PM4*)0*zm_#Syp8+15L)aJnzV`8`H3GXNhDUBI= zkjB0U=kR5v@{&>`B?+|_g%*p(yPtI3ZH_*bo9x)QoDCEbf zE8xycZIuq=k;=j$x02N8TbOKeEHD&vm7el-8%K2>&5&x4`Wi+jU0DEI+HULxfw)3D!|ADrTqGLL5L_Tv!!LyhJCoE*)ZFV=zr#0C zFx1(6_@Flc&T*3;nQ1qDM$6#NjS=soM$&%J<0$yt?1VzIxq1n4q1mH4KQ$;*FXNM?s^^DB zYp61_7G2d+?Y{kNaly;nS>Laz$9((d44B{`Uhs)b4 zb{B-^Min^l*wE6mCT8LGF|wlyCMU$Z99FZq-#?Oh^-(CUv9Z7z=w#~;Q>_Law`RG( zv)s)&=tUm9gv==eD2>PAdC^6DY~eDBa+9O5ES$c$cHPjE!fkOq@h>-wD~kPbHriFM z&p(Uyf7Z>R_rTQ;G;scee55t`vQ^%xwvF;Vhx9@R$j2das}6^ zs(C7eYL6r6w9kX`iRp388L9{MTdkc2U7vot=utek+^R85bkJSW>h_?cyNX`2$*m3A zgcbYOA&Ygx4r`5P>2JQVDG|)!E$8UAap>Y5su$`es3`aDgUKuI*GBml$~Dl%nS}aI zq;5E=gTk|57fnl;{K;GS?Glh{jfGJkS5O|NBWs$6C|@x@%FrioxlNvQ*ePbp3>AAL z7DrF?5T`bJH5}Xm{GC*^eOnAm2)tyKbk*rhRGY$~)5b@@d$5MTPD?rL5}tC7zLzRE zCwQbHl0<9qht`|Sm%z5H+8ubFC<0Eh#NHQg4%RXhl2TO z^Z#Ctn+-8mHVW-J8>@Og+uq!b*Z+kg&@YSeXOyw7a{hWGxcM=mBA0$*;j((3%^okSP0Qz z=t004?EV-+Z($uZ1p2=~Pg0kLN0un53%Ak^fcVgV{A1z#3oknsFG#te-VUZ#j2{ON z&AwCp6GC`#-awq;464r4mQO%=Ea@-#vvz4L^aH+-Wp9BBoaIB=D086o6*Xjo4phu{3sRmzyn^ko)^jY21w7xxU zCJKKU{b|h$ROg`p54VpcniCm&ZKPJsWgh(O_TI+vI{itIWpY2~e$2^3p{doe(2f|T)nHQKih^~HJHif($MC4o5dglP0|tZl{CZDZTPn-IsVr7P+J*SM|0w~K-jhtaOh zyPywUV+Gdc2}IiaPzZ7M#}}aAc*H>awlbC5jQ+mOvL7tC7hCu&4cw-m>%YC4`T0RL zzz6M#^U?qN*xQc2M|L)dfRheO5h3}0c~s~qkXXk*nC}F!k#D6=e&qIMl}IrMrsreT zsW`b2;3a5gb)3Kw&U@gUCb_gO4GBuR$r>{B%@)HO<%rNmJvH&x6!sz@Gc9vR1O|Se z;TG&nGOUc}i%uz0wdL+uYP$qm$yp@x+;obUHzwPk?#i##BnA8GLIXH0eN@QsViCLBu*LL%2 z5oX+wHuG_Ev0yG^Q-uIjWzT3 zK(X)!OPP(aHgAJhzCx783#QdCz4g^oy{sfxcZ5et!ndr>HNJ>i2njUF%>{S!>h_)~ zw5>{ZUmbK^K!(Gm4^tCoc41}pn9{H?PkQTqSOI+odFs>DvqQHj1l*TL&M!a$ibz5m zj4AOf@q1<=e|7yI4VVr__*QIR4#N^GVNdbrn4KyO_ACpq+Yjn|pdS!#t+y%saf&8{ z9^V7OIg;MLRD=kcCTPhDlGQ0ML7WQAPc6G@Jvep4fNB7ASv7_G>?8eSYG8n@3%*M5 zPEWZ5R!*XyQtDq3$@-+AS8J*+fav;c`YJJ`5SCr*D3w%l3iKBL z9ylm=)=+`d{omeJ?!Y4bJ9y9x&wYF|MrW!uQsU9K6y3cq`pBIoL4R9K$_S~#Y=kQL z@NiJRL!w*a$3VS9iF3!MGT0>^j{1O<-)Z4_zE3Wdni0>J;D|8N(N@DP@bfDJ>88}o;tk3)_`N#f58$4m5@ zMz6t{fT0)})>vLqr%G&%dR4ZA(^qc3yXQ?8ReN7JKy+dL(C15=CoLnfS9gB;X8#w5 zqN-4GIZ-;8CPWczGDio>l85D(;arQDH-0+7pBtUsO7uiHg&rEQ+>Ch&QOeg>!ID4X z;b9)?P|~CPcgjakanA7c8wSbOJ!O)cZ;m{=_VN+%m!>wg09<+A{KAp-OO zZjs$ryM{>6UNH9p4TP9uAJOAhV3i&ElI$b%Q>2*2V5DY6yP{CP-3Yq5CrvJ-fK5~= zX?7Q^le{1=8+8fQ|gu?O*5p~H;e#qKlqr6D5PZyrQR zhGj(LD9zEoRw`8g+p8XtcPI7BV!p58#4YUFVD|5X&uxnm&(Zfi@nvey-p^R|l_6;s zV$L8!YQsL9?2fM6EI&OTd06)wE)SIa*_8lJya{%B3jZl^LluyVsYMX86lS{@}FZaO_xPvI4d+SXDF643Q!{;#9W8h8P}|Q>YH> zxm~Ji*UXxnZo>2;;C9p-tNKg^S#V~67N4TNR%8Ap(NVfTR$>xP>ws@)Y)S7@N1$8t zt}rmKxb*wT&z+=)O-UfRHYWITk4lw^i;KrcVDLJ1F}?Fg6d#t~6AH&O46}&`?Ee;L zIOu`=Jz)qy((||jc#_wO!~!+9|1PWH_%hl$~JNghW+W=okBUUgXmO`6^k4WEvvq-&qBB%GU5FQo_O*|Vn;kV$_ z09j8NSz-VB9D+<}lK!C>6$Rf0iA?CF;tOO9N%|Fh!$nY_9*lIfz|CZBL@0&a)?|m6 z#Q2WEHxSTM&{d=1`mMwp+tt74mTCyRegBU{S&I~?GPlUg!1|pUyrNCVvf6TX7`Ov- z1$TF%KnO2~ub(Qz)%_HdX?>|0?_pF2!RnVr1rP z`i8zj%u{UsM;RC!*WV_hGlUt!>G zK7HnT_)ehq1ml+DWrHByAwph$ZJ+RrT!`ut%%p*fH@Wk%dR|NHaN-|)L-D`-o?Ph8 zQsm|R$-;f{#9ybVi=f`JBiim&z;{jLAU-y(aM0jSp=A70Ii1PPDnNh{K4fLL?F3e{uWeF3OGr?jjeHjD7~c6~U6!Fw~Vj4WxK$ zbzuu4-=txN!+x7rkY(DeNlKF%t*UhSz0{(=PK(o_7hK?6;n_Z0QWn(`6`p7izHNEO zc{NP!!1~pye(WK(eX$fJv&T=LJ=*U-d{G^Rjhy;Oz7f`~KdB(KYU|_$_%&X$t?Pd3 zj1=tL9{M;kRmY^H#3t6DvdGoZHAg3d=}c|N%ac+Jw-~vEBE?I<4Bt^z1iN>Pr*SQ_ zv?SzFM4{7s^&fsf#9)>jRdu#>$ryZH(t7~s)e()G-Q%Zf1Hryt=+8|12?N^osGlp* zIu5$8d>^C;{k-S?@y{d-d6IUk3)i5F3dI-DZ>x0@;B|$+;#7bs1x&2y zzSS}B$I-Zu;#YX?sk08bU*FSg9kO&7ExJFY(j$IjFF8Tf$@Rtf1EYOCvLnUjsPGQwzzGtQN^?8FN)Ox&`~WIcuIR-mX1I>W%lf43RP-=Ug7DDC8CAY1SKEd$daZqdI8e^ie0*-> z!ZrjM1!8HHXZ`<#kPnl@HilLJ$4?#De@Cfc0sO2G0*z0FjcIWI|EG$=qW+s$(l>M~ zY+5B+9r$M#FI-tWX1(ak(odBsIVP@CGSof0Vm`y66}$hPUXn7}>P1c`H8)o~w|u$Q z5Op};1;@-Uf6Ul)wREE3?&?NubcR#7{PD#1?p`exuu%P?HrIQhNxTQ)z=FgpI`dV1^?!a+N4aGJc z?oP-O%8pX@kZ6K+4yL+%FuU)-smx!2$u28DZ5@3La&--_N_ywZPB(RTIX)VNNlCIt zK8PP9oXDKDO%<^AdBdMy8eM72a4c=PUPW-c{na- z9&Jp#Na?uqH8b+ii5{B(N7R}2JxndL-| zDiumwg}_W4KlsIVilwC;k99NwltV`u`a@Zz@~@q2H|D~H*B+TgGH{E=7(7GteA~~W z@ta{*Do*jN#*;A|(<6~NPj{d9#o9~OaQva_ujVIp`5pcsPl_Ohw_ztm8t_EZ>c7O^ zBeDKr|JAJ~GZKE`l1L1J%TWH^w|5}ze#sq&E)%4_r15~K2OthXAI<0|y6iW%q=vwR zDGW3Vq6J&v2qp*_57$ zrRmpWZTCZWZ9z*PmZZVG+a9!4e?l^GInlk~eYxkQnMvjk#s+7Ry;gBD>LzzP9(EAS zIl?^g&Me~-eV#4__Mb5p8G5oCmTe!|Ai9swe1Bv&P=R};g>l%FWK z*4USC!nEby6)f?6C1#wzGf=rQY{>B3IcM^Um)fw$fVR7$QM`LN!)qyzK&KpT#l9P5 zuq%M706prK%4~o;JLcq6ihO)RZKNR1>w;IxQ@?`w;P8;+gDNMkd^0I%7w+Pz-pHfl z=9=rL&;1uoJYYF6v!8Rr&JwB^I7XQ0fzyrY%FvpWa9KcB%Duod%NrMs`0yXoj@&_d z>LtL!?mt%^Df=Tou~$u_DckMEAD6ESaxZ zrtj|)Oc0LwP8KyuyjCW1utLHBVj||UXNXcPDH<)5a$l0nmjx_9el45@b2LZZXZ6mP zo$~}bgS+nl)nVM8Ty6Bp!p!2D?UR7eW@oPJ2V+|N4l9YquIZZ=%9ZS=tFk`FOCP70 z&l=V^+QLsJF;41NU4N}9_{X;zEe@^0i@FO!o*YZ}{#OSTw>6FGMkGq7Q=ioOkNJB1 z*!bkse&2d?*w>BjctV=Jw`OnJcwac=GQ8qes# zS=rnZDt}zqY@n5e)|VzUj|S-`?77FQS;o0->^>jd&riI3A@4!!=1HFTh6M;nYHl(7 zbRe9rfqfZ^VjyKSrLw8&7cMGu5PI5j($CZ;4BR&}a4xdFGjPIMbNY2AX(;Np(9z^KQzt#9$9D;R%|<8H-j4Y3?=OiYelmc;JC z)e0Ovbl?v8J>@bdjWCjgLW0GsLt zcajU>m3R(;vt`}Pue9Rdu7SyKEj>AMGn>-7r`*ggDJ&gUkP{u}`dKOtS*89`nwmSi z#G3^{I-uA{-Y9RXLYn$CGIK1OuPARXtIWY(cZbm z3K~D)R&y+QCuf!`N8|*$Q3@n&?-XChP0Qr5TxB`vkyk${LermYN!{Me23uhh=F6vA zliynM|Cg{xW0Dj&?l6f3ZSzYLD!dVv4aEHU@a*$*j}&9%`MGZ~5~6!Gy$n`uKwrOt z*hOo2iZ&;x3)!ik8O{z}zfOv14-!}8phX`v2d%|;_;&ksnyQm1bPR8{o)lZ{N z?Z<7SSy4uuo-~z#!S92Us~4C?Y%j|ydu{X+*lxA)ecJI2>o`H{^$rSCKS>oN?gXjo zV$p)g)Rv2l-BEQVI|~h-*Zf zvEZ$}xPV7*mM3lO*4~|C{=6;h)X!>(eF!vUH&N`M+onoc?!x8|)GhLDNIG z*Y6#-uiv#REwnAR`?BVS3?)Ag7kB{%aPR-Moeuk3TYh!x-%l@e z*!oTHAX*E{e&<+~$zS|l8Um6(VP8yu7W?@-Xny7-UHI9-`z`0NpYGq@GWKF_V(tz_>l)Orl?wKGvl(SHy<8Tn`A&anQLDsK@tmz7d$kDs1uH1a#yMO z!ucI7mmaJsFyiz6#6hm67b!WaR#P9+Sa?S2SXRuxC%Hd-{*btf>s>zOZc7w?-{oAt@TzcKji9z1j)?s{bRrEcz?YBx_W40(cc1Gh~ ze>Wk+|9L~Oko)JX<)s6h%+(K8?R8sN_scc^}iAG-x_~qxj+)qbQ)s|4x__Y*`P4@sZ+F-9Ijm z%1ps9rrobQ`KS8**xLm!JQ4&En}?XQkAEMcDi5z+>M|d2XycZID|N8uo2fWcy@qTKlb7L*Q1BlGQ zkF~NKrlgm$W+NYW=_U>@UFq0hcYkXx4pEIhI_$#Y z&ko4ij5(u542sJzlaN=~RG$NiE8(uNhrf3*;iMXE5AOwnd47+CGtaIZF@5GKmhM=@>52&^x%N#G`P62l;7S6H^6C$k#e;<_`Ga3u0 za~sc+ADw%DwWlSl z;uvE2HnjX6>-d`5h1u2~?{&ldOd1bGx)sg3^+kyaJvJ5rOcQoO6(tD|%S%J$pLkVy z&_b@Tj<*CnPcLG(`C2Iq#?hG(p+DL%-n<(}&f@(nhEC~oOl=3Yx z)0714XnYdJ!cI=*)8=O2*sOm=ef~*|;6plTBygVMkzm`jD|>*9 z_;D!rbo}C*@E`B$?s0x2m5kO!kCe`Gn~isVTB%Nb@lbxWd&eY!M|NH$L}pd5tdFs_ zLQP3-6WXwE(W<+V9Z?Ed6wh{LZ~GLk>S0;4rezoVbrJ4S`g3+Sa{;i{zoq)B z1$`yM=OrkoDjaVRih&2ZK|=(O6-aH3w`Jwpd86)5^?5yBc)%>RU-bIfgk=kVQs7YF zt|VeUte%t7*G^L#0aQi7R`as~d5eMK$p$Tn1~1Rl6jel9AKF@YyXGOW`mT8Uh)bNq zZe;(h^8T=R?MlXj5j=5M$G`dM3fUHkt!SJCneD*W=qPaXKO75BK)nk{s~FY)a4byx z&m0Tdg^K%$pjw$$2Z+LtS?DD`qs6|;Tt^{!MF|PI8$hghN8TcO93VC?IT?v@uw$~kN>D;0%k7>b+&MA-%WL5kL z$#3RkS&N11TP~`r*G5RmA^wEWcZwcqQN>6$2PgQqT)t0KHxkRavILhzinXMOP~!G< zFeuF-D`GK{dv#6qSO&#k|Ey8zh*NjivyE2PB=y@!frCk2Y!{ne0*PqMU2Xl#3cJV*^`7Ulidtivdzdc zn3V?2UeYheOCA=Gp666eM{PaByzhb{xsDZk2D^*)1T_53qDqkK z(w&_%>Xos9`P^Dr?ngqAf;8b{aUlu@uI;E-B&~5(m;&`YNj?!a8EiRZnvtJ%y+(Lv zKIvh6VNbsC3>PV(N1>`x^!~l5ck5elsE8Q!xwbM{Tz*jCRNG+r`|;5##d}fKjVa^R zO?S+Dn4DkezL?t7Sd>_eW?nm_(YWC7o_b~F5K;?iuHyi!>lbe+JE&YsPxVwHT0iga z9Hr@(uK)1t=u-&$hc|(8h0l@KYX?XllD7CFD?V5#_~l>K$$65-xo$p5-|E3T?QNqu z^U3Tp9|GT1;a~ZvD0)QoY>diIN~j@a`^r(OI;Akf`X-g#YOrtbo6)mH zMb>vOn>PBr3Ay`v`s|5YglkNn5Zv=-sF)Qeq>gzJh4U%J2O;q3M$BlaoC937ZEonw z)eJE_Z_Y)R9G0pbrI&^8MtQZcn59rGYU#UZ&rmyuR+^zbA1ICkl|}_{hr)`_L5a#8 zd3T>k)e8ph5>)6Dxn4;uLnO3g-B!qL`VS^D~A9pXVX!rKc1uzQ6q#QEmAg134_ zHVWLVniIDggtb>$B?RFNsgCYQg z<h5ASwdkGVVl66&0OgNk$BR;fgdqe45 za30SrXW2%V_0!II+|;HUwe1z6fb74x0uZMvjgsT0d5Ja-feB(^#uc@W=k{GYvMKC_ zz@UmE@;U(}I_ozkg5-T-8WyQT> z>i|lJV(iXxJHK>>yZfA3+5^t=@`~KIovqIw8^xiV_n*Ec814Le6r#t{_HW1IVS-e% z1cGoVXa&fZBs$n*w!Ra_(U@_cr$vpA$GYpDWSwgfwXbr*#GJQt2cVbO`aeVMQ-PJV z$fyX~T$g{3BAd#}Wb|`eckY~jr^d|U|IQ9EG?%o6;t4*H1=qelnn068R~>EB-L1Ll zFphtn9KkVM!tRjYf$yK zep=-u=tsk|Xf9Pq3vue7ay#1^T^A)gE2=ZPM#(5{H)~J$QXQhN{>I8e1uF&3TjgN1 zV3&X(2L95u zb0V|s5EX!G8G$Ruq8`)=BmDtw2ykOS_y%&XKX%=+X6~N&sioG3=V*TP>qpsWd>G(W zNIzx1MTbeKpti$BJyivtxCMS7Q2k#^AV5}&7?*Lu&JP~7chOT8{izoiru^?g(mh`ac@ftguU z>}nA#qMx7QN`Q404w+Q|%|eYC*gm8->}#9@(uHk;8gME$MnWqnuHdRK2DGsKtzG=c74*fX`wyVJ;0B}>NOselwv*WQ2n+}7 z{mg*zr#6R8o~WWTrB|m=?vjPkEE9?aS=oRbZdLHieb?UfP|g?0Q5l+itUhT+f?=DR&~}}@Q7=s^9is-C z-c$;Bsx_+gj@kyw&CP_A@uwg=-yPAt+OJc3*`fbLuMSsX?%In*&aE$Zp$-z**(yEQ zEeSM1MC+cex8Y9dredt;<}YzT5akfmEQ&3Q%1e7dq!>969FEnL>`~#5R*y3!4d3lE z+w-!jQFi2wM)(6%y$73MDaQ?Fv*t-0`N*rJ{S>WK;kGqs9U9NAf{>{gf+U6^B58YB{3kAYHe<7B)YC z0LjRe8;sJfUtR*;1~tZYwE85O@|Lft0Bf`OKLpXW2Ha@7Yy_tJR$)UBQWuE0itzrLBj||HyVP6*?zcS1MaPff%J;2Z}Xu-3*lp#LXsL}wSM1euC zZ6@yo>>ia!f|<-Kg?JT=({5KztidOeSQb}6^8@aDx3)}a8ONn2mZ<&D+k zdS8%@5mfh&j7VCCwjcJRM$kE3Ol;NiLwYNhfNA!Ai6yFm?q~=tAmFF(CXnS6>0Q` zoK@ltJ{KQ`gwap65%IK8;cxsLvi#BiRBt#21^uTM+UFz{J0elaT-@Kv3iBYoRMlpn6koQXUMMcg24R zR8swa(6WJ8K`6ccXFV>t)o?PWnVRrNf1mIsh!@WzOX2kN-mW+A#f&&*_qM#Yy!M=R z=Q)nEpDVY8kRn+rxpnB=naMAZA!$3}NOH+Aov*lDz%e;hVDxN`A=~9EtdN!CsWJQ3 zYfB|*V@-k5(L9zzJ3UdNwvf(yj_pBbU1z6Lp5OYGIwZ#N{RTnjhYv@?P?3ZwnHn_U zKUvygd63xJ!tUC-NK2xSVQb29ZFHXWNLk4HtC!hkdv3=JnIj$qN(_TifSW5annMEs zJY;q2fpJr0>f&cYWJcl)IwXp4Id^v?T|bbgm)S?3mhH>i%OVoB-mV<*-WstyDEm$y zAv2_uQOjPpKCS`ds9Cz#RkN2(VzvpFVwRWe)z;EFUvIM-ae|>#+vaC(!r6D`kwH6Q zz~UC`kaJ?&If=0^^{2Ua6kLimo4It0Df(5zv|S^k+UjR1A&X?FA4+fqPCZpY3q+|sLB>{T zE4e!Zy@cr?!tDXu@r6&NYaS-15iLJAY(K<&DQw+gzyOal--drKi@voS7gDB~Vq%@d zO_s-G4=5?hb$jkNRg*+D2)<+4%kuVFd1KfGnpPts85#?}g5Vtkl52D&6bfvtKpEb% zq|~X-@D!Wndm>9l(sq|oBS&xewykT<_dbz-mk_zpx}U9;@IFsyce6&@MX`Dt%Qe*k zQQDUIs;lHE?JW0XsNjE14yY6!Dgcj=Yi7&BRs;8Gyn-LE`_^k_-jvyktMZ|C!M?`0 z%5^Tzcm46AVZY+=faE(Axt=QI0TfZqj@0$<>nuZO$oSe%r8yg?cb|xfP50||RKCogku(592!;u3$E;^F@ zwo_AdA!~UY2Uf{R=&tb2(zZ+Qcb0uNO*l8~d1l{(ZWT|yQU1|vsVB+Mb+o8CG%GT? zYH?tz8xZ3rBZ8?HkC=TbnTmkDv4<4wk5bUw%F4Cx)~=m8cVn^M+4`?wY-KW}3S~z) z+c<}H%Y@0j`20!vSI?bXcRVf)7%S$)vfX@`l!7<Cliw0M*i5y40CQ&y~d-7N^) zIOei1zjyIY+DgL!yIbWs!kT)nq!YzVLAl6kJyP7%PC`#43+3Rs65u#$N56eZwhC%5 z&kjOwq>qKh><;U_-+$w4 zQ7V+IN2Z|koBLTzp~1~}K^cS8wyxf1cY`FHjh#jI9CNgfo)?aLW-?*okp0N=K(BG1 zM((i#{y`f2YpvQ19Q2R1frD082a(^-(|@@rz%kkQxXYtAC4nrPpc>mk-fxBE6VW+A z)C5g`cwY%{)QU5E7)?n*T2el8J-XB#=r6l63OWBPEoWM?N22;WZ7$u+zH7 ze47H+-eFQcde$>C!hr>jSDv@51t{P0Kfj0QT4LVO|RW|uzj8Z1`McgE0?PxpRYJW%5>53JfR?B9JkoI(alqcw^y_8;w&bxYd<)EzjT1r!j z=Aa<{LDE1SPwcy8iQ8h9pU*$=y&6IwKj3mac6sKCl*MVJRZYBAn5>|XoqBobnfF-B z&kobchqd+QE_m0lZNpRocwV7)+tX-qL-{hz-&%XiG zhEZ^&$T|#n{!qF^%`U0}i8yh}&P-qZeIA8NVR<)R7gSvgtaBG))+USR6L6bQ zyE~QEJ>fP}wbi%LxnhOBM&Y9R4r@V9<~|*Gx1pywr_H17DRYg_zXdfG$)~txqEsn& z(O@@xEDK79JTRq` zip18@VQsSTO%&LP@|UgCZZy^2y_v3_!!wC`PpxBiL|!y(=&fHDB!^kCwTAPQ*^t^y zDCoiFwKgguE!4AHP6*r*NHFcS@#-^9kLQWB(~vLRz0?4c!M3}FzxUmq6Es<1NSf~Z zSeH@C_ip{cGq^sdR7H?ra<2eTF6Q3>HvzbVUjO;r;i*+r3>tJnnx(Sf?yYS{X53;S6070n(ebACrPQB<@U-^W-D=7;jG zpm*?5KmfD|OM+5@$fiJ{fVwSSB4Dl_pO+af=Ok#Fbb3R~#u=%F{iXcx4jh~?xdC!f zd8FwCE5ejirTk*-jD56jhHYU~9cjCT?Cz{*cP5hq#O|aF2acO#wKS}m?7*RC3twWP z0@6+nfPcVI_>9qet2>eoer88cqFc~&&j5MtMVTj%zJlMzO$s?Ps{RV?*y=H}qLfg2 zB_6iC>nU?2?E!qahYk{X*fcai@5b{-EPieN;;ZCO7@ce!#0D7QZ%jw0G!dbES`nJJ zl@O>!{IvF-jM0XoI{)oHs)v}jN6NMI*kZU+3d2W8g#m<^IB6JFjF&xc`Lgk6v-zz| z1dC0mEo4nXP_-xOuuU4})bgC!r|Wmjb)TE_d3#mh}YZ9B>%djo-&{Msnb;i{{%qRn-P>K!>GvC>5BFS8XvzeL4u%aiE$1Ok;`KkQh)KmcJ z2!NwbOFI>>)54Pk8D+|ej4Jdgzm=#2%(pl0>V~+i*D-$S1q= zN(>XlUTOn{SbY;yiy%Gu^UqJF9bYR2L7X1bQVG|!g%Ekw+AClm#^YhY|71ma;MD@f z-%2C9Q67`~xD6$gk&)F++&0NM=I;ivS0ffcdzNlbXiGPI->G#RVUr zUF-WDnXNFT5%W{+x32mseFjQqPn?IclxLo!M6C$WT&=hqQ(FZi-Vw(f&>P}-_dYfK zhQ7pVM`&`U{#Y{f?EqzW5H-e$1>lg}xH+#@(6Qu4Fi(%=11`sjn!w@E{>nAoud_tyYUM5kaN(zeb@W>ATLsesCD}A_U6hS>i&j$sHFdOl|K|g=e<17{$0J3+E0$`&HQjxUv<$*nPWv~dK zTQhm4M}n?vNerU-f^J;`3xWWl3Z+$2pRPFpR(F)HJ6b)kstQ{-vf8-lF!&%((&8$m z%DEV%{!OT$+>|97nO+0S8I62fU?hO>rz$+5JnrlkO9$}rONi05#X!LqIXxl|BY=FeU`f#g3aDL=W}Q&GM9<63 z9X{)4XCvluR85bY@8R7rqem3sS@vTKGn8b9kJ=TrgH2qWLyh)JX9N@Qto=bYEW&~1 zqc#1UEmWJ-hBTzVR!-;K_+c-zqkUGvMRgu8L=R<43|^lc8kFh6BRcJ=Y)=yRDw|LC zo0Ub&W{)P`=8rgTy}`h|T3K7n_l5%i&hx<~_XSb|U4fy%{g;Y0Zv#|&Y4mFxnVDWc zz=0kI9qID$zdc~3>dc>#0yD8dHwaj)@Bu#E5fgk~7U%&r1>P%cu?ZaGpv#+{ zT`x}=eBmhr=MID~=()jYl5*2*s%(E!Y5$^~uKN)DuXLUviWw8ISq4it8wx6=;)~DD zM=q`H{{q2-0ktryZYKda2HK7m(rbI*w5|CQ^TV)TJMUuuoX~HD$L7Cxs%7BcpMUK@ zYyMk(a_*m>8jKPJ`#hL357>m=GV}ydtOJ&dq6y@zw~#03xI7D*yry}N>N=nzvd&Xt z3IvAYxnx&xq3eJPJq2ru6{BV2hC6-sqCaG2pvPrFiCFxf6f}e7M~{E3?X~#B=GTCO zcpv!7e-ykjs>oKKck5vDq9blD+ZLn~er|ATr1LAy3NnKGwYe!MK*57Sj+1ifwYpNE zB?l3!nalzx*k9|BL+NkOvtpoB$GXR>jEzAqTnWe3A&C6sA$ZF)<8~)fUu$`&uuRKnm@c)y-AkYb1ohw69 zXXgq6{hV?PoIEU`({76u!)|ElxK7k|aOL`^qQ?&63tE_d%^FXvD(3#;6hgezWod*{ zX_zueruJ`7@}Dc^GNCvv=vR;4^V&7MF>nhc+;gNp9n|D=&M=3`f zbTuO+p#V6p-bPfQEvBJoxxEaw0(XnloCLT%k4MRDpWEO|n^k7}Nd8m@ay0 zGXTE)LHX%a#TLrd&$>Yd?e4`h`GSdtGkP7u@=12V1E?@mo;tHKK$ucxv*lml&&aY!XqAvJ#i9y~1Jyt|L`UO&vH$Xp@&X`afJv0)eMkZEgwBY?1 zhyYvA`4?+&bLV}wqX$f!!18zc6t774Q?LjDAg=FKf1~qGTczx>clC!ou1jZ9o;^R) zagMz;+vARNe>pJ(qPkz_m-_fK3VrYsCK@a04Ev}j^3vwN?if(C0~|+Ea|K|5Jsu*n(U%!}2AIge&y#NjPY_2v zIP=rwv*QRdl@uTDUS#YPRsA_K-H^O)_%qU-un!qWrd4|Zsqs=k6C(%x=g%(ZU#%OpzY>f^KK4~IW!NGh2c4&j&{yZs zh9+RjzMeYJZ^JM<;HzZy>+dn1$qM6{0G8_NEGN3Hfuh-OCtEj4jACj<3awfcP)^Hu zYInx$6R$~X=c8w`4$8H)HEG&rWqIoSSC!Urcekpp)9;ima&Hn}IaS=Z;PqO#-z41%N!@3|Jax?7j|Q1XzXa^tQAMNTEa|OG)hIKHz7^TEI#$uFGxOdqup- zFFtd&e{Sa%87XQ8i@B9?>-sa+GT6KetR)7lWe6PHx@wH2JkD6kTG$_3ZHH08X;oqH zK)^nV{9_;8m0aCInlxVcZTPCS#7u!_?>7N^`Ee#hdTO%l7}>R6ap6u}EIw+y(CI?X zc|LLNyXRA%74(rG9lH3w{39|Im_Y=QyU0)L{+*Y*^dpKyxdH!bFiDUW>ken3pb;%| zh_HT@Hn(sU?gF6Jl1F?|^JJrM{v$D_da-y=ga&SBIAZ|6-p;Gb`@`+b*kjFq?6L2+ zGh>gfIwRjsTE-q*^+vv(a4ztTDniDf3E$>8f)`t9)6xFMw@&%Co5Gc_Vpyr%dj{uY zJ(MJcJMh4ZLY~Ah)5WY+WXL`lg9E|KrvlQDkp^^p9HJd1E|bI`UbgQAS7^~}ifVey zkVG^H0ji296JS_z;B--g(a#wbf-?zta~p?-urwYEaGw*_qL(h7=dJE(j;K%~r`I?^ z!JAr19g)=S%Xx|x-EhLj1K!xTxqhQ>dlp)Ag?;*p?Wf*(zFK}+wq*g}$5Cx78t4x_ zRzR*1@G*Bd2eOZySE_v>SX-G+blQ~;Ca zo0kQiV`L5Nt5dR@ach1(ETCU+P3}MZEXI=@0{z+;m*&Plj|<>$FM6l00ke+2sff5O8gUBKSf$j&#Kbqx{AwRWLN?zpGFFFhBhI}i z;AIo~6i2Uj&4_q;%5Rg$pGjxIug?avVkZF3I@*Yo?VmPQVpJD-o5#dF!9gf7^`-nn zLrF{3+r9}W2Y26WPPOB4ru1KJ$vXEeDd@=mLAn0M7bHEy=sC(b`){gBx|KM*=*SFI$s zve&jBN?J&GWDQi_P-x4P@d9$UiRrGkbLw1@XZ3U+044JV?2VrXMmGT#wjIoc;evlX zAEg;H&+KNPq~Ljfn?5}D0f->ZGQ5c=tEYb>V>x#Jx*X7tjDQJTF?4Xig5!y07Q{*$ z%Yl&*DmbW8xfD%8W8dyJgZBIeClEfEfbbznKFRB+@WCdtKT(yV|L9(6iQBV6{0QQH zb8Z5r>$*P4DadV#O`Xy>G{G*ad(*)|`t;lg=ke7uRe~AN-fO*D`BQpUouiE`4B!8| z%LLqrpI^Y|PCan|2oO~g#s$vJYm}R-ceCa%|2JZIl4RVpNrIfHLGud=?o(<{bp9H-Ujd}E517$-=mGy`~DC2x0||?VqrsytNJ{) zP?Gj2OWPIgp3!G3@I=EZiAXezHFA>X)G&@@Quny0$7C=s$TzR6^68yJziy2#+ti^W z=Qx}x0y*Gvfd_%epJq{2vN_@LxCPjnR;l9!tzF%wqBgac0%cimZ^)BiI=k6>_ZJAm zE&6kuSR1fDtG?q8g9Xp>=Q#JTT|&2C+Vd3KmD9NQmQf>}vqz@( zw>pZ%_Y;rYPSnYi0lxY=tsSKT;4d^!t`I#y7*s{31TXIJZD|Y`C3$NP9^|7d=A`96YpR&h~E0tAHDFufBqv4@;x2$Z~2bI);BNhvS7kZ zUW)@|B?|MDB~U9SOp(f@H(TUsJd1bl7#8LsizwE`a#?lpEYRkdF@w>Egks)T=&Oiy z@cFq*Rh=F7p;4wLRAKE++|;7+8?m^|Pad)IM)3iCAKM$&@{rzs9KL&h_p`8BZ4qb| zS{?n;=~d;*5$Xogfd9yY?0jqDieaY9d)@>6TFfV0v|sDrf=xbdVafTPU}V&rob_=T z4vRQ6amMIlJ(Wjl(C3Ne=3uga^{km`-Ntc&vBH@4&4{jak!?5X5H#0hXc^AdhS}#W z;I;?RPIP0Ozd%%88hH^sRY~ve02Wr{A+N~kjr0pWHSuL32Kio{hJ3rNTv(~&1Egp> z*c^Yw7s#t%c%3gigTqzF0)r-LVSKLx!kocV6apU)Dge3Zqo;T`*FJ6=auj4qzdv-n zaX#xDBjCzvN0k07<@4{5mH%aX*n17@Dw20OsTwyYTu>81;pR(q|GD;w$J zgYY0FzT3EN=h}rVL$~@F>}ALsmkqC3SkqUY=1=xm|B;(y+~V8~)Uy=VCsY%PD-q6O z*W$T+D*wvPltJi&W1EG%`As)LpK^DeR)xLgt&I#^##KRsRYXZw%VBZP#tL7W=-v!K z!D7`x2-Thmy~^F;(+DI(s#W<0~~%;BX(j1J8XxlBohXUWh0P0jTX*Q_wl2raQHx{9U@r!??Obgq)R;* zbTpnE9=!StU6n-vj34<|*1{T))s?x>`-84q!sr!!DrY|8>x_ zkY&f!FxLPBK((>LZt#JEVB6LM#5BN|46speES<9eg#0(kOXCkGLlaP^oyisinGhA> zrc9JpF8OLqHYL92cu8AN^|da{-g6_DCU%^t;jk3S9OnkALTNx0m*fOmY=F}9$BuSA zJibDV$i>`sMFTl%NUWnjIp|7=$x@&tUl$r4xq8b2xxtR$+f7# zhV*ahL`e{x!sO$YH|IDm6vhsaf=qW^ws*-I{b;PUiO+?VCEsQY&g`>?VyWIXmnbu| zGdvcP-jfPU$egW!ZJX931D2U(2n34;@%}M7w?$p#vUDegqG5_AFOSl}JY_<;#MQxB4RN${rAvNyFq7qK`VjF_MEzGeXfU4BrSAS`k^1E|@?lFY7z zg<@x-6BEVNsDy1HlP2H&$zl(rbU4^7XDU{%1rH-#r)w+t0Z!ruOCWzw#$WvJ@m2oz z5djH;oIuw}e+6G*2dZ>7C9C3?O(4*18-&pU^AR-JKBL?g=CN-X3o@+Rj(!xj9z42a zn}KEVk@6e{JKqMo#EJqj(94_Y=&^+Oh1z5mhK~jMa4^btFpZ9nUY z>Pa`H4)b^Iu|L3f*@~ppc@o2;BnPd%OmW^h8BFYweUzns^@7Vw6VGt|J6h{ogU+yu z32UCmCr~ViBe_EeK4d}_j2#6}S0^-YC@*+eAzr?x8`ZYkXZaoL(C*qt`W(F*PJTS~ zemzpWkP;3m5uVl{2+o<9pz#t!?s-pfri^WS2NXP}Y93D4Z6Nxp+C#7akU)k*_EG0F35RoOFn;ogWJc}$&>>59EZx_#!}CRzLiCXukzLHxA^6a z5HrdVKu}MpL@%t(0Y-jd4{_tF&oU}CD@b;gs6hOR;2g#72N*quZy-p7<#@d@e z+!^N;vUw^RP$!GYQuJ4|Um*LHV)mcN{#xw7Y3U-uQlzS-l5B&Je~#x%9cl8JQ%_Of2rS$}!#99;aW-m2js2 zLge-C1H8_C5p~aeI{KkxTY3YCwlJpTwf&+UjQ-8AwwT%E5G7VYariW2qEJugqLK zC!%S_-n}jo?jBIFmqKBm&RxuDnAUa2{Bn;;-J%8BJI)PsS-g5NVBCAojCHzeYWlJD zur5CO#cNSzR*}WEoR!%#f1Boi((&?7n&zxi_`udOwZVZcsKcbfTYL88!#R=Z=k_;n z)5%)}>^UFE?A>rmO|Ml_$?tt~z1*jsF{U}A5PCCi3rc$^6Lz~$MGAAu)SIPtIXnDv zC+WViv~)^U-rMsThm=*fZT4*PVvm`sNVNh?Cvu<3d5xFVN_&OGH24h-w{fVg<;2S} z4O!&jskcHIVgu2OnOk7)T$sibq})4IMc}(M%{!f(TH~Q zBmGi&JZKySj3@d$B?i=3c%ttoLoI`7XV4|P=3b*aBvu}mH7?wt)Zv)vn<%-pooVkT z4Bt;FbbaXCFQr`lvVN=mvtt(%TdrxEK;}0}#gdvMWv9-}wjC|+kPRS*jJFP0Sa%vV z?78C~;9>A?h%b8gwg~6*f#qZilR{dmk^*V;WZPu6TSgh&J$pjI^~m$ioaYVfxVW&u zJs&I2uxvbqtc1*m3|7F=4Xg|S$V>gHzzck7WSRCU)+EnG$MQP+u=5+z5jBx(FGacC z4voEe<)`S!Dp!y40pS8C8Ah)y2U$_=%gJmw7W8m5QilF27QT!S^5Cwg3V~nI9mK7y z0lLTIO70*2=cO0^r=&Ul#p7TJMS(cy$LOxxuD0R;y1|XY0@Po!^cmeL)H0jA{CoWqfCjw%_G52RC&y6^rL~~VzZohl$odD5r_oGX1 zA}tAVetCj2Aum6{xysCT>+Gy6c1|_36)SBRY1n#IGNCcR{HUnLunfX_9vX<|&aRN9 zgw`!LM*xZ)(xlxx;n-cby5f@DoGXU+9OKmk`GqQ|374gFSl%Q{pC&KXNZSHJ<2pAO z3st=g_kzq*oN><9lPwx?*taah@9LWlG|6O{St|mMPde3i>#yIl!$+p*r5)L?vL8 z=%mL!(*!p^`6a*Gx7R7s-ZKg9lX``-)vnl%QlRh>;T&TFT=RVHM?CUEHlTC&R2-A* z-3MYrgLgc~YQ1;aZM)NRJX&Y;%~S4=yLr8s8ZTTs;8_c};Zw43;>91m3y<#y3CLso zagelsExq{v^Vqko`Un;hKAoY1Fb=9MMQ1S476$FMur-NXpyxleJzW(^OSllFv|lOG z&rl~e*kkn0OXo0rC#WNNhFDYwg;~v!!c3%@8cTw)l3XSQU*B19@e3qZ)&i=1T}giS zj+#x^@zZs+8rpX@r7MBbPq;6R&xaQXy267}$p%5U^y@1`+QhvQd8-ul<$8LuD#LDW z+n%~j@+xGm_ru1NFr5Fg%uSRoxpW8?JWBG&@OskI*F~|?(ULW-=k$(+9hkhsD_KW$ zVO64!dEt##Hi4A6y6egz3fJjm8L z5uLiy2lp8E^O1*>r0_D1X=c(}vT7{o~yw40zlBuQ~nD)P5z;ScZgZyf9A=Gy=2^?>qFz|H()c%6s; z{iFoV2HY@RuvfADGVNu$+3foD0$F{-ad#qlJ{|aExFC4{u23G={s_7Agj4Tdp?MBv z!g+nxA;?noFt+?qhpW0=ja9sh*Ilw=EsJ8Vy+!)?NWiK@b) zE4t{{#|8&z_t-)BdAxU3c5Kxr`7a+OdT;qH?-JE*3aG`?8rPsh)KAu{9!i`8#1lT5 zPFggl=&vYKB&w1mBKoD#Cv&Z_T%8v3J6)wJxL+LDS3TaAl>dtAM0=1wmjBvkJBp{H zt*T$?Ma(F@uK38DnGv!_GHU&sV^Z0g7(PRhJ6-QITjL8dEgy}49{6MwyX+puR$`i& zVJP{8zs~r+FN^Z0+OpR3N28DJXxtM1W~?$M=&5KHgu^rGq>smdg7rY|k?WQZtqSY{ ze=$0l%Q%Dt`EI35pp! zoX!lu^-Xxj=+6>{nKe^k0uYMbS-|_y?eNltpuEXmwf)=4GgC)MnQC#BaULy5T^W>- zt7CWh^Q)*Axi61Y53avEd?8HDp{Rb7RG*v0?f(6RZQTeEIBWrLC$L6zv-`R48seb`$6w z2YI8eU5+*8C-w4(G2b*VBv%uSY6fnBom6&x2+GxuL{xd0oYYr;@?l(CdZqutR!s-C z2AL?)=%x!B46f|%s+u|s`G~fH2~qqkHlxl`VjfXd$O<9zFkU1^ue43tvb3(1V- zUte*VVj&b)iSz5{Cf%hp6CA{)RjLL~ZV{8uZgdsjdZ!8gw$4!OvWw^8k&0l_=9`%m ziz*YJm~3PSn#b1T=^5QipZX7p7cT{`d#|*2kdMO?sd3>U$f$zCFHqi_H$&re zH~)Zh14@={7&0jKv7*1>VLh= zDmcG{E-sYbZ~$GK$W~KLLth}U!fG^(0sM;}x8S8`KpP(G&Zcx57j>_6&-Y7Ly=(%8l+Nt-WtLG% z=TC+{rSni^YLYg*XdfiQBAigJavei`)z02l+@+>cE*DSpLF%A=YcFp;ps^qNi?@;q zx_w6ElW^)~ZS&~cpsC0#f6rtT#s9U91A&h<@VM&xeavw#E(kTlU!y*~bp!smS?w}j z5UA?FXc7^n8;9t>_%A)emHg?}u5kaDkrPrkjIIpX;`@532Xx%Xv92&Nr5qCDTO{*DfsLKFcgBH- z+RC|BO@93cuAO~(q_I?NNAx^#N8KZXqtC+Do%UVl+`U)@+lWjcN(7?Z(J3|b-K4Px zvNUZKZG)ZRPmsNl756>1n~H3?>u;6_+Wk%eEC%)kvK~G82&6-Hd@9fJ83QT8bT~K- z2AgU3q#16KnNfjE-&V+{{~e%43T{B&8~vz3z*aFe#=qfBR!7xwt$C)~&9*J8K#r7@ z3CZIo@kparxhc?*)5&zd9O%`kHG+(JaZYL?}#&(7ZWkM5q?0C`g+;;6*gmfT5cCG^bjDO8W-wp9p?w~Wybym!x> z$dWl9emSJGUtjF`^=dv*=HyG>OxQFy!Hj~S2PA^oGt?-E)*xefod93vaYIuXf}+96 z8!_xEl1K!xK4`$0bp7@olzM7bP3)BGMajE{$1m|Cu6ccK=g?4FpG*H02(n1EzTp_K z?e2JqcXm>g(7S>cd(|N*_}WLgMbR{#v%5Vb z4nE9K-i#K2jQdEU%vyZ7siK|q9Rp1ZQ_LsZzCiMh$2wvc?!R8Ypa0zkmp5BSS+0$g z$gop?x$_sFT}NIDs~SX`*>cxYz^1(hVE)n(R@?@dF2c#FcnsX3p_2PiJ%y# zeG)in^xj5(wzTQsaZ{}}j%^j%;aBh6F*exI_x6F%r%&dBP9ehENHPofTBLipOXsKQ ze!I}j*B2s=pk;s}<39L}%zm#pplMQmzr-!(rYjs-JxDllS4D@r^hF|hq10w; zN#am%i8^=daf7`+r$IgWrYJA`Q>qU$eJkQm%acL<3bp=id4Ew2_TR)Y_#a|#G@O?G&&G7pT}kseZL^Bg%TwSfz`VX zZDK!SP)HUISg}Rz3N^<|&ySRmDsbBn>k}8?VtZouxF}Ri4&JcrFEKM((90>IxRO9C z=1!BQ+EiSSlI9iS5!zA1D4lY1>ywdE+WXv{_q?z8EKW3fG021=d%Xe>2OHHgm1;mL z^qY@_^;4Wqlotq?P@?oz8oCee3fa|(*zZ@f@7bptgNM5%*PuVd(T@)V!xm0cwO3V| z9{hZD6=6OMRGN#DoGJ^8$Q}=9!9)b-#ErOM8Cl#x&s@94^aq!&PQM9zFn3rev)~u2 z{Tt%@SHpDwC!haMLVSNHn%AIhnkhiG>>%*g*iM1G9_k}e^0r2o#*`}l7p1~M$S5q{uRgiNp&_KVFM8`93#g;@shzc7n&4Z9rD3hF@$ND4G&2A%TO)l5(lICokV z$fy?H#Erp*;8amL3%ceLx<1jLWHfMqNMRl5CE-Yl zof9*<1zv}yXxQSYkwAE*5_OVNoQk?cMpSvrR4c+mtV(josj;ap_zD4BZipa~Py`j# zmfh{U=F?&2T5qk*)?YOc*OY}W6t&5?M|PzX<&qMwI6v)gOgXV5KQA~n_RKzy$C5iE zg;-=yt8N8k$Sf*IfU5#_B$^=j3}^%?|2Z-oDV#Ad;01zd7Oqb73Yezj>NL^SrW8T? zP5J?l+))7R%HbQ5$;@~n zl22Oc$0(NL=kG)KFR_Si1YB2pioT6Px;&PhZ;RCr$PT}@KtIt*57W(!sC1jC$U;3UvHIK{vzUHaM=Nz0l@aXhs{4X@KPH&y4pVY?HC^9^j?xVRLc= zTgvz~k0~AiM5#CPu!p;MfTxmugJJ=|m3oI17i|)X1OPgE(7|&^)m*BBSR4S}9u(tA zwq5{`;PAp~>EPKEDYPMC%?{!!0U&VnwkOwndr$q< zq77CB09PE}%Ge$*q!B&tdQ>e#1!0PDs{ud=M^8%7k{!hC0T9~JlY*dBlaMt4VmW$J z5R~X3W($B6j-C_;Al%(dp|<-)93 z?~#K^2nGPIqlZ#I&CHEO=$z-}ngn(B6|jnVHUK1!o@Tr;GdE{u#e6rmNeI-_U={$l zj$UcoyU>8(YJ(8;6a%0+dZF3BpHIgOex@o?VFQ4R(pt86q2Z9qL1Y1-IeMYl?4C~| zY+MJC1c2t~rDgndwU`c~7XZ!CTbB95>RfF=br78ZXpUYU%pcw&hJ$DX02gh|(Mt=I zkPhM}00D@Dqp?r$u)R=3EF41Q5*_z6KeI`M;XZn z#tA&l!@D*BaM%`ZtPlWLNOL%VQvlH0yg$-cYXFc^Zr*cZ0011!b_2jX9xVEFFaY3J zygtAmTU!*hr`&hdHvXChSOy1k05I_E-~(8_{~qoX036jj4FGup0P`!2he}f)U>t24 zx@qf3(l2bU;zL>kK%M|Vz6@DfJ20qw5q6c-zsD`{N!zyufMpo$TQvk<8UTD$&iMZg z02wnU#j7;{q@Z%fYcv34%$yXj)&P)#${DZG0FW_rQoPzK0Dv#KyS?K_EP`}Bs8~g; z`E#Ck9RT3=;pbA^(f*w~)!N2403gR20IUtRC=uG|fuK2g1|*4W0B8WP-2g%Y(255& z6VOb6v&UjH0V|en%BwdG&@@2P088!yRG|jIIc7`k?jHO$&YHsW_gyl^i<0CXert)| zz5~33N}<;=7VB;3r`Pb^r%Bo_z(=9U|A)X9t9<+O8Y(dZ6Es2sg8340l)wNN!b-g;C*8;ne(HEyHLJ@YrO`533a69 zaXzMU|Bp$z=-`eMIJt9B#y0?HDlIMbHfF`v1`PmM6vMo=gd$mi$3(kgrg{KK%Habu zmoy!kgpVFBLi+{L0iX&KBL3#=qXV8)ZgnBezn{wJI{2ZBGH}mrEw7`JD0DA|=m4O8 zSn6>znZNCO`1Jv>W1lRRG{JpW13Ig!vLQemY8rdwYQ1 z^&a>wro*AC0Kl~S(Y9VTMoI1#LVp0~``UrK!;2+#E;;}P$0vl8SmxML(!!b2zvvAn zu4Wxm8mNdNz}9;@X}MrKIslkb$HxgVDU?CfMVUVkASB&v>L1st0sxF)PZrD{fxz0f zhbbx6@2Ud;9tR1D>5>vAv1biOQ-u@Y)=lCQ7#DYF$>IS(w*3|xIg6Wuhw(I0MGo~z zAh%h!X-QXhaPa^j*;1k(A>b$bk;!&W?L<_BuLEoDpJe+tJX16PDAJ#c>PLn+q#cW2 zWoIfLaF-8&{Q=B5Rw(OC-Qxq9oTUFAZl#iL)dC*VRx|)?L{Z5f`?T$|oXX04(LA<2 zAvE%?5&#lH#(sukt_1Jk-PSe$2&fw45k{G>NCQArw(=$) zw{@M9Fv1CJH30B>+~sujVWu8P_5$blA0YaB1Ain${&oHk$^B#I%^x>KX=B zt7tP7l;#lCYJl;9OH4+knEQ}#F$#2XqMOk*z@WZj5d&-RDG4Ft^+y4hY|6Al(PyAH zwWKUM0789OsChgA7nS@ur`90Ud#0MFIsh;NE~K>TRE&zXPIUlaq=p@6KBQHbs2!>T zK)`r=G1{Rj05H@)S>u}S<0U_w!N95jK*|o{GKCm$;ZB=sd~^WB-Uf0CG((@abN1V* z7|LBIIsl?b-S{hsG4Fu(|L^L=wYf}@jMvq{D%**(jjaX%G3@`6O)94#F;)lTpiw_U z{Bv3*Y(I z2)D2%pfaE0sFn|a2Y7a=$$>}|pd0~V0T6K1{?u==DY&8mKvDnL`t9@@Hb@{rtRPt* zA*#1OVzjp^NXIw)#?QC7DC5<@W2pV{RPi+cUd9lhO}gXzNsS_X^t1h6)WTJ|nDjXz^ONiXq~Da&bGcq8 zgB?Qk83pzb68)lU0MT1z_>k_|w?7HY;TI?n)d0X`W(L||w$vx}0hsh%&F}?$gP@F0 zwhLGdM};pciPUkH3VBP3Y29W5INWfIbwwMwOCZxRnKM*W(X~DY0N9Yg_%mHa!u{yd q#*d?o>Uw$mR(S8hCt~=N&i?~>6btHg?;{TY0000Rz?(PuW9l{_9?vN1NUPyND&CTxqpSM5E zoSCVrt}dJIQ|G534GIPW^g2T2HU(ba|2?2zE==r<6&&sCo#+)_$k1NCfci-$>ESxS z4h#gO0s;ht^gEfMz5QEv8|&7mcw!O#D|}Y+8z|N_trMcx@5O z2U5b>kv7cykPCGD$`rZd+8GVGBj6#sd{z9r$7;mRjo@~w45LaFXGZV#T~6Wyy!|{p zy?k!my(dL~%xTg$7XVi9h8+mQjM$ga$zm*yQ6}LR{8JZX!0%vN%q3c&_bj0W4kqcl z;NRIr`{rH8A`|=S&~$YNK7jqx$c~NYk4i5_HhM8K^6y4AwsSOnwX#owqEtTvQpg7Q znZoyV3LD+zX;(qh937+z%C2COCT;841d(>HB;H{5bB=&!1{*gk%z>ft=PCAQILTdH zO%JN4O1(%WbSlqb%qQ~iQKnKgWomKxbXY7?a`Gta3VK#8b1tAODF!^^ zN+I7VM6IlFBWk}|#f^ha=4G{%HJU8)y1d67)Yky!Alb%~u90CFvxoeV86S2f(JO9p zQC3bs#1R5RMrmb_6?8LXB`AGiE?g~>Ro4I*JZXsKHihL2EATQNomps#(~`8ay#9d~I~uPhV;&TKCwjohK_bbdUFqc2`6%=Xc3# zsokDyB>NVVvXdP?NO?eGCXjfhSkpu<*;H@1RSm7JUEM^X7+?Aat09uY$==>H2jDz2 z$hSBrpBo!8p_?sQx0 zD+)B>wj$Y-k>@xD6M=xPqVKdt)e4b7VZlw{THF1mjo#e$PtRSJNBl)wut?(ty4g*WLPOjrs2c2)_v2 z>>RC}EKE(E|ExzruJP|8;DCVE1%ZID{)6@>3**naqyunVk;3rFDZ7P?xCRxwNl<8# z7e$Igch1ZhWA1g7!8hg+*v#tY*Iw~aJX@HH``Q~<)aa(aco>P31laJi)%WB-d^D{0 z>O6{tzBzwIjUi{N!+X*W&rPbJ6XQ|48`x`o8=5kZS1c;J~|D z#a8Vz$?!QR(fImDgXU8G+TDGVFRx>Q&tn~z(j($jW^>@=)y208@7VhV?nc$6kIDns z`i!??sS4dEW}O@OuJS{@p3V4<3pL4vp@iA4wo7rtbDDsKr`R*QZpBS@%hjccvE3VU zfR1k7oyA2*cQ@kt214Lvd70?PKr!}DcN~wt9H&k73l0n2-8Sfy*PreIL-3bIq&{}~ z{A-u|(G;pbYUMGtM!VTB@AEENmn@!Kn(qr*&(GbLx-AkG=r7w29@it*edp)yc8W$s znr^ElxL7pL>`u&e`#M~tTF-bF<;&0LhYn76_%nyLE_9!b^^KpGJKtRH0xse!xCp#0 zEZf#Q6(H^a09zc$YcIgU)YW5lLG^v73&1nkrZ7K^kczL9=4qcAi$M+eM->Q31bmWx zDagJq_$pjgdv&G($3n3UQfK*jY+(5*%_?8pN{BLXu}`4GH9Bp!m>;g(8TG>_B1gSm zd!;J)k8Zkm7Uy{v`LOS+aA&ON2iXao1CDx2?qS|AxaJ~q^$vWgd%2!|!qNjm(BqgNCqunT|EMVsE z4Pk;X3=#(x2PvQ=&;?WnMg~d-SqM}JR(MDvd}ubeWCCcau7)VguPzT4c;qMsHf!@F zYtvFJffEkb8J!o#Zcj=Nbv#hw^P*ILYkHce)1DNZ$5JkA{IQ>?37Fk>IxufPcb=y$=NwShXDM`jK5k*ZjUoNC~^TKFbLrHY> z+$r;OXN8f$Rb|30Vpz9aO{5+1gsh~G;>Lh|zRRM*doOicel*H68eg*TtsMwsHK_WkzWxF9FG(t}i zO)xAiz$D-(03#qJKpm{}2~Cg!8aG$7v=LZDyx+T0c2t@XRJWDXa56onmMgk&RR(%= z0!`i4>RS^NETQ-f^EU?(8bWWp_&26<3bu)Z!|)Oi5(pB&63`MwNJ*KNSSguMVz!3M zY1J;z1SI_0psEziz)_mP^fhPJFEXwxX1@c zMDdhlrjG#Xv<+FDEui1lnG0H?{0V_5z`;LF(6~zsVVW+DNvH^$aj5Txx!BnY;)fZ` zW20u_x{Sjm283=_uOtuNG~g3=Fm} zf4A6tJ0~$L>^ei#rjbX?!a&tFj3W!CA@jh2D`Hp`hu{MG8`^u$!hUg(uRdf7dhu;G zpa(W21-wGoLYzY2LgYfpAv_4V7wM=7UzAC@!cn!;-TN`|AsMzg1cD}1G@4VVfwSHm z1MRjTAhkyYQ;!qtM)-(rlIDT(42;N>eze&KN*v|_${k;ntal8836ct;hWEe|&~A8< zM@r)AzrU7NXh#7x1PtebZ%?JRpAG}d?SB!3--D;FQ%kO0(iiZenh<1`qR!zvT&^Cn z*_F38;4DeRNu(-7DkLiJhPQyYzH@#B;zLt{I3nHDx@U} zaa#4BAfxMvGX`$GS2i?+wf|59p0-s+!)6Mrsu7oTBVqBLIYOG(Mi@3tMC+`m(m#YL z=&$wB3JmeRq3wYb9tANi`yUx@m5S&q@QDkZ)YUDDO?OLFPA3@+@f+RGsVc5I`-&D2UIS+h< zd6C#Ih)~eIi-71BIR3iOm^KSwL`j&`5-slZX%KT0DOHO6jHWzr8Im;{X>DM5Q>Yy% zbf{z~Rh;h{{z+Vhz(yLdVJ>X8T_<~*J#05haGy#^Tx1={+0b9Z11}>0c1!;U%Z9+D zY7*&cvPK1lUP9U=3L!LI54wFMYPyoV^fU-X{G!)8n%q3NJiI)RJd`{sVFK7`BJLO2 z4H(m`k>XJtq&dXmCX9yTDjFIllXK|l$jwW^$e7fP(kS<_FTRcU83=y~6mrTs$-;Y^ zKSaeJ$m|CVds`M3d(N!8_p9UgV&lwZN2ecE^;1|EZ}vrGinJ;3Qje>mlI?M%l2L!S zVanTnSvaq(;D{{ATGBrqleaxH@~JDt@S`iSZbcQ_b-bE>ZFVMg0`uXHXElc)A|*mJ zmNJHSc>zb&x>2R(jl_~st)w>@LvSn^b5X>+4Q^T=#Vmpb$#3Cj48!FLGX;uFC{yYo zu#aC}zUCnys0*tTN$y_Ev1S{vpzF|w!SK;+@r}B{FW=1KG3S9#4kvl8gkUg)SAYYJ zT4%G+{2hcWx$+wRh~-J({q`}LZ@1`js&-TaW5D~HEQ&c^;_&b_e4s)x&f}&*2vD?o zgcDx;0C@GoX;TqQ0sB9l9Fs5iFJVxTq+N&OKT`w1|5s|r-j7>4(78dD)eup=#-TY{ z>My+-*8d}5{v~S}bl6obq8eP`>GU*KI>;q zb+!&THgbd}Q6_AmeO?cBVtREYOa@R!T|;Xnw0|;b`D^|wDL8|6ACm7UL5CU25~WT!lw=AK#jc$R>q*7|mIWHF2IhC>{vigY2$WGURj#MZTFDKzE=1}^Pin8^k zr0A|_S^ia0l#n_VJ@--{kS8kM4DvEoY#TYDvwu@^1m{fnBny<-m+&)q+c@4d*L>Z? zQ_7ckL&na!&mn`BS|+nroV!gCZ#z1>sPy-u1H2RFW>jcy7jhrPhA#wkFDP{j4nwbi zV2ToDb278T{lBC zA-XnC@xpo&$nHCEO3|K^WlWg>6{VeYJagp8-=tYub^s#Yab{67t7Ke!O#j zSqgJYMwp;&Gu|sFF?WP2Q2Lq82Fk^^IoPMqApbmR^64R|ufCjLKn4Ei`Gx7{`6W}^ zX|n|*ctd{S77^_XwDvujtP7K>4HOpS#^gylge zwM)Nhxkvr8=cnc=!q6?dkEvx`*OZ?C2UX9GeBJV)pXRQLR_x>gKY3k>kxzwg`8pN* z#cqUryf$w1unf4W{&aqL=-IMyyndHu==s3Ri7++QZo|rL-F;Tx%>0H^tvZvr@%cxc z7yp4Zf6kLi*T=2hz`HVlF{{HMxlNY=+zH^UY3S3zxi^6|;yp1tyw~l!o6@nC|j`A_V(`&yqBlg z_GF)*oVEmf@z(u(S7s;|7q4R$UQQd*40PgxIWRaQ-EIp*BX{j?>)wyzms&Pc3#b#x zzSSQ<^$|liEDdG$%jDLf4wEuZJgy5O%9fVepSW&BF7~@+=`J@^25KrlJ!vmpPmgCl zEPIuGVBgT6n)!Ok-~RDpO!wK<-s)LFkDLmTaLn@hWJksZ7vA=Wt0`1nN}{^+F{b#s zWdmU6%ht`$p(!DB6q;a@8L#BRYCIFNQDT2r*%vrM)Zo|gwILy6<)9gX5K-(ZmOX1_ zF=);XpWq>Q1yt*^toLK690Ly6Rc!Njj(!(jn4a0sJkEi{((j$aA`Y z7luXwfsSo&oVgsc=#i?^^R4^M{!EMzzAeSFJ45E)$Agod8H^3=~@OFmesaIEi!0UabI? z0GR-t0HFY-_YU=}(M2kHvkHxrkvoQDx76wAL?ZmNKdBTf0X>syvaVj*<5)^_}??;fs zsPrtt<&>D9GLu;vWZzUj9EF2LA8@Jm=ce;b3{Q}yNuLw-3W1ix8d1~XqcEl#g^I`& zCkvC9DR0Jw(Z(W#57)U$h@{LDBWp6f{B*KPjEs(s5MEMZ0zCma2CS@X9ug;J)9(^z zJVXvW5hq!{1cOQXwxF_Y4GE+c#hf;8EHpkWncd9pZ4x*y&bUbfTiNCR>Eix@L3 zgyGh!>)I-U$}DH_N}86Q+`3L+ZMd}rO=%N_7=XC#2vP|zNZuz8b?E?0Dw9c}7EU6i zMoPxv>?nlY40ai57QNAp;;Zl9r@4k-E0RlgxE$0`%H(T~aAz(=bO7@O&lG(2a(Bz4Od7 zvl4Ek%^+-W9Vt{PH@jkmA$t!pC7kZBSu1ueW$RZ=Xxsxog=Ld?Ah90n9rw!*jE`v`@z%<@`I~f zn$_zaVql|@Y7tAJSq_$Pp7T>1Y1WASw!i|5inmyz5w3O!{m0QDZ%-;z#qbNhO!wn> z+FYyfu+$FPp;=kb&uYJ@G@Oey1EZK9XM<*bh6PTk>hQOFX7@$!_DH^#&y$Hb? z2-DL>9W>fXFK0M(DHkl@h~1!6?Q}3L)izOxvIwSp2PowAQ|YfWi2lv>Vlx~%3=wF9 zlpew*PaG-De9YU%4ip(w@iuEBI%0cLTg@>vTXtacIc0Rtmsi0yBu#ro%4A$9xbau- zOydp!BK_o2Ce^~WrbBuHr4jWi*!g&h?@Q)~4e8gUS`6qntQFMR9Ks_q?7YI;%ZjY(gm-kMiFoc~;G`4llSCj_B9X&r9*H841+(U(DgN7K zSi){d4@czNUT~J3VTnS8QX^Pn;KUhJiss-WH0iT9*_*}F>$6;ZC|(;v>?QSr5sw}R zD7ul+Z(YN`JmyL}(>2|RgdcbH0ziunWMDel1IyqPV@d>6EVt9pws(Uid#~x|3z781 z=Am7p=V>g9<9NZVf?b@7YD1wBn5DLIK*~J5ECtRM#dwF?{9$?$}?(dN3 zBefp?X9kWJmal;`-+ln89#=RPQ5-J9XU29JPa48S-(^p{xS3E{0GPe%@@UrNFzC=4 z{3gb=pfhWj$@ZTa=yfnS2<~;e7+R-(oU8cwNb2j9|M5^JFQ#*Inp+*GyYnS&s>{}! zFcm6r51KJIQN(FxWDx4Jw96S_i^7;hIP*aiOXEMu;7q-&DSyp<#}z$TXGOC-ip#7o zK9%*y%4v{0x@q)=%;K`0oO5JUcdcMC*XP7!yEoW_5!E6fB9XzRa3)jHs{b=%*v4mTL^ca~)YFgSh5Y~`o|m-FpvNt>9PjC}NoJBYA|F!9 zF`Ua#(^16L?NJ2O7u$e$@29Bpe+2@yh|_zB>I>G@xYGumG%#;^Fyq3E8O8UR+ zpb)}^80OiV1(^DPfi9d+z}*KRl~t2#-w2Zdt09&6o}*k<(NEICf(XH={BB?G#; z^2Br$@;X+7RymW0--;k{>du|qg2}YE-tNsN4=?aC?a1BNBEsvu<#L!>w0NU7om#9@$XuOAJKc>DOA%x=W$l-57EB9?-BHE*8LUKy(Jw!FLtcm^Qu*uvdhI@5zVV3(@Rzc{ z;F9X|m&#%!9+jP0vyIjl?1|?Lms3FlTTPCUq)3G!jJjGzD$#3B0qL@RmwsxJI zh2>GuXUi4~V{Z?JEaUGCo4T)Q52s!cVtRYR~lOYwdGH1RNXd%n&ie|KqL z{H8sVUw{ALE`o2p11Ik0)}G_YucTGyYFgmVZJDpj@0tI9w})OE(J$>GXA4ss(?1%~ za@Nrl=iopvg+Ink81!(~V6!rb@MIPQ!$IYP#c2i1;kiOvR#PaqMu zOkFYU*M%W76>lcuLF-JHSh+S>%a?Y?q+A6B7>?8-T-F}uS}f{~L?3yq6tTGY7xuiOXvbDP zDI`fBdQs?>PEMS7ATPh}o2^Sk`Df1?@`roC1(q(%dnKxQ0Razv(VmpN!H}&8p|Erd z_B{V7arQ4se#g} zTr9iH?(2q7XpJ~xYrC}VJpTwx31v`>jR`O}F3_E*g`m7YJYRd~%tnK;e%{^M=kc-l ziM9j6^r@WYMz0!Pv*8>k>8lmZ&5Es4v+?~>E}Xu8FZ(EWw&kbq)q;%V2kzjyRSWEZ zi_aKw$OT?;*|aat71uT zoZqe_(WKEKYz$3Sr$Rt#nF>ifNxqnnXg`^wg2fK?9gShq#}M-J`~CoY+Zq~*^=0hT zcJ-o+mT70__kBEbL+tePeSDfow5yvQb2r@7e|#7y-+1=U^m0#w)7s$kx_tON_EEp{ z=^*^mJ%YF}DjyLv#yY(B_L>>AjDq>lZeZwxHAWy7@)*d#7r@sx8e>>@TW;EtI`2oUiIu8; zIdujBkH+%`TktTkF zpr}jeDAf3dqaC(k!S-)tVB?sT;+=nruem2~4jYS}O^szmNzAOsmr$-}H?mF$Wd<+L+~ir`LeG97%k8Oc1*v$Yhk~@`3i(0~SsL zL)YC3mHAsHRK)k&MjbjdgI_y{n4LRoImFRVSpgC`ZhK%!Cz=viz1Aq12q@9Fxl##y zy27(~WIx8=28qt~Zq_;S(=Wil=BlZHH;EBgmuUG`!cZ81g;Iz(lpH1{d+O=xjz?Df zXfx5G$%Q*(|BhZ$;;ihT%gxK$Ze5z4KZ^lv-1?c!*~}Rcl@Z3Fi)&&3okdpT;)JLq zohLQA$6Gj@=rKEEhjp#MwK}%xc@>xpPjR~LF3mu4)Lh9i!rssLT@4+G$Q;5Y|&*CELGOIS#@dySxQ0Z14{X}++31zsG+2iwcXL@N{ zrz#ie`=ESjfxgHG&bCu3oB%-^k$NB z;UEL|4j&AfJ1h+?ST@uTWsWu&#y2pR&-uc{A=kI%O3~5jcWSbzrlQ%t{KjZQCQKTGXa$Anz5Gn4VVBJj$25@O&o zrf_EC_vi)uxl2cTCJVH?Ub=kB(E()%fN( zLkQy%%rRRRPgzc9JK=F z%FW@ULcFb`wygmAPqT}|oTu3A2=Jfc{Ra%@;}G%9TQn)7Rzk(PS=%h(qk%i-8jpR) z-ltv(8nQG*tC@?0-E{_N(W=2brf|mTB4j?gqEI}hJO+NVFR-}`r5jph_bPUh@fcC+ z?!4XY?Wxng=T*2IuDZ|q%Fy3t*JNX5;*wq7Q)b}OZU%sQSE2&byTDIb)TP}uoY56W}l9h^+&N6NjyrCCOJ>3dL;8zEh^r%)zW74 zyxDDNQqlTFYv}srag;Z|Sb6~F+DT;LI&#Qq z1jS-=h{~?7dJb3HkM-vC2dbfTUSN`&C@CzCF~wnSrW;^A35nq9A@^=MIy=(JR5_~> znORSp3m1?oZ{FKvVZVoV!fyhaW4wYlvL-xcH_@f*Sv+zly^sLCLW;smiGsu9zq zlg=Hs`QTFJGuB{B*j_Kj;nee%JfVmTyeYgWI8c3I#Ev8$I&dgmT@Jt_hvTA~F}Ynx zZ0^bWZX_>K&{UHCU;)PAv`&d=l!YEXtVhX{L$K?|#i^%DbIUwgj&YuxU&_I3+RXt? zy=|UrI>Uf5Tp)3A-D=GMR5^PdDlIFlQLyUhf%a~&RcQ|LtP<)15-)XAh5zPhp2Ri%!cS(>oY zczHV6vDN`$FD#6#07^eb3s>h(<4GZ(zQ-D29KnCTxnS9;S51|yRjIZlHF~&{D(Ks( zQm(F|P>{x^^64s7z`IeWDml5WjOtw~ko;4`IPKWy5bTjDvT+Gt3d3UK@*nlB2@YxT z4>EmG+vX^{mZQ8=G&l=UpI$$ik?|)o%z4Qkm^0HFn5<;}MTHIzY*6`Tj)C+xJqUZm zZ-Qa2m3I8YHC;O>Y+yq3a#0zBlgpHi-OElG6jc(y!$J0pZzWNjoU+xUv~s03WR0&8 zsD_9D%NP8dqtF*YLQBB5-8I8F$^NXBRR4D~VHG+}0`zW{js-ZMt$CNn zcQ{$Iu+KN;;a#+7zs$WT$d`QD1%kd@j_-;1zO(D}s8_DjMmuK4b^mFLB(1ro%z12I zs|4oSVi%HzP_8I5ZK~b`jsX4NH9yt zKsW0g7P<(fc?D5lnRi8Et7nSPfRJ2pQ4^~Zbp=jk`d|%Eof%FdA2Bro%r=oton)DC zTaT)OV=u8(72bhFM%r|2oU6w-Yz?467@6)Lp2mFsopW1SctCEIg?UZ(&Ux_{*@_OKXbH zp9|<>thuwF7V@itfc*ALEXLVA3=EdcuWS9mGzBu9Pzo-yZW^p@wwHtHpBLsF6>*z?T&hpr|ixIwGzzI z=kUZ^$Y%6G>3XYQgo*QXcS2gFZ>$G8yuLJ!+nxO+?bX_CzWx%n*L+PxCw+UuOSwrt z&GD?-35K($B8~TL+)Eyqe!6|^(xT{t?~3=gWY2>Vug~OO67Rq4!en|lgabca+_tlq zuNHZ6$lB?ixV!m3EbX%;_tA|LYBk-ytw_kz1%tjuCsRQAl1fOfc;)yGct28kwsURo z-l5SqS_wNu&_flw<6whI1Cw67v?D}MPJCyYkMtna)yjR2BcN00)V5-}m{bK%?Pxu& z$^_M1f_K>)U1gc_(Ex4g4R*KEkvdq{X;p_7SuL2@-7{%QkF^0j?FigMc*gC+wroJD zLeYq+YZxi8`R5W26R4c&im&ut*$(NmYlgaQpEy*YIWdE&4U;14RG3t79P`Q8VFK>K zydO7{bv&*m{1x_-9H{FbhM8`{lV!-mN0e*^`9`%z8H&rgB#8!4oP1%;A8x zM@uwGKOdui+!-yGN0|;umUGChWtk6Y+=b;W&p1FM+uwGG*Gsr5aZXc4n8WWE$>(1u zr-Aef2%6CDB1tX?iHOhhqstN>be3Dw6;(LsG;Yz3;@cVU8>DGzrj3WBX5Su}`?wdo zA#AZqn91wD9_>|+Wvd0&$U`QqF5fxI_} zJuyk{6jN5R)73pDk;&bX02CPZ%rxZ1#H>u5?FOCiMk+)iwTNWSC7bj?S*XQu8Px@t zkG)3NuKx8~f{wJO@A34Z6^2YW*Wr82wrSo^pKlMwB11o#6Lz`rNz1EYV)OcR%v6jY z@IQGwe1A_LNBe^j1nUNR)8%PfK2hI?;qheTM?v?Ev&jMcOep6rDba~qB-PZF*2o8ljwnP?%m5}=YuH-J#gMo@XazHpGM+ia2 zL-FOa6iC9sN4H`>cb3-Y%#qIax!7(f3lE*1Yh@@4-QiG+0}A|IQPs4$x$Yd9vj+gC zxZ5}p3UM(-><7rDi#UbgxHNBH9G$5GLG=8uo0IbTygn##=S4#3Muy)9>My$2z@y|p z@O0d47hGKP8`lJfvKi}?2D0(c%)&)WFb%1+nG8#}aB#VAPb3n}0HfS#$um z2HOSmfVSblrJdR)IjzHMr^`MviaqUZ34PDUO!HqVraKEp~Ls@4a)yL}@TDy;1{#$T4bUf|> z`XIzZU^EJe`WJNnv^{i#U~DMH*Kb3HtTn?v{}MYUwEZttiib_TgbXas;;M-Y}b&0JS`0y=CslSGBhhV0@$zU|`xXFwP$wTu2D7=Esg z127YQnpu}?>}vm5j@!5?XCq95y%X)}VeVE?!RqGfcIl}|$L0qYPrUKD$)nIB^)28TVUcom~L&3m6Y+{N^GdAYiG+AQS_?ev@A1C_d)myI>GS_Dyp`5ll zO{RP8ts`YV#OXnGq}E$f7xV|mD`-Fsk2;%C6parAH{0of4+Z;|kte5b3yH;V^@(eu zQ=m@e45+BW#??pQVD7Tod@G_Xo4au2Dh*+ZtP_g+EW?&PKRk7uRr1zsXFH0EeoV_# zFsbh=BV)D2feW8T|F%vR6h_uwJRAE&jZ0ZGR_tsVuTDMKLI7% zP%_Jn1Mmo(XR1lMRtr323brFT$&b+#JEIXYe{hzoi;Bzg?V=~~fvus8sw+IMR2{MG zt~go5BEB16U+%dB=ZDcA&(@Q_Ej(qh5P(6<5s|>T7NxN0*X#6W9qew@ZSYGynKP#F zu~?tnsaelsROds1iM=5yU@=<9_g4(;bh&Pvs}a8q5X-`5EOSl@`jY=X!^YdAuQv?p zCOP_sz&NI&k(1;@DP>}}Ay3LwL-2fjB4Us!<#>1Ko2eh)fw2v74DeYvg!H;Z^uhEi z^Ea{aFTazr2z{R*s8{IlEpjgb4?ACvQ8@rdr@SBi18hT%yHklz(Tw)#RM9BB#eJvZ}E8ZOs$ zUN;IeJPYid_fbRGS|dZ%6kt<%gyo=R|7*=kXuHWPZvh ze!%}s4}#YHRgjnTkO2b%Lj08;uaDy!+1XjW9;KsIbnR9c(0p_a@)Q*yk_~dQDrY1P+36_Ul~UE| zlPz|Zqzm#Cmnq_um7Q#*gGF&)XQe8QYca(-dW%Or2DSw|aF`$sNU+dTfIZ37QGt+u zlTLZllnpgg=9x?W!-tZAx}pN!isDNh9aECp)nFvXOqv@(zYI{3l}n^yxvq)?47dFeaMyn~<&+sGAW& zkZ5V5`78-GQkG=kicgHIf~lv?MHt0nq8X0%O0nQy?%vu!(MJgW(1C-l$y+xF^(A}uB>Z-fBs*`pdxU5+DOtuOD2G-4n>VIzjrV#WmM@qbIy+aUDl zpwJYT zn}svqoWbgSL9!oo)DkTFXziU}xcqrFrTfsf34qbzsb-~uYj>TVo&Q5()kwW+N1Dr2 zPUTYlS>{f2BG~Q6JTO;;*vkeF$2%k$KhXbu{~qEcT=X4Ht^Y)AcyYLPJiq+5@e)=q zw`l%F^Y)dpGGXc!+BA3;aE7$oCF_Qc{MnhFLGz@mQ&5q1z6~-q z{dPBV!`q}Cca2Dou{fq9z(p}Yz;4*JOYz*>U1KdkqM~yF)I-I-53K$0yU~46;4V+n z%3HE{U2mmnrciFG#CJ0XDhdKQ+^nJ>Ir)uA1KB!l6>LYpiw))wD9G{*tW$@1wL>^? z1b5up*_9nle&J0o5T0VD*;a|qcCn5_j|%iISnfu;6or7`oN{#G8#{B83azL#qk|XK z2~JavSl!X-cA!lk(vc&KAkUq+6_}gb>+6l5(QX)%;0hwoKYAu(8tUIp@!(_CmvH<} zSMK(|ZTYWW$bT~@BvMz|<%=1`U*I%2FYhmZV86(I&(ojQ?M#rh3VH#KodrLIGF;;{ z5+>C-&==J#x!!{Y#E7Y(j>zyoT;uappksK&>w%oXd2GC4{(RDXFXv-a$mR~JnGhhP zA5wN1{r-AuY=V^1=!gaY9t$Bxwv4%?-mZR3J4Wt!A|R#1gKazIz*P=G$0 ztAD+2czM4!& zr$f?SJQiS?2v;Ksl^DVYd)HPOi-0?QSBCMR@diM*rRf^vbVqjSY-R;_n*yg#{9%~* z`?$l~cx!2{TO66IDTcj~{ef$G-=FZKzY&bR*Q9W^FW9c+m*&wcwo6;s&eqw~)>&W0 z!`{?M_qC)|CXLzlF(8RvC*L8)H>(;MD5|2r7bP6SDE$Gd<0VA98OjsVx8a78i;@JQ zxGds$+`2b;Y0ROQPOT{3GHIBTJ|epr}DkZBA@%CBR0owhs5v z3NcNgaUd(1@lJeFF~tDPY%;JYy$_s}1pZT$7xA7Eg!lB(n$v+b819^gRn5#fHcV}a z(f7Li4cs@t)FvZyW`+}^>E~UuN+OP31QMY#i zjo!z0ER+WCxV_?roF2{s_HAc)cC=l`c1>d|`hcBx0{&nY8Rwc~+2+=1S9n^DY+a>>1{ehG=f>+7#Pm-Gz4!MZQ^?>8Qy6cyK|BfGftw6uVD_T{O z?ccTL&q@ERNUuDALim1-*F{^tY!Y6|&;P~n zPb(#}|5mU5RP@in_BzimD|P(N_8(>LPdR_?@c))`&+y;(`+rLKvzzd@gc-7568`Ef z{Qs{#oZu(xzuVjYjF3MY+<(tl^E=z$?e0HS{&U~=tM@cxa^{8RlupN#%nirWh&`X$DG)8MC+pU+7vNQ3`O Rc@!WNAlaAM!nj`f{vS0D+0Os~ literal 0 HcmV?d00001 diff --git a/yxt-wms-biz/docs/sheji/功能权限设计.docx b/yxt-wms-biz/docs/sheji/功能权限设计.docx new file mode 100644 index 0000000000000000000000000000000000000000..ebb4f10ce9dc93bd23accd2ac058bedf477b7dd2 GIT binary patch literal 15032 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