From 1655d57057506b6f4c3e937d9eb3cfc018b1a770 Mon Sep 17 00:00:00 2001 From: hjx <577364224@qq.com> Date: Mon, 19 Jan 2026 18:55:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E6=88=90wms=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mhd_wms/pom.xml | 170 +++ .../java/com/mhd/wms/MhdWmsApplication.java | 21 + .../CommonSettingsApplicationService.java | 87 ++ ...ontainerUsageRecordApplicationService.java | 74 ++ .../DeliveTaskApplicationService.java | 112 ++ .../DifferentManageApplicationService.java | 87 ++ .../HandoverTaskOrderApplicationService.java | 151 +++ .../InMaterialDetailApplicationService.java | 73 ++ ...lDetailSerialNumberApplicationService.java | 74 ++ .../InOrderAbnormalApplicationService.java | 78 ++ ...oryAdjustmentRecordApplicationService.java | 102 ++ ...ntoryAllocationRuleApplicationService.java | 244 ++++ ...llocationRuleDetailApplicationService.java | 74 ++ ...ntoryStandingDetailApplicationService.java | 62 + ...ntoryStandingReportApplicationService.java | 83 ++ ...ventoryTurnoverRuleApplicationService.java | 119 ++ ...yTurnoverRuleDetailApplicationService.java | 74 ++ ...ntoryWarningAnalyzeApplicationService.java | 199 ++++ ...InvestigationManageApplicationService.java | 237 ++++ ...igetionManageDetailApplicationService.java | 74 ++ .../MaterialBarCodeApplicationService.java | 74 ++ .../MaterialBaseInfoApplicationService.java | 135 +++ .../MaterialCommonApplicationService.java | 74 ++ .../MaterialGoodsRuleApplicationService.java | 81 ++ .../MaterialInventoryApplicationService.java | 126 ++ ...ialInventoryWarningApplicationService.java | 74 ++ .../MaterialMoreDetailApplicationService.java | 73 ++ ...ialWarehouseControlApplicationService.java | 74 ++ .../MobilizeManageApplicationService.java | 85 ++ ...obilizeManageDetailApplicationService.java | 74 ++ ...oticeMaterialDetailApplicationService.java | 74 ++ .../NoticeOrderApplicationService.java | 222 ++++ ...lDetailSerialNumberApplicationService.java | 74 ++ .../OutOrderAbnormalApplicationService.java | 74 ++ .../OverStockApplicationService.java | 170 +++ .../PickingOrderApplicationService.java | 250 ++++ .../PutawayRuleApplicationService.java | 260 +++++ .../PutawayRuleDetailApplicationService.java | 74 ++ .../qcRule/QcRuleApplicationService.java | 141 +++ .../QcRuleDetailApplicationService.java | 74 ++ .../QualityInspectionApplicationService.java | 78 ++ ...ceiptMaterialDetailApplicationService.java | 73 ++ ...ReplenishmentNoticeApplicationService.java | 78 ++ .../SerialNumberApplicationService.java | 93 ++ ...ShelfMaterialDetailApplicationService.java | 74 ++ .../ShiftManageApplicationService.java | 436 +++++++ ...ShiftMaterialDetailApplicationService.java | 95 ++ ...DistributionDetailsApplicationService.java | 165 +++ .../SowingWallApplicationService.java | 86 ++ .../StatementStatisticsService.java | 101 ++ .../StockInOrderApplicationService.java | 228 ++++ .../StockInTaskOrderApplicationService.java | 78 ++ .../StockOutOrderApplicationService.java | 524 +++++++++ .../StockOutTaskOrderApplicationService.java | 183 +++ .../StockReceiptOrderApplicationService.java | 743 ++++++++++++ .../StockShelfOrderApplicationService.java | 381 ++++++ ...ceiptMaterialDetailApplicationService.java | 74 ++ ...ShelfMaterialDetailApplicationService.java | 74 ++ .../UserCommonSettingsApplicationService.java | 129 +++ .../WaveMaterialDetailApplicationService.java | 74 ++ .../WaveOrderApplicationService.java | 121 ++ .../waveRule/WaveRuleApplicationService.java | 80 ++ .../commonSettings/entity/CommonSettings.java | 59 + .../facade/ICommonSettingsService.java | 43 + .../mapper/CommonSettingsMapper.java | 23 + .../persistence/CommonSettingsImpl.java | 81 ++ .../repository/po/CommonSettingsPO.java | 62 + .../repository/todo/CommonSettingsDO.java | 62 + .../service/CommonSettingsDomainService.java | 65 ++ .../entity/ContainerUsageRecord.java | 89 ++ .../facade/IContainerUsageRecordService.java | 43 + .../mapper/ContainerUsageRecordMapper.java | 23 + .../persistence/ContainerUsageRecordImpl.java | 81 ++ .../repository/po/ContainerUsageRecordPO.java | 89 ++ .../todo/ContainerUsageRecordDO.java | 91 ++ .../ContainerUsageRecordDomainService.java | 65 ++ .../domain/deliveTask/entity/DeliveTask.java | 112 ++ .../factorys/DeliveTaskServiceFactory.java | 57 + .../repository/facade/IDeliveTaskService.java | 59 + .../facade/IDeliveTaskTypeService.java | 21 + .../repository/mapper/DeliveTaskMapper.java | 49 + .../persistence/DeliveTaskImpl.java | 174 +++ .../repository/po/DeliveTaskPO.java | 118 ++ .../repository/po/DeliveTaskSumPO.java | 37 + .../repository/todo/DeliveTaskDO.java | 118 ++ .../service/DeliveTaskDomainService.java | 117 ++ .../entity/DifferentManage.java | 117 ++ .../facade/IDifferentManageService.java | 55 + .../mapper/DifferentManageMapper.java | 23 + .../persistence/DifferentManageImpl.java | 210 ++++ .../repository/po/DifferentManagePO.java | 117 ++ .../repository/todo/DifferentManageDO.java | 120 ++ .../service/DifferentManageDomainService.java | 74 ++ .../entity/HandoverTaskOrder.java | 129 +++ .../facade/IHandoverTaskOrderService.java | 43 + .../mapper/HandoverTaskOrderMapper.java | 23 + .../persistence/HandoverTaskOrderImpl.java | 81 ++ .../repository/po/HandoverTaskOrderPO.java | 129 +++ .../repository/todo/HandoverTaskOrderDO.java | 134 +++ .../HandoverTaskOrderDomainService.java | 130 +++ .../entity/InMaterialDetail.java | 254 ++++ .../facade/IInMaterialDetailService.java | 65 ++ .../mapper/InMaterialDetailMapper.java | 29 + .../persistence/InMaterialDetailImpl.java | 242 ++++ .../repository/po/InMaterialDetailPO.java | 266 +++++ .../todo/InMaterialDetailBaseDO.java | 42 + .../repository/todo/InMaterialDetailDO.java | 261 +++++ .../InMaterialDetailDomainService.java | 65 ++ .../entity/InMaterialDetailSerialNumber.java | 55 + .../IInMaterialDetailSerialNumberService.java | 43 + .../InMaterialDetailSerialNumberMapper.java | 23 + .../InMaterialDetailSerialNumberImpl.java | 81 ++ .../po/InMaterialDetailSerialNumberPO.java | 55 + .../todo/InMaterialDetailSerialNumberDO.java | 62 + ...terialDetailSerialNumberDomainService.java | 64 + .../entity/InOrderAbnormal.java | 89 ++ .../facade/IInOrderAbnormalService.java | 54 + .../mapper/InOrderAbnormalMapper.java | 23 + .../persistence/InOrderAbnormalImpl.java | 264 +++++ .../repository/po/InOrderAbnormalPO.java | 96 ++ .../todo/InOrderAbnormalBaseDO.java | 46 + .../repository/todo/InOrderAbnormalDO.java | 91 ++ .../service/InOrderAbnormalDomainService.java | 103 ++ .../entity/InventoryAdjustmentRecord.java | 152 +++ .../IInventoryAdjustmentRecordService.java | 43 + .../InventoryAdjustmentRecordMapper.java | 23 + .../InventoryAdjustmentRecordImpl.java | 81 ++ .../po/InventoryAdjustmentRecordPO.java | 152 +++ .../todo/InventoryAdjustmentRecordDO.java | 166 +++ ...nventoryAdjustmentRecordDomainService.java | 348 ++++++ .../entity/InventoryAllocationRule.java | 55 + .../IInventoryAllocationRuleService.java | 45 + .../mapper/InventoryAllocationRuleMapper.java | 23 + .../InventoryAllocationRuleImpl.java | 90 ++ .../po/InventoryAllocationRulePO.java | 61 + .../todo/InventoryAllocationRuleDO.java | 62 + .../InventoryAllocationRuleDomainService.java | 68 ++ .../entity/InventoryAllocationRuleDetail.java | 79 ++ ...IInventoryAllocationRuleDetailService.java | 51 + .../InventoryAllocationRuleDetailMapper.java | 30 + .../InventoryAllocationRuleDetailImpl.java | 107 ++ .../po/InventoryAllocationRuleDetailPO.java | 79 ++ .../todo/InventoryAllocationRuleDetailDO.java | 82 ++ ...toryAllocationRuleDetailDomainService.java | 81 ++ .../entity/InventoryStandingDetail.java | 89 ++ .../IInventoryStandingDetailService.java | 54 + .../mapper/InventoryStandingDetailMapper.java | 38 + .../InventoryStandingDetailImpl.java | 109 ++ .../po/InventoryStandingDetailPO.java | 89 ++ .../todo/InventoryStandingDetailDO.java | 91 ++ .../InventoryStandingDetailDomainService.java | 68 ++ .../entity/InventoryStandingReport.java | 85 ++ .../IInventoryStandingReportService.java | 45 + .../mapper/InventoryStandingReportMapper.java | 29 + .../InventoryStandingReportImpl.java | 147 +++ .../po/InventoryStandingDetailReportPO.java | 37 + .../po/InventoryStandingReportPO.java | 80 ++ .../todo/InventoryStandingReportDO.java | 87 ++ .../InventoryStandingReportDomainService.java | 69 ++ .../entity/InventoryTurnoverRule.java | 55 + .../facade/IInventoryTurnoverRuleService.java | 45 + .../mapper/InventoryTurnoverRuleMapper.java | 23 + .../InventoryTurnoverRuleImpl.java | 89 ++ .../po/InventoryTurnoverRulePO.java | 61 + .../todo/InventoryTurnoverRuleDO.java | 62 + .../InventoryTurnoverRuleDomainService.java | 68 ++ .../entity/InventoryTurnoverRuleDetail.java | 59 + .../IInventoryTurnoverRuleDetailService.java | 51 + .../InventoryTurnoverRuleDetailMapper.java | 28 + .../InventoryTurnoverRuleDetailImpl.java | 109 ++ .../po/InventoryTurnoverRuleDetailPO.java | 59 + .../todo/InventoryTurnoverRuleDetailDO.java | 62 + ...entoryTurnoverRuleDetailDomainService.java | 81 ++ .../entity/InventoryWarningAnalyze.java | 160 +++ .../IInventoryWarningAnalyzeService.java | 42 + .../mapper/InventoryWarningAnalyzeMapper.java | 22 + .../InventoryWarningAnalyzeImpl.java | 80 ++ .../po/InventoryWarningAnalyzePO.java | 162 +++ .../todo/InventoryWarningAnalyzeDO.java | 162 +++ .../InventoryWarningAnalyzeDomainService.java | 78 ++ .../entity/InvestigationManage.java | 145 +++ .../facade/IInvestigationManageService.java | 69 ++ .../mapper/InvestigationManageMapper.java | 23 + .../persistence/InvestigationManageImpl.java | 452 ++++++++ .../repository/po/InvestigationManagePO.java | 158 +++ .../po/InvestigetionMaterialPO.java | 71 ++ .../repository/po/InvestigetionStoragePO.java | 83 ++ .../todo/InvestigationManageDO.java | 176 +++ .../todo/InvestigetionMaterialDO.java | 67 ++ .../todo/InvestigetionStorageDO.java | 79 ++ .../InvestigationManageDomainService.java | 341 ++++++ .../entity/InvestigetionManageDetail.java | 210 ++++ .../IInvestigetionManageDetailService.java | 43 + .../InvestigetionManageDetailMapper.java | 32 + .../InvestigetionManageDetailImpl.java | 81 ++ .../po/InvestigetionManageDetailPO.java | 208 ++++ .../todo/InvestigetionManageDetailDO.java | 215 ++++ ...nvestigetionManageDetailDomainService.java | 65 ++ .../entity/MaterialBarCode.java | 75 ++ .../facade/IMaterialBarCodeService.java | 58 + .../mapper/MaterialBarCodeMapper.java | 23 + .../persistence/MaterialBarCodeImpl.java | 163 +++ .../repository/po/MaterialBarCodePO.java | 75 ++ .../repository/todo/MaterialBarCodeDO.java | 78 ++ .../service/MaterialBarCodeDomainService.java | 75 ++ .../entity/MaterialBaseInfo.java | 172 +++ .../facade/IMaterialBaseInfoService.java | 45 + .../mapper/MaterialBaseInfoMapper.java | 24 + .../persistence/MaterialBaseInfoImpl.java | 94 ++ .../repository/po/MaterialBaseInfoPO.java | 192 +++ .../repository/po/MaterialBasePO.java | 65 ++ .../repository/todo/MaterialBaseDO.java | 73 ++ .../repository/todo/MaterialBaseInfoDO.java | 190 +++ .../MaterialBaseInfoDomainService.java | 177 +++ .../materialCommon/entity/MaterialCommon.java | 101 ++ .../facade/IMaterialCommonService.java | 53 + .../mapper/MaterialCommonMapper.java | 23 + .../persistence/MaterialCommonImpl.java | 140 +++ .../repository/po/MaterialCommonPO.java | 101 ++ .../repository/todo/MaterialCommonDO.java | 103 ++ .../service/MaterialCommonDomainService.java | 120 ++ .../entity/MaterialGoodsRule.java | 131 +++ .../facade/IMaterialGoodsRuleService.java | 53 + .../mapper/MaterialGoodsRuleMapper.java | 23 + .../persistence/MaterialGoodsRuleImpl.java | 132 +++ .../repository/po/MaterialGoodsRulePO.java | 131 +++ .../repository/todo/MaterialGoodsRuleDO.java | 134 +++ .../MaterialGoodsRuleDomainService.java | 163 +++ .../entity/MaterialInventory.java | 133 +++ .../facade/IMaterialInventoryService.java | 101 ++ .../mapper/MaterialInventoryMapper.java | 89 ++ .../persistence/MaterialInventoryImpl.java | 267 +++++ .../repository/po/MaterialInventoryPO.java | 130 +++ .../po/MaterialInventoryQueryListPO.java | 150 +++ .../repository/todo/MaterialInventoryDO.java | 147 +++ .../todo/MaterialInventoryParentDO.java | 23 + .../todo/MaterialInventoryQueryListDO.java | 171 +++ .../MaterialInventoryDomainService.java | 109 ++ .../entity/MaterialInventoryWarning.java | 117 ++ .../IMaterialInventoryWarningService.java | 60 + .../MaterialInventoryWarningMapper.java | 24 + .../MaterialInventoryWarningImpl.java | 164 +++ .../po/MaterialInventoryWarningPO.java | 120 ++ .../todo/MaterialInventoryWarningDO.java | 119 ++ ...MaterialInventoryWarningDomainService.java | 180 +++ .../entity/MaterialMoreDetail.java | 79 ++ .../facade/IMaterialMoreDetailService.java | 43 + .../mapper/MaterialMoreDetailMapper.java | 23 + .../persistence/IMaterialMoreDetailImpl.java | 81 ++ .../repository/po/MaterialMoreDetailPO.java | 79 ++ .../repository/todo/MaterialMoreDetailDO.java | 86 ++ .../MaterialMoreDetailDomainService.java | 65 ++ .../entity/MaterialWarehouseControl.java | 97 ++ .../IMaterialWarehouseControlService.java | 53 + .../MaterialWarehouseControlMapper.java | 23 + .../MaterialWarehouseControlImpl.java | 140 +++ .../po/MaterialWarehouseControlPO.java | 97 ++ .../todo/MaterialWarehouseControlDO.java | 99 ++ ...MaterialWarehouseControlDomainService.java | 81 ++ .../mobilizeManage/entity/MobilizeManage.java | 142 +++ .../facade/IMobilizeManageService.java | 43 + .../mapper/MobilizeManageMapper.java | 28 + .../persistence/MobilizeManageImpl.java | 82 ++ .../repository/po/MobilizeManagePO.java | 148 +++ .../repository/todo/MobilizeManageDO.java | 155 +++ .../service/MobilizeManageDomainService.java | 367 ++++++ .../entity/MobilizeManageDetail.java | 169 +++ .../facade/IMobilizeManageDetailService.java | 43 + .../mapper/MobilizeManageDetailMapper.java | 28 + .../persistence/MobilizeManageDetailImpl.java | 130 +++ .../repository/po/MobilizeManageDetailPO.java | 177 +++ .../todo/MobilizeManageDetailDO.java | 178 +++ .../MobilizeManageDetailDomainService.java | 65 ++ .../entity/NoticeMaterialDetail.java | 144 +++ .../facade/INoticeMaterialDetailService.java | 48 + .../mapper/NoticeMaterialDetailMapper.java | 23 + .../persistence/NoticeMaterialDetailImpl.java | 189 +++ .../repository/po/NoticeMaterialDetailPO.java | 144 +++ .../todo/NoticeMaterialDetailDO.java | 147 +++ .../NoticeMaterialDetailDomainService.java | 65 ++ .../noticeOrder/entity/NoticeOrder.java | 137 +++ .../facade/INoticeOrderService.java | 43 + .../repository/mapper/NoticeOrderMapper.java | 23 + .../persistence/NoticeImplOrder.java | 81 ++ .../repository/po/NoticeOrderPO.java | 137 +++ .../repository/todo/NoticeOrderDO.java | 143 +++ .../service/NoticeOrderDomainService.java | 231 ++++ .../entity/OutMaterialDetail.java | 225 ++++ .../facade/IOutMaterialDetailService.java | 115 ++ .../mapper/OutMaterialDetailMapper.java | 56 + .../persistence/OutMaterialDetailImpl.java | 520 +++++++++ .../repository/po/OutMaterialCheckPO.java | 42 + .../repository/po/OutMaterialDetailPO.java | 233 ++++ .../todo/OutMaterialDetailBaseDO.java | 34 + .../repository/todo/OutMaterialDetailDO.java | 241 ++++ .../OutMaterialDetailDomainService.java | 64 + .../entity/OutMaterialDetailSerialNumber.java | 59 + ...IOutMaterialDetailSerialNumberService.java | 52 + .../OutMaterialDetailSerialNumberMapper.java | 23 + .../OutMaterialDetailSerialNumberImpl.java | 99 ++ .../po/OutMaterialDetailSerialNumberPO.java | 59 + .../todo/OutMaterialDetailSerialNumberDO.java | 62 + ...terialDetailSerialNumberDomainService.java | 65 ++ .../entity/OutOrderAbnormal.java | 85 ++ .../facade/IOutOrderAbnormalService.java | 54 + .../mapper/OutOrderAbnormalMapper.java | 23 + .../persistence/OutOrderAbnormalImpl.java | 211 ++++ .../repository/po/OutOrderAbnormalPO.java | 117 ++ .../todo/OutOrderAbnormalBaseDO.java | 42 + .../repository/todo/OutOrderAbnormalDO.java | 119 ++ .../OutOrderAbnormalDomainService.java | 65 ++ .../domain/overStock/entity/OverStock.java | 89 ++ .../repository/facade/IOverStockService.java | 73 ++ .../repository/mapper/OverStockMapper.java | 23 + .../repository/persistence/OverStockImpl.java | 453 ++++++++ .../po/OverStockInOrderOutOrderDetailPO.java | 102 ++ .../po/OverStockInOrderOutOrderListPO.java | 23 + .../overStock/repository/po/OverStockPO.java | 89 ++ .../po/QueryOrderOverStockDetailPO.java | 30 + .../repository/po/QueryOrderOverStockPO.java | 96 ++ .../repository/po/ReceiptOverStockPO.java | 103 ++ .../repository/todo/ExecuteOverStockDO.java | 24 + .../repository/todo/OverStockDO.java | 91 ++ .../todo/QueryOrderOverStockDO.java | 140 +++ .../repository/todo/ReceiptOverStockDO.java | 108 ++ .../service/OverStockDomainService.java | 857 ++++++++++++++ .../entity/PickingMaterialDetail.java | 191 +++ .../facade/IPickingMaterialDetailService.java | 75 ++ .../mapper/PickingMaterialDetailMapper.java | 33 + .../PickingMaterialDetailImpl.java | 371 ++++++ .../po/PickingMaterialDetailPO.java | 198 ++++ .../todo/PickingMaterialDetailDO.java | 208 ++++ .../todo/PickingMaterialDetailDOByUpdate.java | 37 + .../PickingMaterialDetailDomainService.java | 65 ++ .../pickingOrder/entity/PickingOrder.java | 122 ++ .../facade/IPickingOrderService.java | 80 ++ .../repository/mapper/PickingOrderMapper.java | 57 + .../persistence/PickingOrderImpl.java | 179 +++ .../repository/po/AllocationSowingWallPO.java | 31 + .../repository/po/PickingOrderPO.java | 127 ++ .../repository/todo/PickingOrderDO.java | 171 +++ .../service/PickingOrderDomainService.java | 752 ++++++++++++ .../pushSyncBms/PushSyncBmsDomainService.java | 156 +++ .../putawayRule/entity/PutawayRule.java | 55 + .../facade/IPutawayRuleService.java | 45 + .../repository/mapper/PutawayRuleMapper.java | 23 + .../persistence/PutawayRuleImpl.java | 110 ++ .../repository/po/PutawayRulePO.java | 62 + .../repository/todo/PutawayRuleDO.java | 55 + .../service/PutawayRuleDomainService.java | 69 ++ .../entity/PutawayRuleDetail.java | 91 ++ .../facade/IPutawayRuleDetailService.java | 49 + .../mapper/PutawayRuleDetailMapper.java | 24 + .../persistence/PutawayRuleDetailImpl.java | 113 ++ .../repository/po/PutawayRuleDetailPO.java | 91 ++ .../repository/todo/PutawayRuleDetailDO.java | 94 ++ .../PutawayRuleDetailDomainService.java | 81 ++ .../mhd/wms/domain/qcRule/entity/QcRule.java | 55 + .../repository/facade/IQcRuleService.java | 45 + .../repository/mapper/QcRuleMapper.java | 23 + .../repository/persistence/QcRuleImpl.java | 89 ++ .../domain/qcRule/repository/po/QcRulePO.java | 58 + .../qcRule/repository/todo/QcRuleDO.java | 62 + .../qcRule/service/QcRuleDomainService.java | 68 ++ .../qcRuleDetail/entity/QcRuleDetail.java | 65 ++ .../facade/IQcRuleDetailService.java | 51 + .../repository/mapper/QcRuleDetailMapper.java | 30 + .../persistence/QcRuleDetailImpl.java | 107 ++ .../repository/po/QcRuleDetailPO.java | 65 ++ .../repository/todo/QcRuleDetailDO.java | 67 ++ .../service/QcRuleDetailDomainService.java | 80 ++ .../entity/QualityInspection.java | 137 +++ .../facade/IQualityInspectionService.java | 48 + .../mapper/QualityInspectionMapper.java | 23 + .../persistence/QualityInspectionImpl.java | 123 ++ .../repository/po/QualityInspectionPO.java | 201 ++++ .../repository/todo/QualityInspectionDO.java | 204 ++++ .../QualityInspectionDomainService.java | 65 ++ .../entity/ReceiptMaterialDetail.java | 218 ++++ .../facade/IReceiptMaterialDetailService.java | 76 ++ .../mapper/ReceiptMaterialDetailMapper.java | 23 + .../ReceiptMaterialDetailImpl.java | 429 +++++++ .../po/ReceiptMaterialDetailPO.java | 229 ++++ .../todo/ReceiptMaterialDetailDO.java | 237 ++++ .../ReceiptMaterialDetailDomainService.java | 72 ++ .../entity/ReplenishmentNotice.java | 85 ++ .../facade/IReplenishmentNoticeService.java | 43 + .../mapper/ReplenishmentNoticeMapper.java | 23 + .../persistence/ReplenishmentNoticeImpl.java | 81 ++ .../repository/po/ReplenishmentNoticePO.java | 85 ++ .../todo/ReplenishmentNoticeDO.java | 87 ++ .../ReplenishmentNoticeDomainService.java | 81 ++ .../serialNumber/entity/SerialNumber.java | 133 +++ .../facade/ISerialNumberService.java | 43 + .../repository/mapper/SerialNumberMapper.java | 23 + .../persistence/SerialNumberImpl.java | 81 ++ .../repository/po/SerialNumberPO.java | 132 +++ .../repository/todo/SerialNumberDO.java | 137 +++ .../service/SerialNumberDomainService.java | 65 ++ .../entity/ShelfMaterialDetail.java | 253 ++++ .../facade/IShelfMaterialDetailService.java | 58 + .../mapper/ShelfMaterialDetailMapper.java | 23 + .../persistence/ShelfMaterialDetailImpl.java | 221 ++++ .../repository/po/ShelfMaterialDetailPO.java | 260 +++++ .../todo/ShelfMaterialDetailDO.java | 266 +++++ .../ShelfMaterialDetailDomainService.java | 72 ++ .../shiftManage/entity/ShiftManage.java | 153 +++ .../facade/IShiftManageService.java | 61 + .../repository/mapper/ShiftManageMapper.java | 33 + .../persistence/ShiftManageImpl.java | 362 ++++++ .../repository/po/ShiftManagePO.java | 145 +++ .../repository/todo/ContainerShiftDO.java | 96 ++ .../repository/todo/ShiftManageDO.java | 159 +++ .../service/ShiftManageDomainService.java | 543 +++++++++ .../entity/ShiftMaterialDetail.java | 255 ++++ .../facade/IShiftMaterialDetailService.java | 86 ++ .../mapper/ShiftMaterialDetailMapper.java | 60 + .../persistence/ShiftMaterialDetailImpl.java | 409 +++++++ .../repository/po/ShiftMaterialDetailPO.java | 254 ++++ .../po/ShiftMoveMaterialQuantityPO.java | 79 ++ .../todo/ShiftMaterialDetailDO.java | 256 ++++ .../ShiftMaterialDetailDomainService.java | 90 ++ .../entity/SowingDistributionDetails.java | 163 +++ .../ISowingDistributionDetailsService.java | 83 ++ .../SowingDistributionDetailsMapper.java | 23 + .../SowingDistributionDetailsImpl.java | 359 ++++++ .../po/SowingDistributionDetailsPO.java | 167 +++ .../todo/SowingDistributionDetailsDO.java | 161 +++ ...owingDistributionDetailsDomainService.java | 110 ++ .../domain/sowingWall/entity/SowingWall.java | 67 ++ .../repository/facade/ISowingWallService.java | 43 + .../repository/mapper/SowingWallMapper.java | 23 + .../persistence/SowingWallImpl.java | 104 ++ .../repository/po/SowingWallPO.java | 67 ++ .../repository/todo/SowingWallDO.java | 70 ++ .../service/SowingWallDomainService.java | 88 ++ .../po/ImmediateInventoryPO.java | 59 + .../po/WarehousingReportPO.java | 60 + .../todo/ImmediateInventoryDO.java | 147 +++ .../todo/WarehousingReportDO.java | 101 ++ .../stockInOrder/entity/StockInOrder.java | 228 ++++ .../facade/IStockInOrderService.java | 43 + .../repository/mapper/StockInOrderMapper.java | 23 + .../persistence/StockInOrderImpl.java | 84 ++ .../repository/po/StockInOrderBasePO.java | 116 ++ .../repository/po/StockInOrderPO.java | 229 ++++ .../repository/todo/StockInOrderBaseDO.java | 111 ++ .../repository/todo/StockInOrderDO.java | 244 ++++ .../service/StockInOrderDomainService.java | 391 +++++++ .../entity/StockInTaskOrder.java | 108 ++ .../facade/IStockInTaskOrderService.java | 60 + .../mapper/StockInTaskOrderMapper.java | 23 + .../persistence/StockInTaskOrderImpl.java | 303 +++++ .../repository/po/StockInTaskOrderPO.java | 116 ++ .../repository/todo/StockInTaskOrderDO.java | 119 ++ .../StockInTaskOrderDomainService.java | 113 ++ .../stockOutOrder/entity/StockOutOrder.java | 265 +++++ .../facade/IStockOutOrderService.java | 43 + .../mapper/StockOutOrderMapper.java | 23 + .../persistence/StockOutOrderImpl.java | 107 ++ .../repository/po/StockOutOrderBasePO.java | 103 ++ .../repository/po/StockOutOrderPO.java | 274 +++++ .../repository/todo/AllocationByOrderDO.java | 73 ++ .../repository/todo/StockOutOrderBaseDO.java | 108 ++ .../repository/todo/StockOutOrderDO.java | 293 +++++ .../service/StockOutOrderDomainService.java | 1001 ++++++++++++++++ .../entity/StockOutTaskOrder.java | 148 +++ .../facade/IStockOutTaskOrderService.java | 52 + .../mapper/StockOutTaskOrderMapper.java | 23 + .../persistence/StockOutTaskOrderImpl.java | 167 +++ .../repository/po/StockOutTaskOrderPO.java | 159 +++ .../repository/po/TaskMaterialPO.java | 71 ++ .../repository/po/TaskStoragePO.java | 79 ++ .../repository/todo/StockOutTaskOrderDO.java | 168 +++ .../StockOutTaskOrderDomainService.java | 570 +++++++++ .../entity/StockReceiptOrder.java | 136 +++ .../facade/IStockReceiptOrderService.java | 43 + .../mapper/StockReceiptOrderMapper.java | 23 + .../persistence/StockReceiptOrderImpl.java | 120 ++ .../repository/po/StockReceiptOrderPO.java | 143 +++ .../repository/todo/NoReceiptOrderDO.java | 27 + .../repository/todo/StockReceiptOrderDO.java | 161 +++ .../StockReceiptOrderDomainService.java | 1028 +++++++++++++++++ .../entity/StockShelfOrder.java | 105 ++ .../facade/IStockShelfOrderService.java | 48 + .../mapper/StockShelfOrderMapper.java | 23 + .../persistence/StockShelfOrderImpl.java | 131 +++ .../repository/po/StockShelfOrderPO.java | 108 ++ .../repository/todo/StockShelfOrderDO.java | 128 ++ .../service/StockShelfOrderDomainService.java | 656 +++++++++++ .../entity/TaskHandoverMaterialDetail.java | 128 ++ .../ITaskHandoverMaterialDetailService.java | 43 + .../TaskHandoverMaterialDetailMapper.java | 23 + .../TaskHandoverMaterialDetailImpl.java | 81 ++ .../po/TaskHandoverMaterialDetailPO.java | 128 ++ .../todo/TaskHandoverMaterialDetailDO.java | 130 +++ ...skHandoverMaterialDetailDomainService.java | 65 ++ .../entity/TaskPickingMaterialDetail.java | 202 ++++ .../ITaskPickingMaterialDetailService.java | 55 + .../TaskPickingMaterialDetailMapper.java | 23 + .../TaskPickingMaterialDetailImpl.java | 238 ++++ .../po/TaskPickingMaterialDetailPO.java | 207 ++++ .../todo/TaskPickingMaterialDetailDO.java | 210 ++++ ...askPickingMaterialDetailDomainService.java | 65 ++ .../entity/TaskReceiptMaterialDetail.java | 202 ++++ .../ITaskReceiptMaterialDetailService.java | 55 + .../TaskReceiptMaterialDetailMapper.java | 23 + .../TaskReceiptMaterialDetailImpl.java | 140 +++ .../po/TaskReceiptMaterialDetailPO.java | 204 ++++ .../todo/TaskReceiptMaterialDetailDO.java | 215 ++++ ...askReceiptMaterialDetailDomainService.java | 65 ++ .../entity/TaskShelfMaterialDetail.java | 185 +++ .../ITaskShelfMaterialDetailService.java | 45 + .../mapper/TaskShelfMaterialDetailMapper.java | 23 + .../TaskShelfMaterialDetailImpl.java | 102 ++ .../po/TaskShelfMaterialDetailPO.java | 187 +++ .../todo/TaskShelfMaterialDetailDO.java | 198 ++++ .../TaskShelfMaterialDetailDomainService.java | 65 ++ .../entity/UserCommonSettings.java | 57 + .../facade/IUserCommonSettingsService.java | 47 + .../mapper/UserCommonSettingsMapper.java | 24 + .../persistence/UserCommonSettingsImpl.java | 98 ++ .../repository/po/UserCommonSettingsPO.java | 57 + .../repository/todo/UserCommonSettingsDO.java | 67 ++ .../UserCommonSettingsDomainService.java | 71 ++ .../entity/WaveMaterialDetail.java | 185 +++ .../facade/IWaveMaterialDetailService.java | 64 + .../mapper/WaveMaterialDetailMapper.java | 23 + .../persistence/WaveMaterialDetailImpl.java | 332 ++++++ .../repository/po/WaveMaterialDetailPO.java | 190 +++ .../repository/todo/WaveMaterialDetailDO.java | 197 ++++ .../WaveMaterialDetailDomainService.java | 65 ++ .../abstracts/AbstractWaveOrderService.java | 56 + .../domain/waveOrder/entity/WaveOrder.java | 167 +++ .../factorys/WaveOrderServiceFactory.java | 32 + .../repository/facade/IWaveOrderService.java | 43 + .../facade/IWaveOrderTypeService.java | 21 + .../repository/mapper/WaveOrderMapper.java | 23 + .../repository/persistence/WaveOrderImpl.java | 81 ++ .../waveOrder/repository/po/WaveOrderPO.java | 170 +++ .../todo/AllocationSowingWallDO.java | 35 + .../repository/todo/WaveOrderDO.java | 176 +++ .../service/DirectGenerationService.java | 164 +++ .../service/WaveOrderDomainService.java | 323 ++++++ .../waveOutOrder/entity/WaveOutOrder.java | 51 + .../facade/IWaveOutOrderService.java | 43 + .../repository/mapper/WaveOutOrderMapper.java | 23 + .../persistence/WaveOutOrderImpl.java | 81 ++ .../repository/po/WaveOutOrderPO.java | 51 + .../repository/todo/WaveOutOrderDO.java | 54 + .../service/WaveOutOrderDomainService.java | 65 ++ .../wms/domain/waveRule/entity/WaveRule.java | 91 ++ .../repository/facade/IWaveRuleService.java | 43 + .../repository/mapper/WaveRuleMapper.java | 23 + .../repository/persistence/WaveRuleImpl.java | 81 ++ .../waveRule/repository/po/WaveRulePO.java | 91 ++ .../waveRule/repository/todo/WaveRuleDO.java | 94 ++ .../service/WaveRuleDomainService.java | 65 ++ .../wms/enums/StatusInvestigationEnum.java | 53 + .../CommonSettingsAssembler.java | 28 + .../ContainerUsageRecordAssembler.java | 65 ++ .../deliveTask/DeliveTaskAssembler.java | 65 ++ .../DifferentManageAssembler.java | 65 ++ .../HandoverTaskOrderAssembler.java | 65 ++ .../InMaterialDetailAssembler.java | 65 ++ ...InMaterialDetailSerialNumberAssembler.java | 65 ++ .../InOrderAbnormalAssembler.java | 65 ++ .../InventoryAdjustmentRecordAssembler.java | 28 + .../InventoryAllocationRuleAssembler.java | 90 ++ ...nventoryAllocationRuleDetailAssembler.java | 65 ++ .../InventoryStandingDetailAssembler.java | 28 + .../InventoryStandingReportAssembler.java | 65 ++ .../InventoryTurnoverRuleAssembler.java | 91 ++ .../InventoryTurnoverRuleDetailAssembler.java | 65 ++ .../InventoryWarningAnalyzeAssembler.java | 65 ++ .../InvestigationManageAssembler.java | 124 ++ .../InvestigetionManageDetailAssembler.java | 65 ++ .../MaterialBarCodeAssembler.java | 65 ++ .../MaterialBaseInfoAssembler.java | 24 + .../MaterialCommonAssembler.java | 65 ++ .../MaterialGoodsRuleAssembler.java | 65 ++ .../MaterialInventoryAssembler.java | 73 ++ .../MaterialInventoryWarningAssembler.java | 28 + .../MaterialMoreDetailAssembler.java | 65 ++ .../MaterialWarehouseControlAssembler.java | 65 ++ .../MobilizeManageAssembler.java | 65 ++ .../MobilizeManageDetailAssembler.java | 65 ++ .../NoticeMaterialDetailAssembler.java | 65 ++ .../noticeOrder/NoticeOrderAssembler.java | 78 ++ ...utMaterialDetailSerialNumberAssembler.java | 65 ++ .../OutOrderAbnormalAssembler.java | 65 ++ .../overStock/OverStockAssembler.java | 46 + .../pickingOrder/PickingOrderAssembler.java | 65 ++ .../putawayRule/PutawayRuleAssembler.java | 89 ++ .../PutawayRuleDetailAssembler.java | 65 ++ .../assember/qcRule/QcRuleAssembler.java | 90 ++ .../qcRuleDetail/QcRuleDetailAssembler.java | 65 ++ .../QualityInspectionAssembler.java | 65 ++ .../ReceiptMaterialDetailAssembler.java | 28 + .../ReplenishmentNoticeAssembler.java | 65 ++ .../serialNumber/SerialNumberAssembler.java | 28 + .../ShelfMaterialDetailAssembler.java | 65 ++ .../shiftManage/ShiftManageAssembler.java | 24 + .../ShiftMaterialDetailAssembler.java | 65 ++ .../SowingDistributionDetailsAssembler.java | 65 ++ .../sowingWall/SowingWallAssembler.java | 66 ++ .../ImmediateInventoryAssembler.java | 51 + .../WarehousingReportAssembler.java | 49 + .../stockInOrder/StockInOrderAssembler.java | 64 + .../StockInTaskOrderAssembler.java | 65 ++ .../stockOutOrder/StockOutOrderAssembler.java | 68 ++ .../StockOutTaskOrderAssembler.java | 106 ++ .../StockReceiptOrderAssembler.java | 37 + .../StockShelfOrderAssembler.java | 36 + .../TaskReceiptMaterialDetailAssembler.java | 65 ++ .../TaskShelfMaterialDetailAssembler.java | 65 ++ .../UserCommonSettingsAssembler.java | 75 ++ .../WaveMaterialDetailAssembler.java | 65 ++ .../waveOrder/WaveOrderAssembler.java | 65 ++ .../assember/waveRule/WaveRuleAssembler.java | 65 ++ .../dto/commonSettings/CommonSettingsDTO.java | 62 + .../ContainerUsageRecordDTO.java | 91 ++ .../dto/deliveTask/DeliveTaskDTO.java | 118 ++ .../differentManage/DifferentManageDTO.java | 120 ++ .../HandoverTaskOrderDTO.java | 134 +++ .../inMaterialDetail/InMaterialDetailDTO.java | 266 +++++ .../InMaterialDetailSerialNumberDTO.java | 61 + .../inOrderAbnormal/InOrderAbnormalDTO.java | 91 ++ .../InventoryAdjustmentRecordDTO.java | 166 +++ .../InventoryAllocationRuleDTO.java | 64 + .../InventoryAllocationRuleDetailDTO.java | 82 ++ .../InventoryStandingDetailDTO.java | 91 ++ .../InventoryStandingReportDTO.java | 87 ++ .../InventoryTurnoverRuleDTO.java | 62 + .../InventoryTurnoverRuleDetailDTO.java | 62 + .../InventoryWarningAnalyzeDTO.java | 162 +++ .../InvestigationManageDTO.java | 176 +++ .../InvestigetionMaterialDTO.java | 67 ++ .../InvestigetionStorageDTO.java | 79 ++ .../InvestigetionManageDetailDTO.java | 215 ++++ .../materialBarCode/MaterialBarCodeDTO.java | 78 ++ .../dto/materialBaseInfo/MaterialBaseDTO.java | 61 + .../materialBaseInfo/MaterialBaseInfoDTO.java | 193 ++++ .../dto/materialCommon/MaterialCommonDTO.java | 103 ++ .../MaterialGoodsRuleDTO.java | 134 +++ .../MaterialInventoryDTO.java | 147 +++ .../MaterialInventoryQueryListDTO.java | 171 +++ .../MaterialInventoryWarningDTO.java | 119 ++ .../MaterialMoreDetailDTO.java | 82 ++ .../MaterialWarehouseControlDTO.java | 99 ++ .../dto/mobilizeManage/MobilizeManageDTO.java | 153 +++ .../MobilizeManageDetailDTO.java | 178 +++ .../NoticeMaterialDetailDTO.java | 146 +++ .../dto/noticeOrder/NoticeOrderDTO.java | 143 +++ .../OutMaterialDetailDTO.java | 239 ++++ .../OutMaterialDetailSerialNumberDTO.java | 62 + .../outOrderAbnormal/OutOrderAbnormalDTO.java | 87 ++ .../dto/overStock/ExecuteOverStockDTO.java | 24 + .../dto/overStock/OverStockDTO.java | 91 ++ .../dto/overStock/QueryOrderOverStockDTO.java | 119 ++ .../dto/overStock/ReceiptOverStockDTO.java | 107 ++ .../PickingMaterialDetailDTO.java | 207 ++++ .../dto/pickingOrder/PickingCheckDTO.java | 24 + .../dto/pickingOrder/PickingOrderDTO.java | 163 +++ .../dto/putawayRule/PutawayRuleDTO.java | 57 + .../PutawayRuleDetailDTO.java | 94 ++ .../wms/interfaces/dto/qcRule/QcRuleDTO.java | 63 + .../dto/qcRuleDetail/QcRuleDetailDTO.java | 67 ++ .../QualityInspectionDTO.java | 203 ++++ .../ReceiptMaterialDetailDTO.java | 230 ++++ .../ReplenishmentNoticeDTO.java | 87 ++ .../dto/serialNumber/SerialNumberDTO.java | 137 +++ .../ShelfMaterialDetailDTO.java | 263 +++++ .../dto/shiftManage/ShiftManageDTO.java | 162 +++ .../ShiftMaterialDetailDTO.java | 261 +++++ .../SowingDistributionDetailsDTO.java | 161 +++ .../dto/sowingWall/SowingWallDTO.java | 70 ++ .../ImmediateInventoryDTO.java | 147 +++ .../WarehousingReportDTO.java | 97 ++ .../dto/stockInOrder/StockInOrderBaseDTO.java | 103 ++ .../dto/stockInOrder/StockInOrderDTO.java | 240 ++++ .../stockInTaskOrder/StockInTaskOrderDTO.java | 110 ++ .../stockOutOrder/StockOutOrderBaseDTO.java | 103 ++ .../dto/stockOutOrder/StockOutOrderDTO.java | 280 +++++ .../StockOutTaskOrderDTO.java | 162 +++ .../stockOutTaskOrder/TaskMaterialDTO.java | 79 ++ .../dto/stockOutTaskOrder/TaskStorageDTO.java | 79 ++ .../StockReceiptOrderDTO.java | 149 +++ .../stockShelfOrder/StockShelfOrderDTO.java | 120 ++ .../TaskHandoverMaterialDetailDTO.java | 130 +++ .../TaskPickingMaterialDetailDTO.java | 216 ++++ .../TaskReceiptMaterialDetailDTO.java | 204 ++++ .../TaskShelfMaterialDetailDTO.java | 187 +++ .../UserCommonSettingsAddDTO.java | 17 + .../UserCommonSettingsDTO.java | 34 + .../WaveMaterialDetailDTO.java | 187 +++ .../dto/waveOrder/WaveOrderDTO.java | 176 +++ .../interfaces/dto/waveRule/WaveRuleDTO.java | 94 ++ .../ContainerUsageRecordApi.java | 93 ++ .../facadeApi/deliveTask/DeliveTaskApi.java | 91 ++ .../differentManage/DifferentManageApi.java | 107 ++ .../HandoverTaskOrderApi.java | 110 ++ .../inMaterialDetail/InMaterialDetailApi.java | 83 ++ .../InMaterialDetailSerialNumberApi.java | 102 ++ .../inOrderAbnormal/InOrderAbnormalApi.java | 93 ++ .../InventoryAdjustmentRecordApi.java | 120 ++ .../InventoryAllocationRuleApi.java | 93 ++ .../InventoryAllocationRuleDetailApi.java | 93 ++ .../InventoryStandingDetailApi.java | 77 ++ .../InventoryStandingReportApi.java | 103 ++ .../InventoryTurnoverRuleApi.java | 93 ++ .../InventoryTurnoverRuleDetailApi.java | 93 ++ .../InventoryWarningAnalyzeApi.java | 102 ++ .../InvestigationManageApi.java | 118 ++ .../InvestigetionManageDetailApi.java | 93 ++ .../materialBarCode/MaterialBarCodeApi.java | 93 ++ .../materialBaseInfo/MaterialBaseInfoApi.java | 103 ++ .../materialCommon/MaterialCommonApi.java | 93 ++ .../MaterialGoodsRuleApi.java | 101 ++ .../MaterialInventoryApi.java | 123 ++ .../MaterialInventoryWarningApi.java | 89 ++ .../MaterialMoreDetailApi.java | 104 ++ .../MaterialWarehouseControlApi.java | 93 ++ .../mobilizeManage/MobilizeManageApi.java | 100 ++ .../MobilizeManageDetailApi.java | 103 ++ .../NoticeMaterialDetailApi.java | 93 ++ .../facadeApi/noticeOrder/NoticeOrderApi.java | 115 ++ .../OutMaterialDetailSerialNumberApi.java | 93 ++ .../outOrderAbnormal/OutOrderAbnormalApi.java | 93 ++ .../facadeApi/overStock/OverStockApi.java | 212 ++++ .../pickingOrder/PickingOrderApi.java | 119 ++ .../facadeApi/putawayRule/PutawayRuleApi.java | 93 ++ .../PutawayRuleDetailApi.java | 93 ++ .../facadeApi/qcRule/QcRuleApi.java | 93 ++ .../qcRuleDetail/QcRuleDetailApi.java | 93 ++ .../QualityInspectionApi.java | 93 ++ .../ReceiptMaterialDetailApi.java | 93 ++ .../ReplenishmentNoticeApi.java | 93 ++ .../serialNumber/SerialNumberApi.java | 99 ++ .../ShelfMaterialDetailApi.java | 93 ++ .../facadeApi/shiftManage/ShiftManageApi.java | 123 ++ .../ShiftMaterialDetailApi.java | 99 ++ .../SowingDistributionDetailsApi.java | 126 ++ .../facadeApi/sowingWall/SowingWallApi.java | 101 ++ .../StatementStatisticsApi.java | 117 ++ .../stockInOrder/StockInOrderApi.java | 116 ++ .../stockInTaskOrder/StockInTaskOrderApi.java | 93 ++ .../stockOutOrder/StockOutOrderApi.java | 233 ++++ .../StockOutTaskOrderApi.java | 93 ++ .../StockReceiptOrderApi.java | 107 ++ .../stockShelfOrder/StockShelfOrderApi.java | 94 ++ .../TaskReceiptMaterialDetailApi.java | 93 ++ .../TaskShelfMaterialDetailApi.java | 93 ++ .../WaveMaterialDetailApi.java | 93 ++ .../facadeApi/waveOrder/WaveOrderApi.java | 130 +++ .../facadeApi/waveRule/WaveRuleApi.java | 93 ++ .../commonSettings/CommonSettingsApi.java | 108 ++ .../deliveTask/DeliveTaskAppApi.java | 102 ++ .../InvestigationManageAppApi.java | 103 ++ .../MaterialInventoryAppApi.java | 49 + .../shiftManage/ShiftManageAppApi.java | 89 ++ .../stockOutOrder/StockOutOrderAppApi.java | 80 ++ .../stockOutTaskOrderAppApi.java | 113 ++ .../StockReceiptOrderAppApi.java | 93 ++ .../StockShelfOrderAppApi.java | 79 ++ .../UserCommonSettingsApi.java | 84 ++ .../java/com/mhd/wms/util/FillableEntity.java | 16 + .../mhd/wms/util/UtilloginUserAssemble.java | 30 + mhd_wms/src/main/resources/banner.txt | 8 + mhd_wms/src/main/resources/bootstrap.yml | 45 + mhd_wms/src/main/resources/logback.xml | 74 ++ .../OutMaterialDetailMapper.xml | 325 ++++++ .../commonSettings/CommonSettingsMapper.xml | 66 ++ .../ContainerUsageRecordMapper.xml | 95 ++ .../mapper/deliveTask/DeliveTaskMapper.xml | 276 +++++ .../differentManage/DifferentManageMapper.xml | 120 ++ .../HandoverTaskOrderMapper.xml | 144 +++ .../InMaterialDetailMapper.xml | 289 +++++ .../InMaterialDetailSerialNumberMapper.xml | 75 ++ .../inOrderAbnormal/InOrderAbnormalMapper.xml | 98 ++ .../InventoryAdjustmentRecordMapper.xml | 161 +++ .../InventoryAllocationRuleMapper.xml | 54 + .../InventoryAllocationRuleDetailMapper.xml | 102 ++ .../InventoryStandingDetailMapper.xml | 387 +++++++ .../InventoryStandingReportMapper.xml | 285 +++++ .../InventoryTurnoverRuleMapper.xml | 54 + .../InventoryTurnoverRuleDetailMapper.xml | 90 ++ .../InventoryWarningAnalyzeMapper.xml | 162 +++ .../InvestigationManageMapper.xml | 155 +++ .../InvestigetionManageDetailMapper.xml | 229 ++++ .../materialBarCode/MaterialBarCodeMapper.xml | 75 ++ .../MaterialBaseInfoMapper.xml | 226 ++++ .../materialCommon/MaterialCommonMapper.xml | 107 ++ .../MaterialGoodsRuleMapper.xml | 142 +++ .../MaterialInventoryMapper.xml | 601 ++++++++++ .../MaterialInventoryWarningMapper.xml | 134 +++ .../MaterialMoreDetailMapper.xml | 100 ++ .../MaterialWarehouseControlMapper.xml | 103 ++ .../mobilizeManage/MobilizeManageMapper.xml | 141 +++ .../MobilizeManageDetailMapper.xml | 190 +++ .../NoticeMaterialDetailMapper.xml | 147 +++ .../OutMaterialDetailSerialNumberMapper.xml | 68 ++ .../OutOrderAbnormalMapper.xml | 116 ++ .../mapper/overStock/OverStockMapper.xml | 97 ++ .../PickingMaterialDetailMapper.xml | 191 +++ .../pickingOrder/PickingOrderMapper.xml | 163 +++ .../mapper/putawayRule/PutawayRuleMapper.xml | 54 + .../PutawayRuleDetailMapper.xml | 109 ++ .../resources/mapper/qcRule/QcRuleMapper.xml | 54 + .../qcRuleDetail/QcRuleDetailMapper.xml | 86 ++ .../QualityInspectionMapper.xml | 224 ++++ .../ReceiptMaterialDetailMapper.xml | 225 ++++ .../ReplenishmentNoticeMapper.xml | 96 ++ .../serialNumber/SerialNumberMapper.xml | 143 +++ .../ShelfMaterialDetailMapper.xml | 231 ++++ .../mapper/shiftManage/ShiftManageMapper.xml | 160 +++ .../ShiftMaterialDetailMapper.xml | 285 +++++ .../SowingDistributionDetailsMapper.xml | 159 +++ .../mapper/sowingWall/SowingWallMapper.xml | 76 ++ .../stockInOrder/StockInOrderMapper.xml | 284 +++++ .../StockInTaskOrderMapper.xml | 98 ++ .../stockOutOrder/StockOutOrderMapper.xml | 252 ++++ .../StockOutTaskOrderMapper.xml | 127 ++ .../stockReceiptNotice/NoticeOrderMapper.xml | 128 ++ .../StockReceiptOrderMapper.xml | 135 +++ .../stockShelfOrder/StockShelfOrderMapper.xml | 120 ++ .../TaskHandoverMaterialDetailMapper.xml | 131 +++ .../TaskPickingMaterialDetailMapper.xml | 169 +++ .../TaskReceiptMaterialDetailMapper.xml | 210 ++++ .../TaskShelfMaterialDetailMapper.xml | 179 +++ .../UserCommonSettingsMapper.xml | 71 ++ .../WaveMaterialDetailMapper.xml | 187 +++ .../mapper/waveOrder/WaveOrderMapper.xml | 168 +++ .../mapper/waveRule/WaveRuleMapper.xml | 93 ++ pom.xml | 2 + 835 files changed, 96160 insertions(+) create mode 100644 mhd_wms/pom.xml create mode 100644 mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/entity/InMaterialDetailSerialNumber.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/facade/IInMaterialDetailSerialNumberService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/mapper/InMaterialDetailSerialNumberMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/persistence/InMaterialDetailSerialNumberImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/po/InMaterialDetailSerialNumberPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/todo/InMaterialDetailSerialNumberDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/service/InMaterialDetailSerialNumberDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/entity/InOrderAbnormal.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/facade/IInOrderAbnormalService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/mapper/InOrderAbnormalMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/po/InOrderAbnormalPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/service/InOrderAbnormalDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/entity/InventoryAdjustmentRecord.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/facade/IInventoryAdjustmentRecordService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/mapper/InventoryAdjustmentRecordMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/persistence/InventoryAdjustmentRecordImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/po/InventoryAdjustmentRecordPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/todo/InventoryAdjustmentRecordDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/entity/InventoryAllocationRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/facade/IInventoryAllocationRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/mapper/InventoryAllocationRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/persistence/InventoryAllocationRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/po/InventoryAllocationRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/todo/InventoryAllocationRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/service/InventoryAllocationRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/entity/InventoryAllocationRuleDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/facade/IInventoryAllocationRuleDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/mapper/InventoryAllocationRuleDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/persistence/InventoryAllocationRuleDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/po/InventoryAllocationRuleDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/todo/InventoryAllocationRuleDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/service/InventoryAllocationRuleDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/entity/InventoryStandingDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/facade/IInventoryStandingDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/mapper/InventoryStandingDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/persistence/InventoryStandingDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/po/InventoryStandingDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/todo/InventoryStandingDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/service/InventoryStandingDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/entity/InventoryStandingReport.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/facade/IInventoryStandingReportService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/mapper/InventoryStandingReportMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/persistence/InventoryStandingReportImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingDetailReportPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingReportPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/todo/InventoryStandingReportDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/service/InventoryStandingReportDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/entity/InventoryTurnoverRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/facade/IInventoryTurnoverRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/mapper/InventoryTurnoverRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/persistence/InventoryTurnoverRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/po/InventoryTurnoverRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/todo/InventoryTurnoverRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/service/InventoryTurnoverRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/entity/InventoryTurnoverRuleDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/facade/IInventoryTurnoverRuleDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/mapper/InventoryTurnoverRuleDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/persistence/InventoryTurnoverRuleDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/po/InventoryTurnoverRuleDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/todo/InventoryTurnoverRuleDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/service/InventoryTurnoverRuleDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/entity/InventoryWarningAnalyze.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/facade/IInventoryWarningAnalyzeService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/mapper/InventoryWarningAnalyzeMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/persistence/InventoryWarningAnalyzeImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/po/InventoryWarningAnalyzePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/todo/InventoryWarningAnalyzeDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/service/InventoryWarningAnalyzeDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/entity/InvestigationManage.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/facade/IInvestigationManageService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/mapper/InvestigationManageMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigationManagePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionMaterialPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionStoragePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigationManageDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionMaterialDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionStorageDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/service/InvestigationManageDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/entity/InvestigetionManageDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/facade/IInvestigetionManageDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/mapper/InvestigetionManageDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/persistence/InvestigetionManageDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/po/InvestigetionManageDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/todo/InvestigetionManageDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/service/InvestigetionManageDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/entity/MaterialBarCode.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/facade/IMaterialBarCodeService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/mapper/MaterialBarCodeMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/po/MaterialBarCodePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/todo/MaterialBarCodeDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/service/MaterialBarCodeDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/facade/IMaterialBaseInfoService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBasePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/service/MaterialBaseInfoDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/entity/MaterialCommon.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/facade/IMaterialCommonService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/mapper/MaterialCommonMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/persistence/MaterialCommonImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/po/MaterialCommonPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/todo/MaterialCommonDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/service/MaterialCommonDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/entity/MaterialGoodsRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/facade/IMaterialGoodsRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/mapper/MaterialGoodsRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/persistence/MaterialGoodsRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/po/MaterialGoodsRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/todo/MaterialGoodsRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/service/MaterialGoodsRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryParentDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/entity/MaterialInventoryWarning.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/facade/IMaterialInventoryWarningService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/mapper/MaterialInventoryWarningMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/persistence/MaterialInventoryWarningImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/po/MaterialInventoryWarningPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/todo/MaterialInventoryWarningDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/service/MaterialInventoryWarningDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/entity/MaterialMoreDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/facade/IMaterialMoreDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/mapper/MaterialMoreDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/persistence/IMaterialMoreDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/po/MaterialMoreDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/todo/MaterialMoreDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/service/MaterialMoreDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/entity/MaterialWarehouseControl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/facade/IMaterialWarehouseControlService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/mapper/MaterialWarehouseControlMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/persistence/MaterialWarehouseControlImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/po/MaterialWarehouseControlPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/todo/MaterialWarehouseControlDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/service/MaterialWarehouseControlDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/entity/MobilizeManage.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/facade/IMobilizeManageService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/mapper/MobilizeManageMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/persistence/MobilizeManageImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/po/MobilizeManagePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/todo/MobilizeManageDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/service/MobilizeManageDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/entity/MobilizeManageDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/facade/IMobilizeManageDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/mapper/MobilizeManageDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/persistence/MobilizeManageDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/po/MobilizeManageDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/todo/MobilizeManageDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/service/MobilizeManageDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/entity/NoticeMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/facade/INoticeMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/mapper/NoticeMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/persistence/NoticeMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/po/NoticeMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/todo/NoticeMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/service/NoticeMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/entity/NoticeOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/facade/INoticeOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/mapper/NoticeOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/persistence/NoticeImplOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/po/NoticeOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/todo/NoticeOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/service/NoticeOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/entity/OutMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialCheckPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/entity/OutMaterialDetailSerialNumber.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/facade/IOutMaterialDetailSerialNumberService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/mapper/OutMaterialDetailSerialNumberMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/persistence/OutMaterialDetailSerialNumberImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/po/OutMaterialDetailSerialNumberPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/todo/OutMaterialDetailSerialNumberDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/service/OutMaterialDetailSerialNumberDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/entity/OutOrderAbnormal.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/facade/IOutOrderAbnormalService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/mapper/OutOrderAbnormalMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/service/OutOrderAbnormalDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/entity/OverStock.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/facade/IOverStockService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/mapper/OverStockMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/persistence/OverStockImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderListPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/ReceiptOverStockPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ExecuteOverStockDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/OverStockDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ReceiptOverStockDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/overStock/service/OverStockDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/entity/PickingMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDOByUpdate.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/service/PickingMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/entity/PickingOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/facade/IPickingOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/mapper/PickingOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/persistence/PickingOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/AllocationSowingWallPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/PickingOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/todo/PickingOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/PickingOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/pushSyncBms/PushSyncBmsDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/entity/PutawayRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/facade/IPutawayRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/mapper/PutawayRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/persistence/PutawayRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/po/PutawayRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/todo/PutawayRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/service/PutawayRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/entity/PutawayRuleDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/facade/IPutawayRuleDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/mapper/PutawayRuleDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/persistence/PutawayRuleDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/po/PutawayRuleDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/todo/PutawayRuleDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/service/PutawayRuleDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/entity/QcRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/facade/IQcRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/mapper/QcRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/persistence/QcRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/po/QcRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/todo/QcRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/service/QcRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/entity/QcRuleDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/facade/IQcRuleDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/mapper/QcRuleDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/persistence/QcRuleDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/po/QcRuleDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/todo/QcRuleDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/service/QcRuleDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/entity/QualityInspection.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/facade/IQualityInspectionService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/mapper/QualityInspectionMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/persistence/QualityInspectionImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/po/QualityInspectionPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/todo/QualityInspectionDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/service/QualityInspectionDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/entity/ReceiptMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/facade/IReceiptMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/mapper/ReceiptMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/service/ReceiptMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/entity/ReplenishmentNotice.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/facade/IReplenishmentNoticeService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/mapper/ReplenishmentNoticeMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/persistence/ReplenishmentNoticeImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/po/ReplenishmentNoticePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/todo/ReplenishmentNoticeDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/service/ReplenishmentNoticeDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/entity/SerialNumber.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/facade/ISerialNumberService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/mapper/SerialNumberMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/persistence/SerialNumberImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/po/SerialNumberPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/todo/SerialNumberDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/service/SerialNumberDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/entity/ShelfMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/facade/IShelfMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/mapper/ShelfMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/todo/ShelfMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/service/ShelfMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/entity/ShiftManage.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/facade/IShiftManageService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/mapper/ShiftManageMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/po/ShiftManagePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ContainerShiftDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ShiftManageDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/service/ShiftManageDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/entity/ShiftMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/facade/IShiftMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/mapper/ShiftMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/persistence/ShiftMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMoveMaterialQuantityPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/todo/ShiftMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/service/ShiftMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/entity/SowingDistributionDetails.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/facade/ISowingDistributionDetailsService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/mapper/SowingDistributionDetailsMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/persistence/SowingDistributionDetailsImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/po/SowingDistributionDetailsPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/todo/SowingDistributionDetailsDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/service/SowingDistributionDetailsDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/entity/SowingWall.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/facade/ISowingWallService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/mapper/SowingWallMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/persistence/SowingWallImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/po/SowingWallPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/todo/SowingWallDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/service/SowingWallDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/WarehousingReportPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/ImmediateInventoryDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/WarehousingReportDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/entity/StockInOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderBasePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/entity/StockInTaskOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/facade/IStockInTaskOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/mapper/StockInTaskOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/persistence/StockInTaskOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/po/StockInTaskOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/todo/StockInTaskOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/entity/StockOutOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/facade/IStockOutOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/persistence/StockOutOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderBasePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/AllocationByOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderBaseDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/entity/StockOutTaskOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/facade/IStockOutTaskOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/mapper/StockOutTaskOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/persistence/StockOutTaskOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/StockOutTaskOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskStoragePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/todo/StockOutTaskOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/entity/StockReceiptOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/facade/IStockReceiptOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/mapper/StockReceiptOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/persistence/StockReceiptOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/po/StockReceiptOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/NoReceiptOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/entity/StockShelfOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/todo/StockShelfOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/entity/TaskHandoverMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/facade/ITaskHandoverMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/mapper/TaskHandoverMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/persistence/TaskHandoverMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/po/TaskHandoverMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/todo/TaskHandoverMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/service/TaskHandoverMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/entity/TaskPickingMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/facade/ITaskPickingMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/mapper/TaskPickingMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/po/TaskPickingMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/todo/TaskPickingMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/service/TaskPickingMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/entity/TaskReceiptMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/facade/ITaskReceiptMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/mapper/TaskReceiptMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/persistence/TaskReceiptMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/po/TaskReceiptMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/todo/TaskReceiptMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/service/TaskReceiptMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/entity/TaskShelfMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/facade/ITaskShelfMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/mapper/TaskShelfMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/persistence/TaskShelfMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/po/TaskShelfMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/todo/TaskShelfMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/service/TaskShelfMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/entity/UserCommonSettings.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/facade/IUserCommonSettingsService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/mapper/UserCommonSettingsMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/persistence/UserCommonSettingsImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/po/UserCommonSettingsPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/todo/UserCommonSettingsDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/service/UserCommonSettingsDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/entity/WaveMaterialDetail.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/facade/IWaveMaterialDetailService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/mapper/WaveMaterialDetailMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/persistence/WaveMaterialDetailImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/po/WaveMaterialDetailPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/todo/WaveMaterialDetailDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/service/WaveMaterialDetailDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/abstracts/AbstractWaveOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/entity/WaveOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/factorys/WaveOrderServiceFactory.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderTypeService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/mapper/WaveOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/persistence/WaveOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/po/WaveOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/AllocationSowingWallDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/WaveOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/DirectGenerationService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/WaveOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/entity/WaveOutOrder.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/facade/IWaveOutOrderService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/mapper/WaveOutOrderMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/persistence/WaveOutOrderImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/po/WaveOutOrderPO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/todo/WaveOutOrderDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/service/WaveOutOrderDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/entity/WaveRule.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/facade/IWaveRuleService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/mapper/WaveRuleMapper.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/persistence/WaveRuleImpl.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/po/WaveRulePO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/todo/WaveRuleDO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/service/WaveRuleDomainService.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/enums/StatusInvestigationEnum.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/commonSettings/CommonSettingsAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/containerUsageRecord/ContainerUsageRecordAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/deliveTask/DeliveTaskAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/differentManage/DifferentManageAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/handoverTaskOrder/HandoverTaskOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inOrderAbnormal/InOrderAbnormalAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAdjustmentRecord/InventoryAdjustmentRecordAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRule/InventoryAllocationRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingDetail/InventoryStandingDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingReport/InventoryStandingReportAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRule/InventoryTurnoverRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryWarningAnalyze/InventoryWarningAnalyzeAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigationManage/InvestigationManageAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigetionManageDetail/InvestigetionManageDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBarCode/MaterialBarCodeAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialCommon/MaterialCommonAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialGoodsRule/MaterialGoodsRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventory/MaterialInventoryAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventoryWarning/MaterialInventoryWarningAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialMoreDetail/MaterialMoreDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialWarehouseControl/MaterialWarehouseControlAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManage/MobilizeManageAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManageDetail/MobilizeManageDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeMaterialDetail/NoticeMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeOrder/NoticeOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outOrderAbnormal/OutOrderAbnormalAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/overStock/OverStockAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/pickingOrder/PickingOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRule/PutawayRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRuleDetail/PutawayRuleDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRule/QcRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRuleDetail/QcRuleDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qualityInspection/QualityInspectionAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/receiptMaterialDetail/ReceiptMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/replenishmentNotice/ReplenishmentNoticeAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/serialNumber/SerialNumberAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shelfMaterialDetail/ShelfMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftManage/ShiftManageAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftMaterialDetail/ShiftMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingDistributionDetails/SowingDistributionDetailsAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingWall/SowingWallAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/ImmediateInventoryAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/WarehousingReportAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInTaskOrder/StockInTaskOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutOrder/StockOutOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutTaskOrder/StockOutTaskOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockReceiptOrder/StockReceiptOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockShelfOrder/StockShelfOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskReceiptMaterialDetail/TaskReceiptMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskShelfMaterialDetail/TaskShelfMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/userCommonSettings/UserCommonSettingsAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveMaterialDetail/WaveMaterialDetailAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveOrder/WaveOrderAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveRule/WaveRuleAssembler.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/commonSettings/CommonSettingsDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/containerUsageRecord/ContainerUsageRecordDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/deliveTask/DeliveTaskDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/differentManage/DifferentManageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/handoverTaskOrder/HandoverTaskOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inOrderAbnormal/InOrderAbnormalDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAdjustmentRecord/InventoryAdjustmentRecordDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRule/InventoryAllocationRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingDetail/InventoryStandingDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingReport/InventoryStandingReportDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRule/InventoryTurnoverRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryWarningAnalyze/InventoryWarningAnalyzeDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigationManageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionMaterialDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionStorageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigetionManageDetail/InvestigetionManageDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBarCode/MaterialBarCodeDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialCommon/MaterialCommonDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialGoodsRule/MaterialGoodsRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventoryWarning/MaterialInventoryWarningDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialMoreDetail/MaterialMoreDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialWarehouseControl/MaterialWarehouseControlDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManage/MobilizeManageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManageDetail/MobilizeManageDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeMaterialDetail/NoticeMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeOrder/NoticeOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outOrderAbnormal/OutOrderAbnormalDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ExecuteOverStockDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/OverStockDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/QueryOrderOverStockDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ReceiptOverStockDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingMaterialDetail/PickingMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingCheckDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRule/PutawayRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRuleDetail/PutawayRuleDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRule/QcRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRuleDetail/QcRuleDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qualityInspection/QualityInspectionDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/replenishmentNotice/ReplenishmentNoticeDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/serialNumber/SerialNumberDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftManage/ShiftManageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftMaterialDetail/ShiftMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingDistributionDetails/SowingDistributionDetailsDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingWall/SowingWallDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/ImmediateInventoryDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/WarehousingReportDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderBaseDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInTaskOrder/StockInTaskOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderBaseDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/StockOutTaskOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskMaterialDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskStorageDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockShelfOrder/StockShelfOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskHandoverMaterialDetail/TaskHandoverMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskReceiptMaterialDetail/TaskReceiptMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskShelfMaterialDetail/TaskShelfMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsAddDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveMaterialDetail/WaveMaterialDetailDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveOrder/WaveOrderDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveRule/WaveRuleDTO.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/containerUsageRecord/ContainerUsageRecordApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/deliveTask/DeliveTaskApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/differentManage/DifferentManageApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/handoverTaskOrder/HandoverTaskOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inOrderAbnormal/InOrderAbnormalApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAdjustmentRecord/InventoryAdjustmentRecordApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRule/InventoryAllocationRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingDetail/InventoryStandingDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingReport/InventoryStandingReportApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRule/InventoryTurnoverRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryWarningAnalyze/InventoryWarningAnalyzeApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigationManage/InvestigationManageApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigetionManageDetail/InvestigetionManageDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBarCode/MaterialBarCodeApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialCommon/MaterialCommonApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialGoodsRule/MaterialGoodsRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventoryWarning/MaterialInventoryWarningApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialMoreDetail/MaterialMoreDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialWarehouseControl/MaterialWarehouseControlApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManage/MobilizeManageApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManageDetail/MobilizeManageDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeMaterialDetail/NoticeMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeOrder/NoticeOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outOrderAbnormal/OutOrderAbnormalApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/overStock/OverStockApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRule/PutawayRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRuleDetail/PutawayRuleDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRule/QcRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRuleDetail/QcRuleDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qualityInspection/QualityInspectionApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/receiptMaterialDetail/ReceiptMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/replenishmentNotice/ReplenishmentNoticeApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/serialNumber/SerialNumberApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shelfMaterialDetail/ShelfMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftManage/ShiftManageApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftMaterialDetail/ShiftMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingDistributionDetails/SowingDistributionDetailsApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingWall/SowingWallApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/statementStatistics/StatementStatisticsApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInTaskOrder/StockInTaskOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutTaskOrder/StockOutTaskOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockReceiptOrder/StockReceiptOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockShelfOrder/StockShelfOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskShelfMaterialDetail/TaskShelfMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveMaterialDetail/WaveMaterialDetailApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveOrder/WaveOrderApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveRule/WaveRuleApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/commonSettings/CommonSettingsApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/deliveTask/DeliveTaskAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/investigationManage/InvestigationManageAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/materialInventory/MaterialInventoryAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/shiftManage/ShiftManageAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockShelfOrder/StockShelfOrderAppApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/userCommonSettings/UserCommonSettingsApi.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/util/FillableEntity.java create mode 100644 mhd_wms/src/main/java/com/mhd/wms/util/UtilloginUserAssemble.java create mode 100644 mhd_wms/src/main/resources/banner.txt create mode 100644 mhd_wms/src/main/resources/bootstrap.yml create mode 100644 mhd_wms/src/main/resources/logback.xml create mode 100644 mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/commonSettings/CommonSettingsMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/containerUsageRecord/ContainerUsageRecordMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/deliveTask/DeliveTaskMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryAdjustmentRecord/InventoryAdjustmentRecordMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryAllocationRule/InventoryAllocationRuleMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryStandingDetail/InventoryStandingDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryTurnoverRule/InventoryTurnoverRuleMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/inventoryWarningAnalyze/InventoryWarningAnalyzeMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/investigationManage/InvestigationManageMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/investigetionManageDetail/InvestigetionManageDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialBarCode/MaterialBarCodeMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialCommon/MaterialCommonMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialGoodsRule/MaterialGoodsRuleMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialInventoryWarning/MaterialInventoryWarningMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialMoreDetail/MaterialMoreDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/materialWarehouseControl/MaterialWarehouseControlMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/mobilizeManage/MobilizeManageMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/mobilizeManageDetail/MobilizeManageDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/noticeMaterialDetail/NoticeMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/overStock/OverStockMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/putawayRule/PutawayRuleMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/putawayRuleDetail/PutawayRuleDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/qcRule/QcRuleMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/qcRuleDetail/QcRuleDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/qualityInspection/QualityInspectionMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/replenishmentNotice/ReplenishmentNoticeMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/serialNumber/SerialNumberMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/shiftManage/ShiftManageMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/shiftMaterialDetail/ShiftMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/sowingDistributionDetails/SowingDistributionDetailsMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/sowingWall/SowingWallMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockOutOrder/StockOutOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockOutTaskOrder/StockOutTaskOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockReceiptNotice/NoticeOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/taskHandoverMaterialDetail/TaskHandoverMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/taskPickingMaterialDetail/TaskPickingMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/taskReceiptMaterialDetail/TaskReceiptMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/taskShelfMaterialDetail/TaskShelfMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/userCommonSettings/UserCommonSettingsMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/waveMaterialDetail/WaveMaterialDetailMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/waveOrder/WaveOrderMapper.xml create mode 100644 mhd_wms/src/main/resources/mapper/waveRule/WaveRuleMapper.xml diff --git a/mhd_wms/pom.xml b/mhd_wms/pom.xml new file mode 100644 index 000000000..ce92b5309 --- /dev/null +++ b/mhd_wms/pom.xml @@ -0,0 +1,170 @@ + + + 4.0.0 + + mhd + com.mhd + 3.6.0 + + com.mhd + mhd_wms + + mhd_wms + mhd_wms 仓储 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + bcpkix-jdk15on + org.bouncycastle + + + + + org.springframework.boot + spring-boot-starter-test + + + io.github.openfeign + feign-httpclient + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.csp + sentinel-datasource-nacos + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + com.fasterxml.jackson.core + jackson-databind + + + + + com.alibaba.fastjson2 + fastjson2 + + + + com.mhd + mhd-common-core + + + + com.mhd + mhd-common-log + + + + com.mhd + mhd-common-redis + + + + mysql + mysql-connector-java + + + + com.baomidou + mybatis-plus-boot-starter + 3.3.2 + + + + com.alibaba + druid-spring-boot-starter + 1.2.11 + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + + + com.mhd + mhd-common-security + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + + com.mhd + mhd-api-system + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + 2.1.1.RELEASE + + + + repackage + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + org.projectlombok + lombok + + + + + + + + diff --git a/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java new file mode 100644 index 000000000..8d1ba04b1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java @@ -0,0 +1,21 @@ +package com.mhd.wms; + +import com.alicp.jetcache.anno.config.EnableMethodCache; +import com.mhd.common.security.annotation.EnableRyFeignClients; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +@SpringBootApplication +@EnableRyFeignClients +@EnableDiscoveryClient +@MapperScan("com.mhd.wms.domain.**.mapper") +@EnableMethodCache(basePackages = "com.mhd.platform.domain.**.cache") +public class MhdWmsApplication { + + public static void main(String[] args) { + SpringApplication.run(MhdWmsApplication.class, args); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java new file mode 100644 index 000000000..4878cd60d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java @@ -0,0 +1,87 @@ +package com.mhd.wms.application.service.commonSettings; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; +import com.mhd.wms.domain.commonSettings.service.CommonSettingsDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 常用设置ApplicationService + * + * @author gen + * @date 2024-07-29 + */ +@Service +@Slf4j +public class CommonSettingsApplicationService { + @Autowired + private CommonSettingsDomainService commonSettingsDomainService; + + + /** + * 分页查询常用设置列表 + */ + + public List queryList(CommonSettingsDO commonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return commonSettingsDomainService.queryList(commonSettingsDO); + } + + + /** + * 新增常用设置 + */ + public Boolean insert(CommonSettingsDO commonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return commonSettingsDomainService.insert(commonSettingsDO); + } + + /** + * 修改常用设置 + */ + public Boolean update(CommonSettingsDO commonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return commonSettingsDomainService.update(commonSettingsDO); + } + + /** + * 批量删除常用设置 + */ + public boolean delete(Long[] commonSettingsIds) { + return commonSettingsDomainService.delete(commonSettingsIds); + } + + /** + * 获取常用设置详细信息 + */ + public CommonSettingsPO getInfo(Long commonSettingsId) + { + return commonSettingsDomainService.getInfo(commonSettingsId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java new file mode 100644 index 000000000..d7e19657e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.containerUsageRecord; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import com.mhd.wms.domain.containerUsageRecord.service.ContainerUsageRecordDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 容器使用记录ApplicationService + * + * @author gen + * @date 2024-08-22 + */ +@Service +@Slf4j +public class ContainerUsageRecordApplicationService { + @Autowired + private ContainerUsageRecordDomainService containerUsageRecordDomainService; + + + /** + * 分页查询容器使用记录列表 + */ + + public List queryList(ContainerUsageRecordDO containerUsageRecordDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + containerUsageRecordDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return containerUsageRecordDomainService.queryList(containerUsageRecordDO); + } + + + /** + * 新增容器使用记录 + */ + public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) { + + return containerUsageRecordDomainService.insert(containerUsageRecordDO); + } + + /** + * 修改容器使用记录 + */ + public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) { + return containerUsageRecordDomainService.update(containerUsageRecordDO); + } + + /** + * 批量删除容器使用记录 + */ + public boolean delete(String[] ids) { + return containerUsageRecordDomainService.delete(ids); + } + + /** + * 获取容器使用记录详细信息 + */ + public ContainerUsageRecordPO getInfo(String id) + { + return containerUsageRecordDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java new file mode 100644 index 000000000..e0a904dfb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java @@ -0,0 +1,112 @@ +package com.mhd.wms.application.service.deliveTask; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.deliveTask.service.DeliveTaskDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 下发任务ApplicationService + * + * @author gen + * @date 2024-07-26 + */ +@Service +@Slf4j +public class DeliveTaskApplicationService { + @Autowired + private DeliveTaskDomainService deliveTaskDomainService; + + + /** + * 分页查询下发任务列表 + */ + + public List queryList(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return deliveTaskDomainService.queryList(deliveTaskDO); + } + + public List queryListApp(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setOperatorsBy(loginUser.getUserid()); + } + } + return deliveTaskDomainService.queryListApp(deliveTaskDO); + } + + /** + * 批量 新增下发任务 + */ + public Boolean batchInsert(List deliveTaskDOList) { + + return deliveTaskDomainService.batchInsert(deliveTaskDOList); + } + + /** + * 批量删除下发任务 + */ + public boolean delete(Long[] deliverTaskIds) { + return deliveTaskDomainService.delete(deliverTaskIds); + } + + /** + * 获取下发任务详细信息 + */ + public DeliveTaskPO getInfo(Long deliverTaskId) + { + return deliveTaskDomainService.getInfo(deliverTaskId); + } + /** + * 任务下发接收操作 + */ + public int receive(Long deliverTaskId) + { + return deliveTaskDomainService.receive(deliverTaskId); + } + /** + * 任务下发接收操作 + */ + public int refuse(Long deliverTaskId) + { + return deliveTaskDomainService.refuse(deliverTaskId); + } + + /** + * 工作台查询 + */ + public DeliveTaskSumPO workbenchQuery() + { + return deliveTaskDomainService.workbenchQuery(); + } + + public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setOperatorsBy(loginUser.getUserid()); + } + } + return deliveTaskDomainService.querySum(deliveTaskDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java new file mode 100644 index 000000000..34cf8d9ab --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java @@ -0,0 +1,87 @@ +package com.mhd.wms.application.service.differentManage; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import com.mhd.wms.domain.differentManage.service.DifferentManageDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 差异单ApplicationService + * + * @author gen + * @date 2024-07-20 + */ +@Service +@Slf4j +public class DifferentManageApplicationService { + @Autowired + private DifferentManageDomainService differentManageDomainService; + + + /** + * 分页查询差异单列表 + */ + + public List queryList(DifferentManageDO differentManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + differentManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + differentManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return differentManageDomainService.queryList(differentManageDO); + } + + + /** + * 新增差异单 + */ + public Boolean insert(DifferentManageDO differentManageDO) { + + return differentManageDomainService.insert(differentManageDO); + } + + /** + * 修改差异单 + */ + public Boolean update(DifferentManageDO differentManageDO) { + return differentManageDomainService.update(differentManageDO); + } + + /** + * 批量删除差异单 + */ + public boolean delete(Long[] differentManageIds) { + return differentManageDomainService.delete(differentManageIds); + } + + /** + * 获取差异单详细信息 + */ + public DifferentManagePO getInfo(Long differentManageId) { + return differentManageDomainService.getInfo(differentManageId); + } + + public Boolean resetDifferent(DifferentManageDO differentManageDO){ + return differentManageDomainService.resetDifferent(differentManageDO); + } + public Boolean differentRollback(DifferentManageDO differentManageDO){ + return differentManageDomainService.differentRollback(differentManageDO); + } + + public DifferentManagePO getDifferentManageDO(Long differentManageId){ + return differentManageDomainService.getDifferentManageDO(differentManageId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java new file mode 100644 index 000000000..e8e544bc7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java @@ -0,0 +1,151 @@ +package com.mhd.wms.application.service.handoverTaskOrder; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.DateUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PlatformFeignPO; +import com.mhd.system.api.domain.PlatformUseTimeFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.ParseException; +import java.util.List; + +/** + * 交接作业单ApplicationService + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class HandoverTaskOrderApplicationService { + @Autowired + private HandoverTaskOrderDomainService handoverTaskOrderDomainService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询交接作业单列表 + */ + + public List queryList(HandoverTaskOrderDO handoverTaskOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + handoverTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return handoverTaskOrderDomainService.queryList(handoverTaskOrderDO); + } + + + /** + * 新增交接作业单 + */ + public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO) { + + return handoverTaskOrderDomainService.insert(handoverTaskOrderDO); + } + + /** + * 修改交接作业单 + */ + public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO) { + return handoverTaskOrderDomainService.update(handoverTaskOrderDO); + } + + /** + * 批量删除交接作业单 + */ + public boolean delete(Long[] outTaskOrderIds) { + return handoverTaskOrderDomainService.delete(outTaskOrderIds); + } + + /** + * 获取交接作业单详细信息 + */ + public HandoverTaskOrderPO getInfo(Long outTaskOrderId) + { + return handoverTaskOrderDomainService.getInfo(outTaskOrderId); + } + + /** + * 分配月台 + */ + public Boolean allocationPlatform(HandoverTaskOrderDO handoverTaskOrderDO) { + //封装月台信息 + platformParam(handoverTaskOrderDO); + return handoverTaskOrderDomainService.allocationPlatform(handoverTaskOrderDO); + } + + /** + * @description 释放月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + * @param handoverTaskOrderDO + * @return Boolean + */ + public Boolean releasePlatform(HandoverTaskOrderDO handoverTaskOrderDO){ + return handoverTaskOrderDomainService.releasePlatform(handoverTaskOrderDO); + } + + /** + * @description 完成交接 + * @author ZhouGY + * @date 2024/5/31 14:23 + * @param handoverTaskOrderDO + * @return Boolean + */ + public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){ + return handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO); + } + + + + /** + * @description 封装月台信息 + * @author ZhouGY + * @date 2024/5/13 10:45 + * @param handoverTaskOrderDO + */ + private void platformParam(HandoverTaskOrderDO handoverTaskOrderDO){ + //封装月台信息 + AjaxResult ajaxResult = systemServiceFeign.getPlatformInfoByPlatformId(handoverTaskOrderDO.getPlatformId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取月台信息失败"); + } + PlatformFeignPO platformFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), PlatformFeignPO.class); + handoverTaskOrderDO.setPlatformCode(platformFeignPO.getPlatformCode()); + handoverTaskOrderDO.setPlatformName(platformFeignPO.getPlatformName()); + + //封装月台使用时间信息 + AjaxResult ajaxResult2 = systemServiceFeign.getPlatformUseTimeInfoByPlatformUseTimeId(handoverTaskOrderDO.getPlatformId()); + if(!"200".equals(String.valueOf(ajaxResult2.get("code")))){ + throw new ServiceException("获取月台使用时间信息失败"); + } + PlatformUseTimeFeignPO platformUseTimeFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult2.get("data")), PlatformUseTimeFeignPO.class); + try { + handoverTaskOrderDO.setPlatformUseStartTime(DateUtils.parseDate(platformUseTimeFeignPO.getStartTime(), "HH:mm")); + handoverTaskOrderDO.setPlatformUseEndTime(DateUtils.parseDate(platformUseTimeFeignPO.getEndTime(), "HH:mm")); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java new file mode 100644 index 000000000..4d399367f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java @@ -0,0 +1,73 @@ +package com.mhd.wms.application.service.inMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.inMaterialDetail.service.InMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InMaterialDetailApplicationService { + @Autowired + private InMaterialDetailDomainService inMaterialDetailDomainService; + + + /** + * 分页查询物料明细列表 + */ + + public List queryList(InMaterialDetailDO inMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inMaterialDetailDomainService.queryList(inMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(InMaterialDetailDO inMaterialDetailDO) { + + return inMaterialDetailDomainService.insert(inMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(InMaterialDetailDO inMaterialDetailDO) { + return inMaterialDetailDomainService.update(inMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public boolean delete(Long[] materialDetailIds) { + return inMaterialDetailDomainService.delete(materialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public InMaterialDetailPO getInfo(Long materialDetailId) + { + return inMaterialDetailDomainService.getInfo(materialDetailId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java new file mode 100644 index 000000000..1714ae290 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.inMaterialDetailSerialNumber; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.service.InMaterialDetailSerialNumberDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细序列号ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InMaterialDetailSerialNumberApplicationService { + @Autowired + private InMaterialDetailSerialNumberDomainService inMaterialDetailSerialNumberDomainService; + + + /** + * 分页查询物料明细序列号列表 + */ + + public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + InMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inMaterialDetailSerialNumberDomainService.queryList(InMaterialDetailSerialNumberDO); + } + + + /** + * 新增物料明细序列号 + */ + public Boolean insert(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + + return inMaterialDetailSerialNumberDomainService.insert(InMaterialDetailSerialNumberDO); + } + + /** + * 修改物料明细序列号 + */ + public Boolean update(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + return inMaterialDetailSerialNumberDomainService.update(InMaterialDetailSerialNumberDO); + } + + /** + * 批量删除物料明细序列号 + */ + public boolean delete(Long[] materialDetailSerialNumberIds) { + return inMaterialDetailSerialNumberDomainService.delete(materialDetailSerialNumberIds); + } + + /** + * 获取物料明细序列号详细信息 + */ + public InMaterialDetailSerialNumberPO getInfo(Long materialDetailSerialNumberId) + { + return inMaterialDetailSerialNumberDomainService.getInfo(materialDetailSerialNumberId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java new file mode 100644 index 000000000..a9547a025 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java @@ -0,0 +1,78 @@ +package com.mhd.wms.application.service.inOrderAbnormal; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; +import com.mhd.wms.domain.inOrderAbnormal.service.InOrderAbnormalDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库异常单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InOrderAbnormalApplicationService { + @Autowired + private InOrderAbnormalDomainService inOrderAbnormalDomainService; + + + /** + * 分页查询入库异常单列表 + */ + + public List queryList(InOrderAbnormalDO inOrderAbnormalDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + inOrderAbnormalDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inOrderAbnormalDomainService.queryList(inOrderAbnormalDO); + } + + + /** + * 新增入库异常单 + */ + public Boolean insert(InOrderAbnormalDO inOrderAbnormalDO) { + + return inOrderAbnormalDomainService.insert(inOrderAbnormalDO); + } + + /** + * 修改入库异常单 + */ + public Boolean update(InOrderAbnormalDO inOrderAbnormalDO) { + return inOrderAbnormalDomainService.update(inOrderAbnormalDO); + } + + /** + * 批量删除入库异常单 + */ + public boolean delete(Long[] inOrderAbnormalIds) { + return inOrderAbnormalDomainService.delete(inOrderAbnormalIds); + } + + /** + * 获取入库异常单详细信息 + */ + public InOrderAbnormalPO getInfo(Long inOrderAbnormalId) + { + return inOrderAbnormalDomainService.getInfo(inOrderAbnormalId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java new file mode 100644 index 000000000..e376cc272 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java @@ -0,0 +1,102 @@ +package com.mhd.wms.application.service.inventoryAdjustmentRecord; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.service.InventoryAdjustmentRecordDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存调整记录ApplicationService + * + * @author gen + * @date 2024-07-17 + */ +@Service +@Slf4j +public class InventoryAdjustmentRecordApplicationService { + @Autowired + private InventoryAdjustmentRecordDomainService inventoryAdjustmentRecordDomainService; + + + /** + * 分页查询库存调整记录列表 + */ + + public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryAdjustmentRecordDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + inventoryAdjustmentRecordDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryAdjustmentRecordDomainService.queryList(inventoryAdjustmentRecordDO); + } + + + /** + * 新增库存调整记录 + */ + public Boolean insert(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + + return inventoryAdjustmentRecordDomainService.insert(inventoryAdjustmentRecordDO); + } + + /** + * 修改库存调整记录 + */ + public Boolean update(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordDomainService.update(inventoryAdjustmentRecordDO); + } + + /** + * 批量删除库存调整记录 + */ + public boolean delete(Long[] inventoryAdjustmentIds) { + return inventoryAdjustmentRecordDomainService.delete(inventoryAdjustmentIds); + } + + /** + * 获取库存调整记录详细信息 + */ + public InventoryAdjustmentRecordPO getInfo(Long inventoryAdjustmentId) + { + return inventoryAdjustmentRecordDomainService.getInfo(inventoryAdjustmentId); + } + + /** + * @description:库存调整 + * @param inventoryAdjustmentRecordDO + * @return: java.lang.Boolean + * @author: lianzj + * @time: 2024-07-18 9:29:40 + */ + public Boolean inventoryAdjust(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordDomainService.inventoryAdjust(inventoryAdjustmentRecordDO); + } + + /** + * @description:库存冻结 + * @param inventoryAdjustmentRecordDO + * @return: java.lang.Boolean + * @author: lianzj + * @time: 2024-07-18 14:58:15 + */ + public Boolean inventoryFrozen(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordDomainService.inventoryFrozen(inventoryAdjustmentRecordDO); + } + + public Boolean inventoryFrozenForAll(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordDomainService.inventoryFrozenForAll(inventoryAdjustmentRecordDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java new file mode 100644 index 000000000..45042d97b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java @@ -0,0 +1,244 @@ +package com.mhd.wms.application.service.inventoryAllocationRule; + +import cn.hutool.json.JSONUtil; +import com.github.pagehelper.util.StringUtil; +import com.mhd.common.core.domain.po.SysDictDataVo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; +import com.mhd.wms.domain.inventoryAllocationRule.service.InventoryAllocationRuleDomainService; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.service.InventoryAllocationRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +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.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 库存分配规则ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryAllocationRuleApplicationService { + @Autowired + private InventoryAllocationRuleDomainService inventoryAllocationRuleDomainService; + + @Resource + private InventoryAllocationRuleDetailDomainService inventoryAllocationRuleDetailDomainService; + + @Resource + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询库存分配规则列表 + */ + + public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryAllocationRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inventoryAllocationRuleDomainService.queryList(inventoryAllocationRuleDO); + } + + + /** + * 新增库存分配规则 + */ + + @Transactional + public Boolean insert(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryAllocationRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + Long id = inventoryAllocationRuleDomainService.insertToId(inventoryAllocationRuleDO); + //根据ID查询所有的库存分配规则明细 + Long[] ids = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleId(id); + //删除当前的库存分配规则明细信息 + inventoryAllocationRuleDetailDomainService.delete(ids); + //批量新增所有的库存分配规则明细 + List inventoryAllocationRuleDetailDOS = inventoryAllocationRuleDO.getInventoryAllocationRuleDetailDOS(); + inventoryAllocationRuleDetailDOS.stream().forEach(inventoryAllocationRuleDetailDO -> { + //库位种类 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationKindId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位种类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationKindId())) { + throw new ServiceException("库位种类未找到"); + } + inventoryAllocationRuleDetailDO.setLocationKind(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationKindId())); + } + //库位种类 end + //库位分类 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationTypeId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setLocationType(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationTypeId())); + } + //库位分类 end + //混放策略 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMixingSlgId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.CONFUSION_STRATEGY.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMixingSlgId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setMixingSlg(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMixingSlgId())); + } + //混放策略 end + //物料状态 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMaterialStatusId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMaterialStatusId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setMaterialStatus(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMaterialStatusId())); + } + //物料状态 end + inventoryAllocationRuleDetailDO.setInventoryAllocationRuleId(id); + + }); + return inventoryAllocationRuleDetailDomainService.batchInsert(inventoryAllocationRuleDetailDOS); + } + + /** + * 修改库存分配规则 + */ + public Boolean update(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + inventoryAllocationRuleDomainService.update(inventoryAllocationRuleDO); + //根据ID查询所有的库存分配规则明细 + Long[] ids = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleId(inventoryAllocationRuleDO.getId()); + //删除当前的库存分配规则明细信息 + inventoryAllocationRuleDetailDomainService.delete(ids); + //批量新增所有的库存分配规则明细 + List inventoryAllocationRuleDetailDOS = inventoryAllocationRuleDO.getInventoryAllocationRuleDetailDOS(); + inventoryAllocationRuleDetailDOS.stream().forEach(inventoryAllocationRuleDetailDO -> { + //库位种类 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationKindId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位种类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationKindId())) { + throw new ServiceException("库位种类未找到"); + } + inventoryAllocationRuleDetailDO.setLocationKind(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationKindId())); + } + //库位种类 end + //库位分类 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationTypeId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setLocationType(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationTypeId())); + } + //库位分类 end + //混放策略 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMixingSlgId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.CONFUSION_STRATEGY.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMixingSlgId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setMixingSlg(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMixingSlgId())); + } + //混放策略 end + //物料状态 start + if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMaterialStatusId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMaterialStatusId())) { + throw new ServiceException("数量类型未找到"); + } + inventoryAllocationRuleDetailDO.setMaterialStatus(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMaterialStatusId())); + } + inventoryAllocationRuleDetailDO.setInventoryAllocationRuleId(inventoryAllocationRuleDO.getId()); + }); + return inventoryAllocationRuleDetailDomainService.batchInsert(inventoryAllocationRuleDetailDOS); + } + + /** + * 批量删除库存分配规则 + */ + @Transactional + public boolean delete(Long[] ids) { + inventoryAllocationRuleDomainService.delete(ids); + //根据库存分配规则ID查询所有的库存分配规则明细信息 + Long[] inventoryAllocationRuleDetailIds = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleIds(ids); + return inventoryAllocationRuleDetailDomainService.delete(inventoryAllocationRuleDetailIds); + } + + /** + * 获取库存分配规则详细信息 + */ + public InventoryAllocationRulePO getInfo(Long id) + { + InventoryAllocationRulePO inventoryAllocationRulePO = inventoryAllocationRuleDomainService.getInfo(id); + //根据库存分配ID查询库存分配明细信息 + List inventoryAllocationRuleDetailPOS = + inventoryAllocationRuleDetailDomainService.selectListByInventoryAllocationRuleId(id); + + inventoryAllocationRulePO.setInventoryAllocationRuleDetailList(inventoryAllocationRuleDetailPOS); + return inventoryAllocationRulePO; + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java new file mode 100644 index 000000000..742f8509c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.inventoryAllocationRuleDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.service.InventoryAllocationRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存规则分配明细ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryAllocationRuleDetailApplicationService { + @Autowired + private InventoryAllocationRuleDetailDomainService inventoryAllocationRuleDetailDomainService; + + + /** + * 分页查询库存规则分配明细列表 + */ + + public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryAllocationRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inventoryAllocationRuleDetailDomainService.queryList(inventoryAllocationRuleDetailDO); + } + + + /** + * 新增库存规则分配明细 + */ + public Boolean insert(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + + return inventoryAllocationRuleDetailDomainService.insert(inventoryAllocationRuleDetailDO); + } + + /** + * 修改库存规则分配明细 + */ + public Boolean update(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + return inventoryAllocationRuleDetailDomainService.update(inventoryAllocationRuleDetailDO); + } + + /** + * 批量删除库存规则分配明细 + */ + public boolean delete(Long[] ids) { + return inventoryAllocationRuleDetailDomainService.delete(ids); + } + + /** + * 获取库存规则分配明细详细信息 + */ + public InventoryAllocationRuleDetailPO getInfo(Long id) + { + return inventoryAllocationRuleDetailDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java new file mode 100644 index 000000000..1d66b320e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java @@ -0,0 +1,62 @@ +package com.mhd.wms.application.service.inventoryStandingDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.inventoryStandingDetail.service.InventoryStandingDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存台账追溯详情ApplicationService + * + * @author gen + * @date 2024-07-13 + */ +@Service +@Slf4j +public class InventoryStandingDetailApplicationService { + @Autowired + private InventoryStandingDetailDomainService inventoryStandingDetailDomainService; + + + /** + * 分页查询库存台账追溯详情列表 + */ + + public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryStandingDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + inventoryStandingDetailDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryStandingDetailDomainService.queryList(inventoryStandingDetailDO); + } + + /** + * 批量删除库存台账追溯详情 + */ + public boolean delete(Long[] inventoryStandingDetailIds) { + return inventoryStandingDetailDomainService.delete(inventoryStandingDetailIds); + } + + /** + * 获取库存台账追溯详情详细信息 + */ + public InventoryStandingDetailPO getInfo(Long inventoryStandingDetailId) + { + return inventoryStandingDetailDomainService.getInfo(inventoryStandingDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java new file mode 100644 index 000000000..c3b6c1d51 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java @@ -0,0 +1,83 @@ +package com.mhd.wms.application.service.inventoryStandingReport; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; +import com.mhd.wms.domain.inventoryStandingReport.service.InventoryStandingReportDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存台账报ApplicationService + * + * @author gen + * @date 2024-07-12 + */ +@Service +@Slf4j +public class InventoryStandingReportApplicationService { + @Autowired + private InventoryStandingReportDomainService inventoryStandingReportDomainService; + + + /** + * 分页查询库存台账报列表 + */ + + public List queryList(InventoryStandingReportDO inventoryStandingReportDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryStandingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + inventoryStandingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryStandingReportDomainService.queryList(inventoryStandingReportDO); + } + + + /** + * 新增库存台账报 + */ + public Boolean insert(InventoryStandingReportDO inventoryStandingReportDO) { + + return inventoryStandingReportDomainService.insert(inventoryStandingReportDO); + } + + /** + * 修改库存台账报 + */ + public Boolean update(InventoryStandingReportDO inventoryStandingReportDO) { + return inventoryStandingReportDomainService.update(inventoryStandingReportDO); + } + + /** + * 批量删除库存台账报 + */ + public boolean delete(Long[] inventoryStandingIds) { + return inventoryStandingReportDomainService.delete(inventoryStandingIds); + } + + /** + * 获取库存台账报详细信息 + */ + public InventoryStandingReportPO getInfo(Long inventoryStandingId) + { + return inventoryStandingReportDomainService.getInfo(inventoryStandingId); + } + + + public InventoryStandingReportPO getInventoryStandingInfo(InventoryStandingReportDO inventoryStandingReportDO) + { + return inventoryStandingReportDomainService.getInventoryStandingInfo(inventoryStandingReportDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java new file mode 100644 index 000000000..25ff80ce0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java @@ -0,0 +1,119 @@ +package com.mhd.wms.application.service.inventoryTurnoverRule; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; +import com.mhd.wms.domain.inventoryTurnoverRule.service.InventoryTurnoverRuleDomainService; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.service.InventoryTurnoverRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +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.List; + +/** + * 库存周转规则ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryTurnoverRuleApplicationService { + @Autowired + private InventoryTurnoverRuleDomainService inventoryTurnoverRuleDomainService; + + + @Resource + private InventoryTurnoverRuleDetailDomainService inventoryTurnoverRuleDetailDomainService; + + + /** + * 分页查询库存周转规则列表 + */ + + public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryTurnoverRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inventoryTurnoverRuleDomainService.queryList(inventoryTurnoverRuleDO); + } + + + /** + * 新增库存周转规则 + */ + @Transactional + public Boolean insert(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryTurnoverRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + Long inventoryTurnoverRuleId = inventoryTurnoverRuleDomainService.insertData(inventoryTurnoverRuleDO); + //根据周转规则明细ID查询出原有的数据 + Long[] ids = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleId); + inventoryTurnoverRuleDetailDomainService.delete(ids);//根据周转规则明细ID删除旧数据 + List inventoryTurnoverRuleDetailDOS = inventoryTurnoverRuleDO.getInventoryTurnoverRuleDetailDOS(); + inventoryTurnoverRuleDetailDOS.stream().forEach(inventoryTurnoverRuleDetailDO -> { + inventoryTurnoverRuleDetailDO.setInventoryTurnoverRuleId(inventoryTurnoverRuleId); + }); + return inventoryTurnoverRuleDetailDomainService.batchInsert(inventoryTurnoverRuleDetailDOS); + } + + /** + * 修改库存周转规则 + */ + @Transactional + public Boolean update(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + inventoryTurnoverRuleDomainService.update(inventoryTurnoverRuleDO); + //根据周转规则明细ID查询出原有的数据 + Long[] ids = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleDO.getId()); + inventoryTurnoverRuleDetailDomainService.delete(ids);//根据周转规则明细ID删除旧数据 + List inventoryTurnoverRuleDetailDOS = inventoryTurnoverRuleDO.getInventoryTurnoverRuleDetailDOS(); + inventoryTurnoverRuleDetailDOS.stream().forEach(inventoryTurnoverRuleDetailDO -> { + inventoryTurnoverRuleDetailDO.setInventoryTurnoverRuleId(inventoryTurnoverRuleDO.getId()); + }); + return inventoryTurnoverRuleDetailDomainService.batchInsert(inventoryTurnoverRuleDetailDOS); + } + + /** + * 批量删除库存周转规则 + */ + @Transactional + public boolean delete(Long[] ids) { + inventoryTurnoverRuleDomainService.delete(ids); + //根据周转规则明细ID查询出原有的数据 + Long[] inventoryTurnoverRuleIds = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleIds(ids); + return inventoryTurnoverRuleDetailDomainService.delete(inventoryTurnoverRuleIds);//根据周转规则明细ID删除旧数据; + } + + /** + * 获取库存周转规则详细信息 + */ + public InventoryTurnoverRulePO getInfo(Long id) + { + + InventoryTurnoverRulePO inventoryTurnoverRulePO = inventoryTurnoverRuleDomainService.getInfo(id); + //根据周转规则ID获取明细信息 + List inventoryTurnoverRuleDetailPOList = + inventoryTurnoverRuleDetailDomainService.selectListByInventoryTurnoverRuleId(id); + + inventoryTurnoverRulePO.setInventoryTurnoverRuleDetailList(inventoryTurnoverRuleDetailPOList); + + return inventoryTurnoverRulePO; + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java new file mode 100644 index 000000000..f100ad06e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.inventoryTurnoverRuleDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.service.InventoryTurnoverRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存周转规则明细ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryTurnoverRuleDetailApplicationService { + @Autowired + private InventoryTurnoverRuleDetailDomainService inventoryTurnoverRuleDetailDomainService; + + + /** + * 分页查询库存周转规则明细列表 + */ + + public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryTurnoverRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return inventoryTurnoverRuleDetailDomainService.queryList(inventoryTurnoverRuleDetailDO); + } + + + /** + * 新增库存周转规则明细 + */ + public Boolean insert(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + + return inventoryTurnoverRuleDetailDomainService.insert(inventoryTurnoverRuleDetailDO); + } + + /** + * 修改库存周转规则明细 + */ + public Boolean update(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + return inventoryTurnoverRuleDetailDomainService.update(inventoryTurnoverRuleDetailDO); + } + + /** + * 批量删除库存周转规则明细 + */ + public boolean delete(Long[] ids) { + return inventoryTurnoverRuleDetailDomainService.delete(ids); + } + + /** + * 获取库存周转规则明细详细信息 + */ + public InventoryTurnoverRuleDetailPO getInfo(Long id) + { + return inventoryTurnoverRuleDetailDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java new file mode 100644 index 000000000..750620c28 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java @@ -0,0 +1,199 @@ +package com.mhd.wms.application.service.inventoryWarningAnalyze; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; +import com.mhd.wms.domain.inventoryWarningAnalyze.service.InventoryWarningAnalyzeDomainService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.service.MaterialBaseInfoDomainService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 库存预警分析ApplicationService + * + * @author gen + * @date 2024-07-24 + */ +@Service +@Slf4j +public class InventoryWarningAnalyzeApplicationService { + @Autowired + private InventoryWarningAnalyzeDomainService inventoryWarningAnalyzeDomainService; + + @Resource + private MaterialInventoryDomainService materialInventoryDomainService; + + @Resource + private MaterialInventoryWarningDomainService materialInventoryWarningDomainService; + + @Resource + private MaterialBaseInfoDomainService materialBaseInfoDomainService; + + /** + * 分页查询库存预警分析列表 + */ + + public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + inventoryWarningAnalyzeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + inventoryWarningAnalyzeDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + List inventoryWarningAnalyzePOS = inventoryWarningAnalyzeDomainService.queryList(inventoryWarningAnalyzeDO); + for (InventoryWarningAnalyzePO inventoryWarningAnalyzePO : inventoryWarningAnalyzePOS) { + StringBuilder sb = new StringBuilder(); + if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getWarehouseName())) { + sb.append(inventoryWarningAnalyzePO.getWarehouseName()); + } + if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getStorageName())) { + sb.append("-").append(inventoryWarningAnalyzePO.getStorageName()); + } + if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getStorageLocationName())) { + sb.append("-").append(inventoryWarningAnalyzePO.getStorageLocationName()); + } + inventoryWarningAnalyzePO.setEarlyWarningPosition(sb.toString()); + } + return inventoryWarningAnalyzePOS; + } + + + /** + * 新增库存预警分析 + */ + public Boolean insert(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + + return inventoryWarningAnalyzeDomainService.insert(inventoryWarningAnalyzeDO); + } + + /** + * 修改库存预警分析 + */ + public Boolean update(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + return inventoryWarningAnalyzeDomainService.update(inventoryWarningAnalyzeDO); + } + + /** + * 批量删除库存预警分析 + */ + public boolean delete(Long[] inventoryWarningAnalyzeIds) { + return inventoryWarningAnalyzeDomainService.delete(inventoryWarningAnalyzeIds); + } + + /** + * 获取库存预警分析详细信息 + */ + public InventoryWarningAnalyzePO getInfo(Long inventoryWarningAnalyzeId) + { + return inventoryWarningAnalyzeDomainService.getInfo(inventoryWarningAnalyzeId); + } + + + + public void inventoryWarningTask() { + //查询所有的物料库存预警信息 未删除的 + List materialInventoryWarningPOList = materialInventoryWarningDomainService.queryAllList(); + List analyzeList = new ArrayList<>(); + for (MaterialInventoryWarningPO materialInventoryWarningPO : materialInventoryWarningPOList) { + //根据 物料基础信息id、仓库id、库区id、库位id、一级组织表ID、货主ID 去物料库存表中查询物料信息 + MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); + materialInventoryDO.setMaterialBaseInfoId(materialInventoryWarningPO.getMaterialBaseInfoId()); + materialInventoryDO.setWarehouseId(materialInventoryWarningPO.getWarehouseId()); + materialInventoryDO.setStorageSectionId(materialInventoryWarningPO.getStorageSectionId()); + materialInventoryDO.setStorageLocationId(materialInventoryWarningPO.getStorageLocationId()); + materialInventoryDO.setTopOrganizationId(materialInventoryWarningPO.getTopOrganizationId()); + materialInventoryDO.setShipperId(materialInventoryWarningPO.getShipperId()); + MaterialInventoryPO materialInventoryPO = materialInventoryDomainService.selectOneByWhere(materialInventoryDO); + + if (ObjectUtil.isNull(materialInventoryPO)) { + //如果物料库存为null,则结束本次循环继续下次循环 + continue; + } + //获取库位上限和下限 + BigDecimal minTemperature = materialInventoryWarningPO.getMinTemperature(); + BigDecimal maxTemperature = materialInventoryWarningPO.getMaxTemperature(); + //物料信息的当前库存 + BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity(); + Integer warningAnalyzeType = 0;//预警类型 + BigDecimal warningStandardQuantity = BigDecimal.ZERO; + if (inventoryQuantity.compareTo(minTemperature) < 0) {//库存不足 + warningAnalyzeType = 1; + warningStandardQuantity = minTemperature; + } + + if (inventoryQuantity.compareTo(maxTemperature) > 0) {//库存超限 + warningAnalyzeType = 2; + warningStandardQuantity = maxTemperature; + } + //如果预警类型不等于0增加库存预警分析表记录 + if (warningAnalyzeType != 0) { + InventoryWarningAnalyze warningAnalyze = new InventoryWarningAnalyze(); + warningAnalyze.setOrganizationId(materialInventoryPO.getOrganizationId()); + warningAnalyze.setOrganizationName(materialInventoryPO.getOrganizationName()); + warningAnalyze.setTopOrganizationId(materialInventoryPO.getTopOrganizationId()); + warningAnalyze.setMaterialBaseInfoId(materialInventoryPO.getMaterialBaseInfoId()); + //查询物料信息 + MaterialBaseInfoPO materialBaseInfoPo = materialBaseInfoDomainService.selectOneByID(materialInventoryPO.getMaterialBaseInfoId()); + if (ObjectUtil.isNotNull(materialBaseInfoPo)) { + warningAnalyze.setMaterialName(materialBaseInfoPo.getMaterialName()); + warningAnalyze.setMaterialCode(materialBaseInfoPo.getMaterialCode()); + warningAnalyze.setPackId(materialBaseInfoPo.getPackId()); + warningAnalyze.setPackCode(materialBaseInfoPo.getPackCode()); + warningAnalyze.setPackName(materialBaseInfoPo.getPackName()); + warningAnalyze.setShipperId(materialBaseInfoPo.getShipperId()); + warningAnalyze.setShipperName(materialBaseInfoPo.getShipperName()); + warningAnalyze.setShipperCode(materialBaseInfoPo.getShipperCode()); + warningAnalyze.setBarCode(materialBaseInfoPo.getBarCode()); + warningAnalyze.setUnitQuantity(materialBaseInfoPo.getUnitNumber());//单位数量 + } + warningAnalyze.setWarehouseId(materialInventoryPO.getWarehouseId()); + warningAnalyze.setWarehouseCode(materialInventoryPO.getWarehouseCode()); + warningAnalyze.setWarehouseName(materialInventoryPO.getWarehouseName()); + warningAnalyze.setStorageSectionId(materialInventoryPO.getStorageSectionId()); + warningAnalyze.setStorageCode(materialInventoryPO.getStorageCode()); + warningAnalyze.setStorageName(materialInventoryPO.getStorageName()); + warningAnalyze.setStorageLocationId(materialInventoryPO.getStorageLocationId()); + warningAnalyze.setStorageLocationCode(materialInventoryPO.getStorageLocationCode()); + warningAnalyze.setStorageLocationName(materialInventoryPO.getStorageLocationName()); + warningAnalyze.setPackDetailId(materialInventoryWarningPO.getPackDetailId()); + warningAnalyze.setUnitCode(materialInventoryWarningPO.getUnitCode()); + warningAnalyze.setUnitName(materialInventoryWarningPO.getName()); + warningAnalyze.setInventoryQuantity(materialInventoryPO.getInventoryQuantity()); + warningAnalyze.setWarningAnalyzeNumber(OrderSequence.getOrderCode("YJ"));//预警单号 + warningAnalyze.setWarningAnalyzeType(warningAnalyzeType); + warningAnalyze.setWarningStandardQuantity(warningStandardQuantity);//库存标准预警数 + warningAnalyze.setWarningTime(new Date()); + warningAnalyze.setRemark(""); + warningAnalyze.setCreateTime(new Date()); + warningAnalyze.setUpdateTime(new Date()); + warningAnalyze.setDelFlag(1); + + analyzeList.add(warningAnalyze); + } + } + + inventoryWarningAnalyzeDomainService.batchInsert(analyzeList); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java new file mode 100644 index 000000000..16c4b9847 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java @@ -0,0 +1,237 @@ +package com.mhd.wms.application.service.investigationManage; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.domain.investigationManage.service.InvestigationManageDomainService; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.domain.investigetionManageDetail.service.InvestigetionManageDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 盘点管理ApplicationService + * + * @author gen + * @date 2024-07-10 + */ +@Service +@Slf4j +public class InvestigationManageApplicationService { + @Autowired + private InvestigationManageDomainService investigationManageDomainService; + @Autowired + private InvestigetionManageDetailDomainService investigetionManageDetailDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询盘点管理列表 + */ + + public List queryList(InvestigationManageDO investigationManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + investigationManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + investigationManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return investigationManageDomainService.queryList(investigationManageDO); + } + + + /** + * 新增盘点管理 + */ + public Boolean insert(InvestigationManageDO investigationManageDO) { + //封装仓库信息 + warehouseParam(investigationManageDO); + return investigationManageDomainService.insert(investigationManageDO); + } + + /** + * 修改盘点管理 + */ + public Boolean update(InvestigationManageDO investigationManageDO) { + //封装仓库信息 + warehouseParam(investigationManageDO); + return investigationManageDomainService.update(investigationManageDO); + } + + /** + * 批量删除盘点管理 + */ + public boolean delete(Long[] investigationManageIds) { + return investigationManageDomainService.delete(investigationManageIds); + } + + /** + * 获取盘点管理详细信息 + */ + public InvestigationManagePO getInfo(Long investigationManageId) { + return investigationManageDomainService.getInfo(investigationManageId); + } + + /** + * 审核 + */ + public Boolean auditState(InvestigationManageDO investigationManageDO){ + return investigationManageDomainService.auditState(investigationManageDO); + } + + public Boolean taskDistribution(InvestigationManageDO investigationManageDO){ + //设置作业人员信息 + operatorsParam(investigationManageDO); + return investigationManageDomainService.taskDistribution(investigationManageDO); + } + + public Boolean investigationCount(InvestigationManageDO investigationManageDO){ + return investigationManageDomainService.investigationCount(investigationManageDO); + } + + /** + * 完成盘点 + */ + public Boolean finishInvestigation(Long investigationManageId){ + return investigationManageDomainService.finishInvestigation(investigationManageId); + } + + + /** + * 按库位拣货 获取拣货作业单详细信息 + */ + public InvestigationManagePO getInfoByStorageLocation(Long investigationManageId) + { + return investigationManageDomainService.getInfoByStorageLocation(investigationManageId); + } + + /** + *按物料拣货 获取拣货作业单详细信息 + */ + public InvestigationManagePO getInfoByMaterial(Long investigationManageId) + { + return investigationManageDomainService.getInfoByMaterial(investigationManageId); + } + + /** + * @description 按物料分组 盘点 + * @author ZhouGY + * @date 2024/7/20 15:07 + * @param investigationManageDO + * @return InvestigationManagePO + */ + public Boolean investigationPickingByMaterial(InvestigationManageDO investigationManageDO){ + InvestigationManageDO assembleInvestigationManageDO = assembleParamByInvestigationManage(investigationManageDO); + return investigationManageDomainService.investigationPickingByMaterial(assembleInvestigationManageDO); + } + + /** + * @description 盘点 装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param investigationManageDO + * @return Boolean + */ + private InvestigationManageDO assembleParamByInvestigationManage(InvestigationManageDO investigationManageDO) { + InvestigationManagePO investigationManagePO = investigationManageDomainService.getInfo(investigationManageDO.getInvestigationManageId()); + if (investigationManagePO == null){ + throw new ServiceException("盘点单不存在"); + } + if (investigationManagePO.getInvestigationStatus() > 3) { + throw new ServiceException("盘点单已盘点完成"); + } + InvestigationManageDO returnInvestigationManageDO = new InvestigationManageDO(); + returnInvestigationManageDO.setUpdateTime(investigationManageDO.getUpdateTime()); + returnInvestigationManageDO.setInvestigationManageId(investigationManagePO.getInvestigationManageId()); + returnInvestigationManageDO.setOrganizationId(investigationManagePO.getOrganizationId()); + returnInvestigationManageDO.setOrganizationName(investigationManagePO.getOrganizationName()); + returnInvestigationManageDO.setTopOrganizationId(investigationManagePO.getTopOrganizationId()); + returnInvestigationManageDO.setInvestigationNumber(investigationManagePO.getInvestigationNumber()); + InvestigetionManageDetailDO investigetionManageDetailDOByQuery = new InvestigetionManageDetailDO(); + investigetionManageDetailDOByQuery.setInvestigationNumber(investigationManagePO.getInvestigationNumber()); + List investigetionManageDetailPODbList = investigetionManageDetailDomainService.queryList(investigetionManageDetailDOByQuery); + Map taskPickingMaterialDetailDbMap = investigetionManageDetailPODbList.stream().collect(Collectors.toMap(InvestigetionManageDetailPO::getInvestigationManageDetailId, Function.identity())); + List returnInvestigetionManageDetailDOList = new ArrayList<>(); + for (InvestigetionManageDetailDO investigetionManageDetailDO : investigationManageDO.getInvestigetionManageDetailList()){ + //设置物料更多属性信息 + InvestigetionManageDetailPO investigetionManageDetailPO = taskPickingMaterialDetailDbMap.get(investigetionManageDetailDO.getInvestigationManageDetailId()); + if (investigetionManageDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (ObjectUtil.isNull(investigetionManageDetailDO.getInvestigationQuantity()) || investigetionManageDetailDO.getInvestigationQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进盘点直接跳过 + continue; + } + InvestigetionManageDetailDO returnInvestigetionManageDetailDO = new InvestigetionManageDetailDO(); + BeanUtils.copyProperties(investigetionManageDetailPO, returnInvestigetionManageDetailDO); + returnInvestigetionManageDetailDO.setInvestigationQuantity(investigetionManageDetailDO.getInvestigationQuantity()); + returnInvestigetionManageDetailDOList.add(returnInvestigetionManageDetailDO); + } + returnInvestigationManageDO.setInvestigetionManageDetailList(returnInvestigetionManageDetailDOList); + return returnInvestigationManageDO; + } + + + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param investigationManageDO + */ + private void operatorsParam(InvestigationManageDO investigationManageDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(investigationManageDO.getOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + investigationManageDO.setOperatorsName(userPo.getUserName()); + } + + /** + * @description 封装仓库信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param investigationManageDO + */ + private void warehouseParam(InvestigationManageDO investigationManageDO){ + if (ObjectUtil.isNull(investigationManageDO.getWarehouseId())){ + throw new ServiceException("仓库信息不能为空"); + } + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(investigationManageDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + investigationManageDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + investigationManageDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java new file mode 100644 index 000000000..b614dc095 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.investigetionManageDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.domain.investigetionManageDetail.service.InvestigetionManageDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 盘点详情管理ApplicationService + * + * @author gen + * @date 2024-07-10 + */ +@Service +@Slf4j +public class InvestigetionManageDetailApplicationService { + @Autowired + private InvestigetionManageDetailDomainService investigetionManageDetailDomainService; + + + /** + * 分页查询盘点详情管理列表 + */ + + public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + investigetionManageDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return investigetionManageDetailDomainService.queryList(investigetionManageDetailDO); + } + + + /** + * 新增盘点详情管理 + */ + public Boolean insert(InvestigetionManageDetailDO investigetionManageDetailDO) { + + return investigetionManageDetailDomainService.insert(investigetionManageDetailDO); + } + + /** + * 修改盘点详情管理 + */ + public Boolean update(InvestigetionManageDetailDO investigetionManageDetailDO) { + return investigetionManageDetailDomainService.update(investigetionManageDetailDO); + } + + /** + * 批量删除盘点详情管理 + */ + public boolean delete(Long[] investigationManageDetailIds) { + return investigetionManageDetailDomainService.delete(investigationManageDetailIds); + } + + /** + * 获取盘点详情管理详细信息 + */ + public InvestigetionManageDetailPO getInfo(Long investigationManageDetailId) + { + return investigetionManageDetailDomainService.getInfo(investigationManageDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java new file mode 100644 index 000000000..93879fc4d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.materialBarCode; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料条码信息ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialBarCodeApplicationService { + @Autowired + private MaterialBarCodeDomainService materialBarCodeDomainService; + + + /** + * 分页查询物料条码信息列表 + */ + + public List queryList(MaterialBarCodeDO materialBarCodeDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialBarCodeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialBarCodeDomainService.queryList(materialBarCodeDO); + } + + + /** + * 新增物料条码信息 + */ + public Boolean insert(MaterialBarCodeDO materialBarCodeDO) { + + return materialBarCodeDomainService.insert(materialBarCodeDO); + } + + /** + * 修改物料条码信息 + */ + public Boolean update(MaterialBarCodeDO materialBarCodeDO) { + return materialBarCodeDomainService.update(materialBarCodeDO); + } + + /** + * 批量删除物料条码信息 + */ + public boolean delete(Long[] materialBarCodeIds) { + return materialBarCodeDomainService.delete(materialBarCodeIds); + } + + /** + * 获取物料条码信息详细信息 + */ + public MaterialBarCodePO getInfo(Long materialBarCodeId) + { + return materialBarCodeDomainService.getInfo(materialBarCodeId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java new file mode 100644 index 000000000..37aac16d1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java @@ -0,0 +1,135 @@ +package com.mhd.wms.application.service.materialBaseInfo; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.domain.materialBaseInfo.service.MaterialBaseInfoDomainService; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService; +import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 物料基础信息ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialBaseInfoApplicationService { + @Autowired + private MaterialBaseInfoDomainService materialBaseInfoDomainService; + @Autowired + private MaterialGoodsRuleDomainService materialGoodsRuleDomainService; + @Autowired + private MaterialCommonDomainService materialCommonDomainService; + @Autowired + private MaterialWarehouseControlDomainService materialWarehouseControlDomainService; + @Autowired + private MaterialInventoryWarningDomainService materialInventoryWarningDomainService; + @Autowired + private MaterialBarCodeDomainService materialBarCodeDomainService; + + + /** + * 分页查询物料基础信息列表 + */ + + public List queryList(MaterialBaseInfoDO materialBaseInfoDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialBaseInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialBaseInfoDomainService.queryList(materialBaseInfoDO); + } + + + /** + * 新增物料基础信息 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean insert(MaterialBaseInfoDO materialBaseInfoDO) { + Long materialBaseInfoId = materialBaseInfoDomainService.insert(materialBaseInfoDO); + materialBaseInfoDO.setMaterialBaseInfoId(materialBaseInfoId); + //商品规则 + MaterialGoodsRuleDO materialGoodsRuleDO = materialBaseInfoDO.getMaterialGoodsRule(); + materialGoodsRuleDO.setMaterialBaseInfoId(materialBaseInfoId); + materialGoodsRuleDomainService.insert(materialGoodsRuleDO); + //公共信息 + MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon(); + materialCommonDO.setMaterialBaseInfoId(materialBaseInfoId); + materialCommonDomainService.insert(materialCommonDO); + //仓库控制信息 + MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl(); + materialWarehouseControlDO.setMaterialBaseInfoId(materialBaseInfoId); + materialWarehouseControlDomainService.insert(materialWarehouseControlDO); + //库存预警 + materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO); + //条码信息 + materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO); + return true; + } + + /** + * 修改物料基础信息 + */ + public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) { + materialBaseInfoDomainService.update(materialBaseInfoDO); + //商品规则 + MaterialGoodsRuleDO materialGoodsRuleDO = materialBaseInfoDO.getMaterialGoodsRule(); + materialGoodsRuleDomainService.update(materialGoodsRuleDO); + //公共信息 + MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon(); + materialCommonDomainService.update(materialCommonDO); + //仓库控制信息 + MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl(); + materialWarehouseControlDomainService.update(materialWarehouseControlDO); + //库存预警 + materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO); + //条码信息 + materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO); + return true; + } + + /** + * 批量删除物料基础信息 + */ + public boolean delete(Long[] materialBaseInfoIds) { + return materialBaseInfoDomainService.delete(materialBaseInfoIds); + } + + /** + * 获取物料基础信息详细信息 + */ + public MaterialBaseInfoPO getInfo(Long materialBaseInfoId) + { + return materialBaseInfoDomainService.getInfo(materialBaseInfoId); + } + + /** + * @description 无单收货单 根据物料信息获取明细 + * @author ZhouGY + * @date 2024/7/16 22:18 + * @param materialBaseInfoDO + * @return MaterialBaseInfoPO + */ + public MaterialBaseInfoPO getInfoByNoOrderReceipt(MaterialBaseInfoDO materialBaseInfoDO){ + return materialBaseInfoDomainService.getInfoByNoOrderReceipt(materialBaseInfoDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java new file mode 100644 index 000000000..db45d91da --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.materialCommon; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料公共信息ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialCommonApplicationService { + @Autowired + private MaterialCommonDomainService materialCommonDomainService; + + + /** + * 分页查询物料公共信息列表 + */ + + public List queryList(MaterialCommonDO materialCommonDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialCommonDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialCommonDomainService.queryList(materialCommonDO); + } + + + /** + * 新增物料公共信息 + */ + public Boolean insert(MaterialCommonDO materialCommonDO) { + + return materialCommonDomainService.insert(materialCommonDO); + } + + /** + * 修改物料公共信息 + */ + public Boolean update(MaterialCommonDO materialCommonDO) { + return materialCommonDomainService.update(materialCommonDO); + } + + /** + * 批量删除物料公共信息 + */ + public boolean delete(Long[] materialCommonIds) { + return materialCommonDomainService.delete(materialCommonIds); + } + + /** + * 获取物料公共信息详细信息 + */ + public MaterialCommonPO getInfo(Long materialCommonId) + { + return materialCommonDomainService.getInfo(materialCommonId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java new file mode 100644 index 000000000..9cad4cdc7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.application.service.materialGoodsRule; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料商品规则ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialGoodsRuleApplicationService { + @Autowired + private MaterialGoodsRuleDomainService materialGoodsRuleDomainService; + + + /** + * 分页查询物料商品规则列表 + */ + + public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialGoodsRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialGoodsRuleDomainService.queryList(materialGoodsRuleDO); + } + + + /** + * 新增物料商品规则 + */ + public Boolean insert(MaterialGoodsRuleDO materialGoodsRuleDO) { + + return materialGoodsRuleDomainService.insert(materialGoodsRuleDO); + } + + /** + * 修改物料商品规则 + */ + public Boolean update(MaterialGoodsRuleDO materialGoodsRuleDO) { + return materialGoodsRuleDomainService.update(materialGoodsRuleDO); + } + + /** + * 批量删除物料商品规则 + */ + public boolean delete(Long[] materialGoodsRuleIds) { + return materialGoodsRuleDomainService.delete(materialGoodsRuleIds); + } + + /** + * 获取物料商品规则详细信息 + */ + public MaterialGoodsRulePO getInfo(Long materialGoodsRuleId) + { + return materialGoodsRuleDomainService.getInfo(materialGoodsRuleId); + } + + /** + * 根据 物料基础信息id 获取物料商品规则详细信息 + */ + public MaterialGoodsRulePO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId) + { + return materialGoodsRuleDomainService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java new file mode 100644 index 000000000..44d7ca251 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java @@ -0,0 +1,126 @@ +package com.mhd.wms.application.service.materialInventory; + +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存ApplicationService + * + * @author gen + * @date 2024-05-29 + */ +@Service +@Slf4j +public class MaterialInventoryApplicationService { + @Autowired + private MaterialInventoryDomainService materialInventoryDomainService; + + + /** + * 分页查询物料库存列表 + */ + + public List queryList(MaterialInventoryDO materialInventoryDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + materialInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return materialInventoryDomainService.queryList(materialInventoryDO); + } + + public BigDecimal sumInventoryQuantity(MaterialInventoryDO materialInventoryDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + materialInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + List materialInventoryPOS = materialInventoryDomainService.queryList(materialInventoryDO); + if (CollectionUtils.isNotEmpty(materialInventoryPOS)){ + return materialInventoryPOS.stream().map(MaterialInventoryPO::getAllocationQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + } + return BigDecimal.ZERO; + } + + /** + * 新增物料库存 + */ + public Boolean insert(MaterialInventoryDO materialInventoryDO) { + + return materialInventoryDomainService.insert(materialInventoryDO); + } + + /** + * 修改物料库存 + */ + public Boolean update(MaterialInventoryDO materialInventoryDO) { + return materialInventoryDomainService.update(materialInventoryDO); + } + + /** + * 批量删除物料库存 + */ + public boolean delete(Long[] materialInventoryIds) { + return materialInventoryDomainService.delete(materialInventoryIds); + } + + /** + * 获取物料库存详细信息 + */ + public MaterialInventoryPO getInfo(Long materialInventoryId) + { + return materialInventoryDomainService.getInfo(materialInventoryId); + } + + /** + * @description 根据库位Id和物料基础信息Id 获取物料库存详细信息 + * @author ZhouGY + * @date 2024/5/29 17:15 + * @param storageLocationId + * @param materialBaseInfoId + * @return BigDecimal + */ + public BigDecimal getInventoryByStorageLocationIdAndMaterialBaseInfoId(Long storageLocationId, Long materialBaseInfoId) { + return materialInventoryDomainService.getInventoryByStorageLocationIdAndMaterialBaseInfoId(storageLocationId, materialBaseInfoId); + } + + /** + * @description:库存查询列表 + * @param materialInventoryQueryListDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-16 14:43:38 + */ + public List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialInventoryQueryListDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialInventoryDomainService.materialQueryList(materialInventoryQueryListDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java new file mode 100644 index 000000000..4a91423fa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.materialInventoryWarning; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料库存预警ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialInventoryWarningApplicationService { + @Autowired + private MaterialInventoryWarningDomainService materialInventoryWarningDomainService; + + + /** + * 分页查询物料库存预警列表 + */ + + public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialInventoryWarningDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialInventoryWarningDomainService.queryList(materialInventoryWarningDO); + } + + + /** + * 新增物料库存预警 + */ + public Boolean insert(MaterialInventoryWarningDO materialInventoryWarningDO) { + + return materialInventoryWarningDomainService.insert(materialInventoryWarningDO); + } + + /** + * 修改物料库存预警 + */ + public Boolean update(MaterialInventoryWarningDO materialInventoryWarningDO) { + return materialInventoryWarningDomainService.update(materialInventoryWarningDO); + } + + /** + * 批量删除物料库存预警 + */ + public boolean delete(Long[] materialInventoryWarningIds) { + return materialInventoryWarningDomainService.delete(materialInventoryWarningIds); + } + + /** + * 获取物料库存预警详细信息 + */ + public MaterialInventoryWarningPO getInfo(Long materialInventoryWarningId) + { + return materialInventoryWarningDomainService.getInfo(materialInventoryWarningId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java new file mode 100644 index 000000000..ece095aac --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java @@ -0,0 +1,73 @@ +package com.mhd.wms.application.service.materialMoreDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料更多属性明细ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class MaterialMoreDetailApplicationService { + @Autowired + private com.mhd.wms.domain.materialMoreDetail.service.MaterialMoreDetailDomainService MaterialMoreDetailDomainService; + + + /** + * 分页查询物料更多属性明细列表 + */ + + public List queryList(MaterialMoreDetailDO materialMoreDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialMoreDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return MaterialMoreDetailDomainService.queryList(materialMoreDetailDO); + } + + + /** + * 新增物料更多属性明细 + */ + public Boolean insert(MaterialMoreDetailDO materialMoreDetailDO) { + + return MaterialMoreDetailDomainService.insert(materialMoreDetailDO); + } + + /** + * 修改物料更多属性明细 + */ + public Boolean update(MaterialMoreDetailDO materialMoreDetailDO) { + return MaterialMoreDetailDomainService.update(materialMoreDetailDO); + } + + /** + * 批量删除物料更多属性明细 + */ + public boolean delete(Long[] materialMoreDetailIds) { + return MaterialMoreDetailDomainService.delete(materialMoreDetailIds); + } + + /** + * 获取物料更多属性明细详细信息 + */ + public MaterialMoreDetailPO getInfo(Long materialMoreDetailId) + { + return MaterialMoreDetailDomainService.getInfo(materialMoreDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java new file mode 100644 index 000000000..3956fbf93 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.materialWarehouseControl; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 仓库控制信息ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialWarehouseControlApplicationService { + @Autowired + private MaterialWarehouseControlDomainService materialWarehouseControlDomainService; + + + /** + * 分页查询仓库控制信息列表 + */ + + public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + materialWarehouseControlDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return materialWarehouseControlDomainService.queryList(materialWarehouseControlDO); + } + + + /** + * 新增仓库控制信息 + */ + public Boolean insert(MaterialWarehouseControlDO materialWarehouseControlDO) { + + return materialWarehouseControlDomainService.insert(materialWarehouseControlDO); + } + + /** + * 修改仓库控制信息 + */ + public Boolean update(MaterialWarehouseControlDO materialWarehouseControlDO) { + return materialWarehouseControlDomainService.update(materialWarehouseControlDO); + } + + /** + * 批量删除仓库控制信息 + */ + public boolean delete(Long[] materialWarehouseControlIds) { + return materialWarehouseControlDomainService.delete(materialWarehouseControlIds); + } + + /** + * 获取仓库控制信息详细信息 + */ + public MaterialWarehouseControlPO getInfo(Long materialWarehouseControlId) + { + return materialWarehouseControlDomainService.getInfo(materialWarehouseControlId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java new file mode 100644 index 000000000..2b20afe8a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java @@ -0,0 +1,85 @@ +package com.mhd.wms.application.service.mobilizeManage; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; +import com.mhd.wms.domain.mobilizeManage.service.MobilizeManageDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 调拨管理ApplicationService + * + * @author gen + * @date 2024-07-08 + */ +@Service +@Slf4j +public class MobilizeManageApplicationService { + @Autowired + private MobilizeManageDomainService mobilizeManageDomainService; + + + /** + * 分页查询调拨管理列表 + */ + + public List queryList(MobilizeManageDO mobilizeManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + mobilizeManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + mobilizeManageDO.setOutWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return mobilizeManageDomainService.queryList(mobilizeManageDO); + } + + + /** + * 新增调拨管理 + */ + public Boolean insert(MobilizeManageDO mobilizeManageDO) { + + return mobilizeManageDomainService.insert(mobilizeManageDO); + } + + /** + * 修改调拨管理 + */ + public Boolean update(MobilizeManageDO mobilizeManageDO) throws Exception{ + return mobilizeManageDomainService.update(mobilizeManageDO); + } + + /** + * 批量删除调拨管理 + */ + public boolean delete(Long[] mobilizeManageIds) { + return mobilizeManageDomainService.delete(mobilizeManageIds); + } + + /** + * 获取调拨管理详细信息 + */ + public MobilizeManagePO getInfo(Long mobilizeManageId) + { + return mobilizeManageDomainService.getInfo(mobilizeManageId); + } + + /** + * 审核调拨单 + */ + public Boolean auditMobilizeManage(MobilizeManageDO mobilizeManageDO) + { + return mobilizeManageDomainService.auditMobilizeManage(mobilizeManageDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java new file mode 100644 index 000000000..bb81cf97b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.mobilizeManageDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.domain.mobilizeManageDetail.service.MobilizeManageDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 调拨管理详情ApplicationService + * + * @author gen + * @date 2024-07-08 + */ +@Service +@Slf4j +public class MobilizeManageDetailApplicationService { + @Autowired + private MobilizeManageDetailDomainService mobilizeManageDetailDomainService; + + + /** + * 分页查询调拨管理详情列表 + */ + + public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + mobilizeManageDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return mobilizeManageDetailDomainService.queryList(mobilizeManageDetailDO); + } + + + /** + * 新增调拨管理详情 + */ + public Boolean insert(MobilizeManageDetailDO mobilizeManageDetailDO) { + + return mobilizeManageDetailDomainService.insert(mobilizeManageDetailDO); + } + + /** + * 修改调拨管理详情 + */ + public Boolean update(MobilizeManageDetailDO mobilizeManageDetailDO) { + return mobilizeManageDetailDomainService.update(mobilizeManageDetailDO); + } + + /** + * 批量删除调拨管理详情 + */ + public boolean delete(Long[] mobilizeMaterialDetails) { + return mobilizeManageDetailDomainService.delete(mobilizeMaterialDetails); + } + + /** + * 获取调拨管理详情详细信息 + */ + public MobilizeManageDetailPO getInfo(Long mobilizeMaterialDetail) + { + return mobilizeManageDetailDomainService.getInfo(mobilizeMaterialDetail); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java new file mode 100644 index 000000000..6a9dadc3f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.noticeMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import com.mhd.wms.domain.noticeMaterialDetail.service.NoticeMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细ApplicationService + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class NoticeMaterialDetailApplicationService { + @Autowired + private NoticeMaterialDetailDomainService noticeMaterialDetailDomainService; + + + /** + * 分页查询物料明细列表 + */ + + public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + noticeMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return noticeMaterialDetailDomainService.queryList(noticeMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(NoticeMaterialDetailDO noticeMaterialDetailDO) { + + return noticeMaterialDetailDomainService.insert(noticeMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(NoticeMaterialDetailDO noticeMaterialDetailDO) { + return noticeMaterialDetailDomainService.update(noticeMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public boolean delete(Long[] noticeMaterialDetailIds) { + return noticeMaterialDetailDomainService.delete(noticeMaterialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public NoticeMaterialDetailPO getInfo(Long noticeMaterialDetailId) + { + return noticeMaterialDetailDomainService.getInfo(noticeMaterialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java new file mode 100644 index 000000000..2096ab5da --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java @@ -0,0 +1,222 @@ +package com.mhd.wms.application.service.noticeOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; +import com.mhd.wms.domain.noticeOrder.service.NoticeOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库通知单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class NoticeOrderApplicationService { + @Autowired + private NoticeOrderDomainService noticeOrderDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询入库通知单列表 + */ + + public List queryList(NoticeOrderDO noticeOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + noticeOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + noticeOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return noticeOrderDomainService.queryList(noticeOrderDO); + } + + + /** + * 新增入库通知单 + */ + public Boolean insert(NoticeOrderDO noticeOrderDO) { + //设置仓库 + setWarehouseInfo(noticeOrderDO); + //设置货主信息 + shipperParam(noticeOrderDO); + //设置供应商信息 + supplierParam(noticeOrderDO); + //设置数据字典键值 + setDataDict(noticeOrderDO); + return noticeOrderDomainService.insert(noticeOrderDO); + } + + /** + * 修改入库通知单 + */ + public Boolean update(NoticeOrderDO noticeOrderDO) { + return noticeOrderDomainService.update(noticeOrderDO); + } + + /** + * 批量删除入库通知单 + */ + public boolean delete(Long[] noticeIds) { + return noticeOrderDomainService.delete(noticeIds); + } + + /** + * 获取入库通知单详细信息 + */ + public NoticeOrderPO getInfo(Long noticeId) + { + return noticeOrderDomainService.getInfo(noticeId); + } + + /** + * @description 作废入库通知单 + * @author ZhouGY + * @date 2024/5/22 10:14 + * @param noticeIds + * @return List + */ + public Boolean nullifyByIds(Long[] noticeIds) { + return noticeOrderDomainService.nullifyByIds(noticeIds); + } + + + /** + * @description 生成入库单 + * @author ZhouGY + * @date 2024/5/22 10:14 + * @param noticeIds + * @return List + */ + public Boolean generateStockInOrder(Long[] noticeIds) { + return noticeOrderDomainService.generateStockInOrder(noticeIds); + } + + /** + * @description 生成出库单 + * @author ZhouGY + * @date 2024/5/28 11:14 + * @param noticeIds + * @return Boolean + */ + public Boolean generateStockOutOrder(Long[] noticeIds) { + return noticeOrderDomainService.generateStockOutOrder(noticeIds); + } + + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param noticeOrderDO + */ + private void setWarehouseInfo(NoticeOrderDO noticeOrderDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(noticeOrderDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + noticeOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + noticeOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 封装货主信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param noticeOrderDO + */ + private void shipperParam(NoticeOrderDO noticeOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(noticeOrderDO.getShipperId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取货主信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + noticeOrderDO.setShipperCode(userPo.getUserMemberCode()); + noticeOrderDO.setShipperName(userPo.getUserName()); + } + + /** + * @description 封装供应商信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param noticeOrderDO + */ + private void supplierParam(NoticeOrderDO noticeOrderDO){ + if (ObjectUtil.isNotNull(noticeOrderDO.getSupplierId())){ + AjaxResult ajaxResult = userServiceFeign.getInfo(noticeOrderDO.getSupplierId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取供应商信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + noticeOrderDO.setSupplierName(userPo.getUserName()); + } + } + + /** + * @description 设置数据字典键值 + * @author ZhouGY + * @date 2024/4/7 14:33 + * @param noticeOrderDO + */ + private void setDataDict(NoticeOrderDO noticeOrderDO){ + if (noticeOrderDO.getType() == 1){ + //翻译单据类型 + AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.DOCUMENT_TYPE.getCode()); + if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) { + throw new ServiceException("单据类型数据字典不存在"); + } + List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class); + + SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), noticeOrderDO.getOrderTypeCode())).findAny().orElse(null); + if (null == documentTypeData) { + throw new ServiceException("单据类型【" + noticeOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员"); + } + noticeOrderDO.setOrderTypeName(documentTypeData.getDictLabel()); + }else { + //翻译单据类型 + AjaxResult outDocumentTypeResult = systemServiceFeign.selectListByDictType(DictCode.OUT_DOCUMENT_TYPE.getCode()); + if (!"200".equals(String.valueOf(outDocumentTypeResult.get("code")))) { + throw new ServiceException("单据类型数据字典不存在"); + } + List outDocumentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(outDocumentTypeResult.get("data")), SysDictData.class); + + SysDictData outDocumentTypeData = outDocumentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), noticeOrderDO.getOrderTypeCode())).findAny().orElse(null); + if (null == outDocumentTypeData) { + throw new ServiceException("单据类型【" + noticeOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员"); + } + noticeOrderDO.setOrderTypeName(outDocumentTypeData.getDictLabel()); + } + + + + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java new file mode 100644 index 000000000..37bca6d6d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.outMaterialDetailSerialNumber; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.service.OutMaterialDetailSerialNumberDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库单物料明细序列号ApplicationService + * + * @author gen + * @date 2024-06-03 + */ +@Service +@Slf4j +public class OutMaterialDetailSerialNumberApplicationService { + @Autowired + private OutMaterialDetailSerialNumberDomainService outMaterialDetailSerialNumberDomainService; + + + /** + * 分页查询出库单物料明细序列号列表 + */ + + public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + outMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return outMaterialDetailSerialNumberDomainService.queryList(outMaterialDetailSerialNumberDO); + } + + + /** + * 新增出库单物料明细序列号 + */ + public Boolean insert(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + + return outMaterialDetailSerialNumberDomainService.insert(outMaterialDetailSerialNumberDO); + } + + /** + * 修改出库单物料明细序列号 + */ + public Boolean update(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + return outMaterialDetailSerialNumberDomainService.update(outMaterialDetailSerialNumberDO); + } + + /** + * 批量删除出库单物料明细序列号 + */ + public boolean delete(Long[] outMaterialDetailSerialNumberIds) { + return outMaterialDetailSerialNumberDomainService.delete(outMaterialDetailSerialNumberIds); + } + + /** + * 获取出库单物料明细序列号详细信息 + */ + public OutMaterialDetailSerialNumberPO getInfo(Long outMaterialDetailSerialNumberId) + { + return outMaterialDetailSerialNumberDomainService.getInfo(outMaterialDetailSerialNumberId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java new file mode 100644 index 000000000..fa7ea2f63 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.outOrderAbnormal; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; +import com.mhd.wms.domain.outOrderAbnormal.service.OutOrderAbnormalDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库异常单ApplicationService + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class OutOrderAbnormalApplicationService { + @Autowired + private OutOrderAbnormalDomainService outOrderAbnormalDomainService; + + + /** + * 分页查询出库异常单列表 + */ + + public List queryList(OutOrderAbnormalDO outOrderAbnormalDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + outOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return outOrderAbnormalDomainService.queryList(outOrderAbnormalDO); + } + + + /** + * 新增出库异常单 + */ + public Boolean insert(OutOrderAbnormalDO outOrderAbnormalDO) { + + return outOrderAbnormalDomainService.insert(outOrderAbnormalDO); + } + + /** + * 修改出库异常单 + */ + public Boolean update(OutOrderAbnormalDO outOrderAbnormalDO) { + return outOrderAbnormalDomainService.update(outOrderAbnormalDO); + } + + /** + * 批量删除出库异常单 + */ + public boolean delete(Long[] outOrderAbnormalIds) { + return outOrderAbnormalDomainService.delete(outOrderAbnormalIds); + } + + /** + * 获取出库异常单详细信息 + */ + public OutOrderAbnormalPO getInfo(Long outOrderAbnormalId) + { + return outOrderAbnormalDomainService.getInfo(outOrderAbnormalId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java new file mode 100644 index 000000000..377caec36 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java @@ -0,0 +1,170 @@ +package com.mhd.wms.application.service.overStock; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockDetailPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.domain.overStock.service.OverStockDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 越库管理ApplicationService + * + * @author gen + * @date 2024-07-23 + */ +@Service +@Slf4j +public class OverStockApplicationService { + @Autowired + private OverStockDomainService overStockDomainService; + + + /** + * 分页查询越库管理列表 + */ + + public List queryList(OverStockDO overStockDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + overStockDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return overStockDomainService.queryList(overStockDO); + } + + + /** + * 新增越库管理 + */ + public Boolean insert(OverStockDO overStockDO) { + + return overStockDomainService.insert(overStockDO); + } + + /** + * 修改越库管理 + */ + public Boolean update(OverStockDO overStockDO) { + return overStockDomainService.update(overStockDO); + } + + /** + * 批量删除越库管理 + */ + public boolean delete(Long[] overStockIds) { + return overStockDomainService.delete(overStockIds); + } + + /** + * 获取越库管理详细信息 + */ + public OverStockPO getInfo(Long overStockId) + { + return overStockDomainService.getInfo(overStockId); + } + + + /** + * @description:查询单据越库列表 + * @param queryOrderOverStockDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-23 17:25:53 + */ + public List getByInAndOutOrder(QueryOrderOverStockDO queryOrderOverStockDO) { + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(SecurityUtils.getLoginUser().getUserid()); + queryOrderOverStockDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + return overStockDomainService.getByInAndOutOrder(queryOrderOverStockDO); + } + + /** + * @description 获取越库单据详情 + * @author ZhouGY + * @date 2024/7/25 18:03 + * @param queryOrderOverStockDO + * @return QueryOrderOverStockDetailPO + */ + public QueryOrderOverStockDetailPO getByOrderDetail(QueryOrderOverStockDO queryOrderOverStockDO){ + return overStockDomainService.getByOrderDetail(queryOrderOverStockDO); + } + + /** + * @description:查询越库管理入库出库详情列表 + * @param overStockDO + * @return: com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO + * @author: lianzj + * @time: 2024-07-26 10:03:03 + */ + public OverStockInOrderOutOrderListPO overStockInOrderOutOrderDetailList(OverStockDO overStockDO) { + return overStockDomainService.overStockInOrderOutOrderDetailList(overStockDO); + } + + /** + * @description:执行越库 + * @param executeOverStockDO + * @return: java.lang.String + * @author: lianzj + * @time: 2024-07-26 15:09:14 + */ + public boolean executeOverStock(ExecuteOverStockDO executeOverStockDO) { + return overStockDomainService.executeOverStock(executeOverStockDO); + } + + /** + * @description:取消越库标记(分拨) + * @param executeOverStockDO + * @return: java.lang.String + * @author: lianzj + * @time: 2024-07-26 15:55:59 + */ + public boolean cancelOverStock(ExecuteOverStockDO executeOverStockDO) { + return overStockDomainService.cancelOverStock(executeOverStockDO); + } + + /** + * @description:取消越库任务(直接) + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 11:25:15 + */ + public boolean cancelOverStockDirectByIds(Long[] overStockIds) { + return overStockDomainService.cancelOverStockDirectByIds(overStockIds); + } + + /** + * @description:取消越库标记(分拨) + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 15:33:40 + */ + public boolean cancelOverStockSignByIds(Long[] overStockIds) { + return overStockDomainService.cancelOverStockSignByIds(overStockIds); + } + + /** + * @description:执行越库 + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 15:37:03 + */ + public boolean executeOverStockByIds(Long[] overStockIds) { + return overStockDomainService.executeOverStockByIds(overStockIds); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java new file mode 100644 index 000000000..46b85242b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java @@ -0,0 +1,250 @@ +package com.mhd.wms.application.service.pickingOrder; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingMaterialDetail.service.PickingMaterialDetailDomainService; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 拣货单ApplicationService + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class PickingOrderApplicationService { + @Autowired + private PickingOrderDomainService pickingOrderDomainService; + @Autowired + private PickingMaterialDetailDomainService pickingMaterialDetailDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询拣货单列表 + */ + + public List queryList(PickingOrderDO pickingOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + pickingOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return pickingOrderDomainService.queryList(pickingOrderDO); + } + + + /** + * 新增拣货单 + */ + public Boolean insert(PickingOrderDO pickingOrderDO) { + + return pickingOrderDomainService.insert(pickingOrderDO); + } + + /** + * 修改拣货单 + */ + public Boolean update(PickingOrderDO pickingOrderDO) { + return pickingOrderDomainService.update(pickingOrderDO); + } + + /** + * 批量删除拣货单 + */ + public boolean delete(Long[] pickingOrderIds) { + return pickingOrderDomainService.delete(pickingOrderIds); + } + + /** + * 获取拣货单详细信息 + */ + public PickingOrderPO getInfoByIdAndType(Long pickingOrderId, Integer type) { + return pickingOrderDomainService.getInfoByIdAndType(pickingOrderId, type); + } + + /** + * @description 整单下发 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + public Boolean allDistribution(PickingOrderDO pickingOrderDO){ + //设置作业人员信息 + operatorsParam(pickingOrderDO); + //设置集货库位 + setStorageLocation(pickingOrderDO); + return pickingOrderDomainService.allDistribution(pickingOrderDO); + } + + + /** + * @description 明细下发 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + public Boolean detailDistribution(PickingOrderDO pickingOrderDO){ + //设置作业人员信息 + operatorsParam(pickingOrderDO); + //设置集货库位 + setStorageLocation(pickingOrderDO); + return pickingOrderDomainService.detailDistribution(pickingOrderDO); + } + /** + * @description 拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + public Boolean picking(PickingOrderDO pickingOrderDO){ + PickingOrderDO assemblePickingOrderDO = assembleParamByPickingOrder(pickingOrderDO); + return pickingOrderDomainService.picking(assemblePickingOrderDO); + } + + /** + * @description 完成拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + public Boolean completePicking(PickingOrderDO pickingOrderDO){ + return pickingOrderDomainService.completePicking(pickingOrderDO); + } + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param pickingOrderDO + */ + private void operatorsParam(PickingOrderDO pickingOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(pickingOrderDO.getOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + pickingOrderDO.setOperatorsName(userPo.getUserName()); + } + + /** + * @description 设置集货库位信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param pickingOrderDO + */ + private void setStorageLocation(PickingOrderDO pickingOrderDO) { + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(pickingOrderDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取拣货库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + pickingOrderDO.setWarehouseId(storageLocationFeignPO.getWarehouseId()); + pickingOrderDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); + pickingOrderDO.setWarehouseName(storageLocationFeignPO.getWarehouseName()); + pickingOrderDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + pickingOrderDO.setStorageCode(storageLocationFeignPO.getStorageCode()); + pickingOrderDO.setStorageName(storageLocationFeignPO.getStorageName()); + pickingOrderDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + pickingOrderDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + pickingOrderDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + + + /** + * @description 拣货 装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param pickingOrderDO + * @return Boolean + */ + private PickingOrderDO assembleParamByPickingOrder(PickingOrderDO pickingOrderDO) { + PickingOrderPO pickingOrderPO = pickingOrderDomainService.getInfoByIdAndType(pickingOrderDO.getPickingOrderId(), pickingOrderDO.getType()); + if (pickingOrderPO == null){ + throw new ServiceException("拣货单不存在"); + } + if (pickingOrderPO.getStatus() > 2) { + throw new ServiceException("拣货单已完成拣货"); + } + if (CollectionUtil.isEmpty(pickingOrderDO.getMaterialDetailList())) { + throw new ServiceException("拣货单物料明细不能为空"); + } + PickingOrderDO returnPickingOrderDO = new PickingOrderDO(); + returnPickingOrderDO.setUpdateTime(pickingOrderDO.getUpdateTime()); + returnPickingOrderDO.setPickingOrderId(pickingOrderPO.getPickingOrderId()); + returnPickingOrderDO.setType(pickingOrderPO.getType()); + returnPickingOrderDO.setOrganizationId(pickingOrderPO.getOrganizationId()); + returnPickingOrderDO.setOrganizationName(pickingOrderPO.getOrganizationName()); + returnPickingOrderDO.setTopOrganizationId(pickingOrderPO.getTopOrganizationId()); + returnPickingOrderDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + PickingMaterialDetailDO pickingMaterialDetailDOByQuery = new PickingMaterialDetailDO(); + pickingMaterialDetailDOByQuery.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + List pickingMaterialDetailPODbList = pickingMaterialDetailDomainService.queryList(pickingMaterialDetailDOByQuery); + Map pickingMaterialDetailDbMap = pickingMaterialDetailPODbList.stream().collect(Collectors.toMap(PickingMaterialDetailPO::getMaterialDetailId, Function.identity())); + List returnPickingMaterialDetailDOList = new ArrayList<>(); + for (PickingMaterialDetailDO pickingMaterialDetailDO : pickingOrderDO.getMaterialDetailList()){ + //设置物料更多属性信息 + PickingMaterialDetailPO pickingMaterialDetailPO = pickingMaterialDetailDbMap.get(pickingMaterialDetailDO.getMaterialDetailId()); + if (pickingMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (ObjectUtil.isNull(pickingMaterialDetailDO.getActualQuantity()) || pickingMaterialDetailDO.getActualQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行拣货直接跳过 + continue; + } + PickingMaterialDetailDO returnPickingMaterialDetailDO = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(pickingMaterialDetailPO, returnPickingMaterialDetailDO); + returnPickingMaterialDetailDO.setActualQuantity(pickingMaterialDetailDO.getActualQuantity()); + //是否开启了序列号管理 + if (pickingMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(pickingMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + pickingMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnPickingMaterialDetailDO.setMaterialDetailSerialNumberList(pickingMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnPickingMaterialDetailDOList.add(returnPickingMaterialDetailDO); + } + returnPickingOrderDO.setMaterialDetailList(returnPickingMaterialDetailDOList); + return returnPickingOrderDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java new file mode 100644 index 000000000..1c34ae1f8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java @@ -0,0 +1,260 @@ +package com.mhd.wms.application.service.putawayRule; + +import cn.hutool.core.convert.Convert; +import cn.hutool.json.JSONUtil; +import com.github.pagehelper.util.StringUtil; +import com.mhd.common.core.domain.po.SysDictDataVo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.enums.MasterRuleEnum; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.putawayRule.entity.PutawayRule; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; +import com.mhd.wms.domain.putawayRule.service.PutawayRuleDomainService; +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import com.mhd.wms.domain.putawayRuleDetail.service.PutawayRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +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.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 上架规则ApplicationService + * + * @author gen + * @date 2024-07-19 + */ +@Service +@Slf4j +public class PutawayRuleApplicationService { + @Autowired + private PutawayRuleDomainService putawayRuleDomainService; + + @Resource + private PutawayRuleDetailDomainService putawayRuleDetailDomainService; + + @Resource + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询上架规则列表 + */ + + public List queryList(PutawayRuleDO putawayRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + putawayRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return putawayRuleDomainService.queryList(putawayRuleDO); + } + + + /** + * 新增上架规则 + */ + @Transactional + public Boolean insert(PutawayRuleDO putawayRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + putawayRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + PutawayRule putawayRule= putawayRuleDomainService.save(putawayRuleDO); + //删除当前上架规则明细 + putawayRuleDetailDomainService.deleteByPutawayRuleId(putawayRule.getId()); + + List putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS(); + + List putawayRuleDetails = putawayRuleDetailDOS.stream().map(putawayRuleDetailDO -> { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + putawayRuleDetailDO.setMainRule(MasterRuleEnum.ENUM_VALUE1.getDesById(putawayRuleDetailDO.getMainRuleId())); + //库位空间数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getStorageSpaceLimitTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.LOCATION_SPACE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位空间)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getStorageSpaceLimitTypeId()); + String storageSpaceLimitType = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位空间未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setStorageSpaceLimitType(storageSpaceLimitType); + } + //库位空间数据字典 end + + + //库位分类数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位分类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationTypeId()); + String locationType = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位分类未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setLocationType(locationType); + } + //库位分类数据字典 end + //库位种类数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationKindId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位种类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationKindId()); + String locationKind = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位种类未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setLocationKind(locationKind); + } + //库位种类数据字典 end + BeanUtils.copyProperties(putawayRuleDetailDO, putawayRuleDetail); + putawayRuleDetail.setPutawayRuleId(putawayRule.getId()); + return putawayRuleDetail; + + }).collect(Collectors.toList()); + + return putawayRuleDetailDomainService.saveBatch(putawayRuleDetails); + } + + /** + * 修改上架规则 + */ + public Boolean update(PutawayRuleDO putawayRuleDO) { + putawayRuleDomainService.update(putawayRuleDO); + //删除当前上架规则明细 + putawayRuleDetailDomainService.deleteByPutawayRuleId(putawayRuleDO.getId()); + + List putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS(); + + List putawayRuleDetails = putawayRuleDetailDOS.stream().map(putawayRuleDetailDO -> { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + + putawayRuleDetailDO.setMainRule(MasterRuleEnum.ENUM_VALUE1.getDesById(putawayRuleDetailDO.getMainRuleId())); + //库位空间数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getStorageSpaceLimitTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.LOCATION_SPACE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位空间)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getStorageSpaceLimitTypeId()); + String storageSpaceLimitType = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位空间未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setStorageSpaceLimitType(storageSpaceLimitType); + } + //库位空间数据字典 end + + + //库位分类数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位分类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationTypeId()); + String locationType = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位分类未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setLocationType(locationType); + } + //库位分类数据字典 end + //库位种类数据字典 start + if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationKindId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(库位种类)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationKindId()); + String locationKind = strings1.stream().map(s -> { + if (!transportTypeDictMap.containsKey(s)) { + throw new ServiceException("库位种类未找到"); + } + return transportTypeDictMap.get(s); + }).collect(Collectors.joining(",")); + + putawayRuleDetailDO.setLocationKind(locationKind); + } + //库位种类数据字典 end + BeanUtils.copyProperties(putawayRuleDetailDO, putawayRuleDetail); + putawayRuleDetail.setPutawayRuleId(putawayRuleDO.getId()); + return putawayRuleDetail; + + }).collect(Collectors.toList()); + + return putawayRuleDetailDomainService.saveBatch(putawayRuleDetails); + } + + /** + * 批量删除上架规则 + */ + @Transactional + public boolean delete(Long[] ids) { + putawayRuleDomainService.delete(ids); + // + List putawayRleDetailIds = putawayRuleDetailDomainService.selectListByPutawayRuleId(ids); + + + return putawayRuleDetailDomainService.delete(putawayRleDetailIds.toArray(new Long[putawayRleDetailIds.size()])); + } + + /** + * 获取上架规则详细信息 + */ + public PutawayRulePO getInfo(Long id) + { + return putawayRuleDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java new file mode 100644 index 000000000..3409c1a5c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.putawayRuleDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import com.mhd.wms.domain.putawayRuleDetail.service.PutawayRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 上架规则明细ApplicationService + * + * @author gen + * @date 2024-07-20 + */ +@Service +@Slf4j +public class PutawayRuleDetailApplicationService { + @Autowired + private PutawayRuleDetailDomainService putawayRuleDetailDomainService; + + + /** + * 分页查询上架规则明细列表 + */ + + public List queryList(PutawayRuleDetailDO putawayRuleDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + putawayRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return putawayRuleDetailDomainService.queryList(putawayRuleDetailDO); + } + + + /** + * 新增上架规则明细 + */ + public Boolean insert(PutawayRuleDetailDO putawayRuleDetailDO) { + + return putawayRuleDetailDomainService.insert(putawayRuleDetailDO); + } + + /** + * 修改上架规则明细 + */ + public Boolean update(PutawayRuleDetailDO putawayRuleDetailDO) { + return putawayRuleDetailDomainService.update(putawayRuleDetailDO); + } + + /** + * 批量删除上架规则明细 + */ + public boolean delete(Long[] ids) { + return putawayRuleDetailDomainService.delete(ids); + } + + /** + * 获取上架规则明细详细信息 + */ + public PutawayRuleDetailPO getInfo(Long id) + { + return putawayRuleDetailDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java new file mode 100644 index 000000000..2a2653226 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java @@ -0,0 +1,141 @@ +package com.mhd.wms.application.service.qcRule; + +import cn.hutool.json.JSONUtil; +import com.github.pagehelper.util.StringUtil; +import com.mhd.common.core.domain.po.SysDictDataVo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; +import com.mhd.wms.domain.qcRule.service.QcRuleDomainService; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import com.mhd.wms.domain.qcRuleDetail.service.QcRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +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.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 质检规则ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class QcRuleApplicationService { + @Autowired + private QcRuleDomainService qcRuleDomainService; + + @Resource + private QcRuleDetailDomainService qcRuleDetailDomainService; + + @Resource + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询质检规则列表 + */ + + public List queryList(QcRuleDO qcRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + qcRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return qcRuleDomainService.queryList(qcRuleDO); + } + + + /** + * 新增质检规则 + */ + @Transactional + public Boolean insert(QcRuleDO qcRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + qcRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + + Long id = qcRuleDomainService.insertToId(qcRuleDO); + //根据ID查询质检规则明细 + Long[] ids = qcRuleDetailDomainService.selectIdsByQcRuleId(id); + //删除质检规则明细ID + qcRuleDetailDomainService.delete(ids); + List qcRuleDetailDOS = qcRuleDO.getQcRuleDetailDOS(); + qcRuleDetailDOS.stream().forEach(qcRuleDetailDO -> { + if(StringUtil.isNotEmpty(qcRuleDetailDO.getNumTypeId())){ + AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.NUM_TYPE.getCode()); + if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) { + throw new ServiceException("字典信息(数量类型)获取失败"); + } + List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class); + Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel)); + if (!transportTypeDictMap.containsKey(qcRuleDetailDO.getNumTypeId())) { + throw new ServiceException("数量类型未找到"); + } + qcRuleDetailDO.setNumType(transportTypeDictMap.get(qcRuleDetailDO.getNumTypeId())); + } + qcRuleDetailDO.setQcRuleId(id); + }); + return qcRuleDetailDomainService.batchInsert(qcRuleDetailDOS); + } + + /** + * 修改质检规则 + */ + @Transactional + public Boolean update(QcRuleDO qcRuleDO) { + qcRuleDomainService.update(qcRuleDO); + //根据ID查询质检规则明细 + Long[] ids = qcRuleDetailDomainService.selectIdsByQcRuleId(qcRuleDO.getId()); + //删除质检规则明细ID + qcRuleDetailDomainService.delete(ids); + List qcRuleDetailDOS = qcRuleDO.getQcRuleDetailDOS(); + qcRuleDetailDOS.stream().forEach(qcRuleDetailDO -> { + qcRuleDetailDO.setQcRuleId(qcRuleDO.getId()); + }); + return qcRuleDetailDomainService.batchInsert(qcRuleDetailDOS); + + } + + /** + * 批量删除质检规则 + */ + @Transactional + public boolean delete(Long[] ids) { + qcRuleDomainService.delete(ids); + //根据质检规则ID集合查询所有的质检规则明细 + Long[] qcRuleDetailIds = qcRuleDetailDomainService.selectListByQcRuleIds(ids); + return qcRuleDetailDomainService.delete(qcRuleDetailIds); + } + + /** + * 获取质检规则详细信息 + */ + public QcRulePO getInfo(Long id) + { + QcRulePO qcRulePO = qcRuleDomainService.getInfo(id); + List qcRuleDetailPOS = qcRuleDetailDomainService.selectListByQcRuleId(id); + qcRulePO.setQcRuleDetailList(qcRuleDetailPOS); + return qcRulePO; + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java new file mode 100644 index 000000000..324feafc3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.qcRuleDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import com.mhd.wms.domain.qcRuleDetail.service.QcRuleDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 质检规则明细ApplicationService + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class QcRuleDetailApplicationService { + @Autowired + private QcRuleDetailDomainService qcRuleDetailDomainService; + + + /** + * 分页查询质检规则明细列表 + */ + + public List queryList(QcRuleDetailDO qcRuleDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + qcRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return qcRuleDetailDomainService.queryList(qcRuleDetailDO); + } + + + /** + * 新增质检规则明细 + */ + public Boolean insert(QcRuleDetailDO qcRuleDetailDO) { + + return qcRuleDetailDomainService.insert(qcRuleDetailDO); + } + + /** + * 修改质检规则明细 + */ + public Boolean update(QcRuleDetailDO qcRuleDetailDO) { + return qcRuleDetailDomainService.update(qcRuleDetailDO); + } + + /** + * 批量删除质检规则明细 + */ + public boolean delete(Long[] ids) { + return qcRuleDetailDomainService.delete(ids); + } + + /** + * 获取质检规则明细详细信息 + */ + public QcRuleDetailPO getInfo(Long id) + { + return qcRuleDetailDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java new file mode 100644 index 000000000..e9ea15b6f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java @@ -0,0 +1,78 @@ +package com.mhd.wms.application.service.qualityInspection; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import com.mhd.wms.domain.qualityInspection.service.QualityInspectionDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 质检管理ApplicationService + * + * @author gen + * @date 2024-05-25 + */ +@Service +@Slf4j +public class QualityInspectionApplicationService { + @Autowired + private QualityInspectionDomainService qualityInspectionDomainService; + + + /** + * 分页查询质检管理列表 + */ + + public List queryList(QualityInspectionDO qualityInspectionDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + qualityInspectionDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + qualityInspectionDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return qualityInspectionDomainService.queryList(qualityInspectionDO); + } + + + /** + * 新增质检管理 + */ + public Boolean insert(QualityInspectionDO qualityInspectionDO) { + + return qualityInspectionDomainService.insert(qualityInspectionDO); + } + + /** + * 修改质检管理 + */ + public Boolean update(QualityInspectionDO qualityInspectionDO) { + return qualityInspectionDomainService.update(qualityInspectionDO); + } + + /** + * 批量删除质检管理 + */ + public boolean delete(Long[] qualityInspectionIds) { + return qualityInspectionDomainService.delete(qualityInspectionIds); + } + + /** + * 获取质检管理详细信息 + */ + public QualityInspectionPO getInfo(Long qualityInspectionId) + { + return qualityInspectionDomainService.getInfo(qualityInspectionId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java new file mode 100644 index 000000000..c157e39d5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java @@ -0,0 +1,73 @@ +package com.mhd.wms.application.service.receiptMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细ApplicationService + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class ReceiptMaterialDetailApplicationService { + @Autowired + private ReceiptMaterialDetailDomainService receiptMaterialDetailDomainService; + + + /** + * 分页查询物料明细列表 + */ + + public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + receiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDO); + } + + /** + * 新增物料明细 + */ + public Boolean insert(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + + return receiptMaterialDetailDomainService.insert(receiptMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + return receiptMaterialDetailDomainService.update(receiptMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public boolean delete(Long[] materialDetailIds) { + return receiptMaterialDetailDomainService.delete(materialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public ReceiptMaterialDetailPO getInfo(Long materialDetailId) + { + return receiptMaterialDetailDomainService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java new file mode 100644 index 000000000..fb974610c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java @@ -0,0 +1,78 @@ +package com.mhd.wms.application.service.replenishmentNotice; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import com.mhd.wms.domain.replenishmentNotice.service.ReplenishmentNoticeDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 补货通知单ApplicationService + * + * @author gen + * @date 2024-06-11 + */ +@Service +@Slf4j +public class ReplenishmentNoticeApplicationService { + @Autowired + private ReplenishmentNoticeDomainService replenishmentNoticeDomainService; + + + /** + * 分页查询补货通知单列表 + */ + + public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + replenishmentNoticeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + replenishmentNoticeDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return replenishmentNoticeDomainService.queryList(replenishmentNoticeDO); + } + + + /** + * 新增补货通知单 + */ + public Boolean insert(ReplenishmentNoticeDO replenishmentNoticeDO) { + + return replenishmentNoticeDomainService.insert(replenishmentNoticeDO); + } + + /** + * 修改补货通知单 + */ + public Boolean update(ReplenishmentNoticeDO replenishmentNoticeDO) { + return replenishmentNoticeDomainService.update(replenishmentNoticeDO); + } + + /** + * 批量删除补货通知单 + */ + public boolean delete(Long[] replenishmentNoticeIds) { + return replenishmentNoticeDomainService.delete(replenishmentNoticeIds); + } + + /** + * 获取补货通知单详细信息 + */ + public ReplenishmentNoticePO getInfo(Long replenishmentNoticeId) + { + return replenishmentNoticeDomainService.getInfo(replenishmentNoticeId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java new file mode 100644 index 000000000..8d86fdb69 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java @@ -0,0 +1,93 @@ +package com.mhd.wms.application.service.serialNumber; + +import cn.hutool.core.collection.CollectionUtil; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; +import com.mhd.wms.domain.serialNumber.service.SerialNumberDomainService; +import com.mhd.wms.interfaces.dto.serialNumber.SerialNumberDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 序列号ApplicationService + * + * @author gen + * @date 2024-07-19 + */ +@Service +@Slf4j +public class SerialNumberApplicationService { + @Autowired + private SerialNumberDomainService serialNumberDomainService; + + + /** + * 分页查询序列号列表 + */ + + public List queryList(SerialNumberDO serialNumberDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + serialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + serialNumberDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return serialNumberDomainService.queryList(serialNumberDO); + } + + + /** + * 新增序列号 + */ + public Boolean insert(SerialNumberDO serialNumberDO) { + + return serialNumberDomainService.insert(serialNumberDO); + } + + /** + * 修改序列号 + */ + public Boolean update(SerialNumberDO serialNumberDO) { + return serialNumberDomainService.update(serialNumberDO); + } + + /** + * 批量删除序列号 + */ + public boolean delete(Long[] serialNumberIds) { + return serialNumberDomainService.delete(serialNumberIds); + } + + /** + * 获取序列号详细信息 + */ + public SerialNumberPO getInfo(Long serialNumberId) + { + return serialNumberDomainService.getInfo(serialNumberId); + } + + public Boolean validationForPicking(SerialNumberDTO serialNumberDTO) { + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO.setSerialNumber(serialNumberDTO.getSerialNumber()); + serialNumberDO.setMaterialBaseInfoId(serialNumberDTO.getMaterialBaseInfoId()); + serialNumberDO.setStatus(1); + List serialNumberPos = serialNumberDomainService.queryList(serialNumberDO); + if (CollectionUtil.isEmpty(serialNumberPos)){ + throw new RuntimeException("序列号不存在"); + }else if (serialNumberPos.size() >1) { + throw new RuntimeException("数据错误:系统内存在多个相同序列号"); + } + return true; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java new file mode 100644 index 000000000..1167944eb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.shelfMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.shelfMaterialDetail.service.ShelfMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细ApplicationService + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class ShelfMaterialDetailApplicationService { + @Autowired + private ShelfMaterialDetailDomainService shelfMaterialDetailDomainService; + + + /** + * 分页查询物料明细列表 + */ + + public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + shelfMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return shelfMaterialDetailDomainService.queryList(shelfMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(ShelfMaterialDetailDO shelfMaterialDetailDO) { + + return shelfMaterialDetailDomainService.insert(shelfMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(ShelfMaterialDetailDO shelfMaterialDetailDO) { + return shelfMaterialDetailDomainService.update(shelfMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public boolean delete(Long[] shelfMaterialDetailIds) { + return shelfMaterialDetailDomainService.delete(shelfMaterialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public ShelfMaterialDetailPO getInfo(Long shelfMaterialDetailId) + { + return shelfMaterialDetailDomainService.getInfo(shelfMaterialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java new file mode 100644 index 000000000..6c573a755 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java @@ -0,0 +1,436 @@ +package com.mhd.wms.application.service.shiftManage; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.ContainerFeignPO; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftManage.service.ShiftManageDomainService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import com.mhd.wms.domain.shiftMaterialDetail.service.ShiftMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 移位管理ApplicationService + * + * @author gen + * @date 2024-07-02 + */ +@Service +@Slf4j +public class ShiftManageApplicationService { + @Autowired + private ShiftManageDomainService shiftManageDomainService; + @Autowired + private ShiftMaterialDetailDomainService shiftMaterialDetailDomainService; + @Autowired + private IdGenerator idGenerator; + + @Autowired + private UserServiceFeign userServiceFeign; + + @Autowired + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询移位管理列表 + */ + + public List queryList(ShiftManageDO shiftManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + shiftManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return shiftManageDomainService.queryList(shiftManageDO); + } + + /** + * @description app 获取移位详情 + * @author ZhouGY + * @date 2024/7/30 14:20 + * @param ShiftManageId + * @return ShiftManagePO + */ + public ShiftManagePO getInfoByApp(Long ShiftManageId) { + return shiftManageDomainService.getInfoByApp(ShiftManageId); + } + + + /** + * 新增移位管理 + */ + public Boolean insert(ShiftManageDO shiftManageDO) { + //设置仓库 + setWarehouseInfo(shiftManageDO); + return shiftManageDomainService.insert(shiftManageDO); + } + + /** + * 修改移位管理 + */ + public Boolean update(ShiftManageDO shiftManageDO) { + return shiftManageDomainService.update(shiftManageDO); + } + + /** + * 批量删除移位管理 + */ + public boolean delete(Long[] shiftManageIds) { + return shiftManageDomainService.delete(shiftManageIds); + } + + /** + * 获取移位管理详细信息 + */ + public ShiftManagePO getInfo(Long shiftManageId) + { + return shiftManageDomainService.getInfo(shiftManageId); + } + + /** + * @description 审核 + * @author ZhouGY + * @date 2024/7/30 14:47 + * @param shiftManageDO + * @return Boolean + */ + public Boolean auditState(ShiftManageDO shiftManageDO){ + return shiftManageDomainService.auditState(shiftManageDO); + } + + /** + * @description 任务下发 + * @author ZhouGY + * @date 2024/7/30 14:47 + * @param shiftManageDO + * @return Boolean + */ + public Boolean taskDistribution(ShiftManageDO shiftManageDO){ + // 设置作业员信息 + operatorsParam(shiftManageDO); + return shiftManageDomainService.taskDistribution(shiftManageDO); + } + + /** + * 物料移位 + */ + public Boolean appMoveFromShiftManage(ShiftManageDO shiftManageDO){ + List shiftMaterialDetailDOList = shiftManageDO.getShiftMaterialDetailList(); + shiftMaterialDetailDOList.forEach(shiftMaterialDetailDO -> { + List shiftMaterialDetailDOChildrenList1 = shiftMaterialDetailDO.getChildren(); + ShiftMaterialDetailDO shiftMaterialDetailDOChildren = shiftMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0); + shiftMaterialDetailDO.setShiftIoDetailId(shiftMaterialDetailDOChildren.getShiftIoDetailId()); + shiftMaterialDetailDO.setShiftQuantity(shiftMaterialDetailDOChildren.getShiftQuantity()); + shiftMaterialDetailDO.setNewWarehouseId(shiftMaterialDetailDOChildren.getNewWarehouseId()); + shiftMaterialDetailDO.setNewStorageSectionId(shiftMaterialDetailDOChildren.getNewStorageSectionId()); + shiftMaterialDetailDO.setNewStorageLocationId(shiftMaterialDetailDOChildren.getNewStorageLocationId()); + shiftMaterialDetailDO.setContainerId(shiftMaterialDetailDOChildren.getContainerId()); + shiftMaterialDetailDO.setLevel(shiftMaterialDetailDOChildren.getLevel()); + shiftMaterialDetailDO.setMaterialDetailSerialNumberList(shiftMaterialDetailDOChildren.getMaterialDetailSerialNumberList()); + //只留二级 + List shiftMaterialDetailDOChildrenList2 = shiftMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList()); + shiftMaterialDetailDO.setChildren(shiftMaterialDetailDOChildrenList2); + }); + //移位装配参数 + ShiftManageDO assembleShiftManageDO = assembleParamByShift(shiftManageDO); + return shiftManageDomainService.appMoveFromShiftManage(assembleShiftManageDO); + } + + /** + * @description PC 完成移位 + * @author ZhouGY + * @date 2024/7/30 14:51 + * @param shiftManageDO + * @return Map + */ + public Boolean finishShiftByPC(ShiftManageDO shiftManageDO){ + //移位装配参数 + ShiftManageDO assembleShiftManageDO = assembleParamByShift(shiftManageDO); + return shiftManageDomainService.finishShiftByPC(assembleShiftManageDO); + } + + /** + * @description PDA 完成移位 + * @author ZhouGY + * @date 2024/7/30 14:51 + * @param shiftManageDO + * @return Map + */ + public Boolean finishShift(ShiftManageDO shiftManageDO){ + return shiftManageDomainService.finishShift(shiftManageDO); + } + + /** + * @description app 容器移位 + * @author ZhouGY + * @date 2024/7/30 14:24 + * @param containerShiftDOList + * @return Boolean + */ + public Boolean appMoveContainShift(List containerShiftDOList){ + //设置上架库位、容器信息 + setStorageLocationInfoByContainer(containerShiftDOList); + return shiftManageDomainService.appMoveContainShift(containerShiftDOList); + } + + /** + * @description 移位装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param shiftManageDO + * @return Boolean + */ + private ShiftManageDO assembleParamByShift(ShiftManageDO shiftManageDO) { + ShiftManagePO shiftManagePO = shiftManageDomainService.getInfo(shiftManageDO.getShiftManageId()); + if (shiftManagePO == null){ + throw new ServiceException("移位单不存在"); + } + if (shiftManagePO.getShiftStatus() > 3) { + throw new ServiceException("移位单已完成移位"); + } + ShiftManageDO returnShiftManageDO = new ShiftManageDO(); + returnShiftManageDO.setUpdateTime(shiftManagePO.getUpdateTime()); + returnShiftManageDO.setShiftManageId(shiftManagePO.getShiftManageId()); + returnShiftManageDO.setOrganizationId(shiftManagePO.getOrganizationId()); + returnShiftManageDO.setOrganizationName(shiftManagePO.getOrganizationName()); + returnShiftManageDO.setTopOrganizationId(shiftManagePO.getTopOrganizationId()); + returnShiftManageDO.setShiftNumber(shiftManagePO.getShiftNumber()); + ShiftMaterialDetailDO shiftMaterialDetailDOByQuery = new ShiftMaterialDetailDO(); + shiftMaterialDetailDOByQuery.setShiftNumber(shiftManagePO.getShiftNumber()); + List shiftMaterialDetailPODbList = shiftMaterialDetailDomainService.queryList(shiftMaterialDetailDOByQuery); + Map shiftMaterialDetailPODbMap = shiftMaterialDetailPODbList.stream().collect(Collectors.toMap(ShiftMaterialDetailPO::getShiftIoDetailId, Function.identity())); + BigDecimal totalShiftQuantity = BigDecimal.ZERO;//移位单当前作业收货数 + int totalActualReceiptMaterialQuantity = 0;//移位单收货物料种数 + List returnShiftMaterialDetailDOList = new ArrayList<>(); + for (ShiftMaterialDetailDO shiftMaterialDetailDO : shiftManageDO.getShiftMaterialDetailList()){ + //设置物料更多属性信息 + ShiftMaterialDetailPO shiftMaterialDetailPO = shiftMaterialDetailPODbMap.get(shiftMaterialDetailDO.getShiftIoDetailId()); + if (shiftMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (shiftMaterialDetailDO.getShiftQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行移位直接跳过 + continue; + } + if (shiftMaterialDetailPO.getShiftStatus() == 4){ + //已完成移位的物料不再支持修改 + continue; + } + //设置上架库位、容器信息 + setStorageLocationInfo(shiftMaterialDetailDO); + BigDecimal shiftQuantity = shiftMaterialDetailDO.getShiftQuantity();;//当前作业移位数 + //判断是否存在子项 + List returnShiftMaterialDetailDOChildList = new ArrayList<>(); + List shiftMaterialDetailDOChildList = shiftMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(shiftMaterialDetailDOChildList)){ + for (ShiftMaterialDetailDO shiftMaterialDetailDOChild : shiftMaterialDetailDOChildList){ + ShiftMaterialDetailDO returnShiftMaterialDetailDOChild = new ShiftMaterialDetailDO(); + ShiftMaterialDetailPO shiftMaterialDetailPOChildDb = shiftMaterialDetailPODbMap.get(shiftMaterialDetailDOChild.getShiftIoDetailId()); + if (shiftMaterialDetailPOChildDb == null){ + BeanUtils.copyProperties(shiftMaterialDetailPO, returnShiftMaterialDetailDOChild, "shiftIoDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + }else { + BeanUtils.copyProperties(shiftMaterialDetailPOChildDb, returnShiftMaterialDetailDOChild, "shiftIoDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + } + BeanUtils.copyProperties(shiftMaterialDetailDOChild, returnShiftMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(shiftMaterialDetailDOChild)); + //设置上架库位、容器信息 + setStorageLocationInfo(returnShiftMaterialDetailDOChild); + if (ObjectUtil.isNotNull(returnShiftMaterialDetailDOChild.getShiftIoDetailId()) && returnShiftMaterialDetailDOChild.getShiftIoDetailId() == 0){ + returnShiftMaterialDetailDOChild.setShiftIoDetailId(null); + } + returnShiftMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnShiftMaterialDetailDOChild.setLevel(2); + returnShiftMaterialDetailDOChild.setParentUniqueId(shiftMaterialDetailPO.getUniqueId()); + //是否开启了序列号管理 + if (shiftMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(shiftMaterialDetailDOChild.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + shiftMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnShiftMaterialDetailDOChild.setMaterialDetailSerialNumberList(returnShiftMaterialDetailDOChild.getMaterialDetailSerialNumberList()); + returnShiftMaterialDetailDOChildList.add(returnShiftMaterialDetailDOChild); + shiftQuantity = shiftQuantity.add(returnShiftMaterialDetailDOChild.getShiftQuantity()); + } + } + //记录移位单移位总数 + totalShiftQuantity = totalShiftQuantity.add(shiftQuantity); + //物料总移位数量 + shiftMaterialDetailDO.setAlreadyShiftQuantity(shiftQuantity); + //判断移位数量是否大于计划数量 + Integer shiftStatus = judgeShiftQuantity(shiftQuantity, shiftMaterialDetailPO.getQuantity()); + shiftMaterialDetailDO.setShiftStatus(shiftStatus); + if (shiftStatus > 3){ + totalActualReceiptMaterialQuantity += 1; + } + ShiftMaterialDetailDO returnShiftMaterialDetailDO = new ShiftMaterialDetailDO(); + BeanUtils.copyProperties(shiftMaterialDetailPO, returnShiftMaterialDetailDO); + BeanUtils.copyProperties(shiftMaterialDetailDO, returnShiftMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shiftMaterialDetailDO)); + //一级列表 首次收货 + //是否开启了序列号管理 + if (shiftMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(shiftMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + shiftMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnShiftMaterialDetailDO.setMaterialDetailSerialNumberList(shiftMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnShiftMaterialDetailDO.setChildren(returnShiftMaterialDetailDOChildList); + returnShiftMaterialDetailDOList.add(returnShiftMaterialDetailDO); + } + returnShiftManageDO.setShiftQuantity(totalShiftQuantity); + returnShiftManageDO.setShiftMaterialDetailList(returnShiftMaterialDetailDOList); + returnShiftManageDO.setShiftMaterialQuantity(totalActualReceiptMaterialQuantity); + return returnShiftManageDO; + } + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param shiftManageDO + */ + private void operatorsParam(ShiftManageDO shiftManageDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(shiftManageDO.getOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + shiftManageDO.setOperatorsName(userPo.getUserName()); + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param shiftManageDO + */ + private void setWarehouseInfo(ShiftManageDO shiftManageDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(shiftManageDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + shiftManageDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + shiftManageDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 设置上架库位、容器信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param shiftMaterialDetailDO + */ + private void setStorageLocationInfo(ShiftMaterialDetailDO shiftMaterialDetailDO){ + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shiftMaterialDetailDO.getNewStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + shiftMaterialDetailDO.setNewStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + shiftMaterialDetailDO.setNewStorageCode(storageLocationFeignPO.getStorageCode()); + shiftMaterialDetailDO.setNewStorageName(storageLocationFeignPO.getStorageName()); + shiftMaterialDetailDO.setNewStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + shiftMaterialDetailDO.setNewStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + shiftMaterialDetailDO.setNewStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + + //获取容器详情 + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shiftMaterialDetailDO.getContainerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + shiftMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode()); + shiftMaterialDetailDO.setContainerType(containerFeignPO.getContainerType()); + shiftMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + } + + /** + * @description 设置上架库位、容器信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param containerShiftDOList + */ + private void setStorageLocationInfoByContainer(List containerShiftDOList){ + for (ContainerShiftDO containerShiftDO : containerShiftDOList){ + List shiftMoveMaterialQuantityList = containerShiftDO.getChildren(); + if (CollectionUtils.isEmpty(shiftMoveMaterialQuantityList)){ + continue; + } + shiftMoveMaterialQuantityList.forEach(shiftMoveMaterialQuantityPO -> { + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shiftMoveMaterialQuantityPO.getNewStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + shiftMoveMaterialQuantityPO.setNewStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + shiftMoveMaterialQuantityPO.setNewStorageCode(storageLocationFeignPO.getStorageCode()); + shiftMoveMaterialQuantityPO.setNewStorageName(storageLocationFeignPO.getStorageName()); + shiftMoveMaterialQuantityPO.setNewStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + shiftMoveMaterialQuantityPO.setNewStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + shiftMoveMaterialQuantityPO.setNewStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + + //获取容器详情 + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shiftMoveMaterialQuantityPO.getContainerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + shiftMoveMaterialQuantityPO.setContainerCode(containerFeignPO.getContainerCode()); + shiftMoveMaterialQuantityPO.setContainerType(containerFeignPO.getContainerType()); + shiftMoveMaterialQuantityPO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + }); + } + } + + /** + * @description 判断移位数量是否与计划数量相等 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param shiftQuantity + * @return Integer + */ + private Integer judgeShiftQuantity(BigDecimal shiftQuantity, BigDecimal quantity){ + if (shiftQuantity.compareTo(quantity) > 0){ + throw new ServiceException("移位数量不能大于计划数量"); + } else if (shiftQuantity.compareTo(quantity) == 0) { + return 4; + } else { + return 3; + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java new file mode 100644 index 000000000..b5184043f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java @@ -0,0 +1,95 @@ +package com.mhd.wms.application.service.shiftMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import com.mhd.wms.domain.shiftMaterialDetail.service.ShiftMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 移位物料明细ApplicationService + * + * @author gen + * @date 2024-07-02 + */ +@Service +@Slf4j +public class ShiftMaterialDetailApplicationService { + @Autowired + private ShiftMaterialDetailDomainService shiftMaterialDetailDomainService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询移位物料明细列表 + */ + public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + shiftMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return shiftMaterialDetailDomainService.queryList(shiftMaterialDetailDO); + } + + /** + * 分页查询分组移位物料明细列表 + */ + public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null) { + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1) { + shiftMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return shiftMaterialDetailDomainService.queryGroupList(shiftMaterialDetailDO); + } + + + /** + * 新增移位物料明细 + */ + public Boolean insert(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailDomainService.insert(shiftMaterialDetailDO); + } + + /** + * 修改移位物料明细 + */ + public Boolean update(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailDomainService.update(shiftMaterialDetailDO); + } + + /** + * 批量删除移位物料明细 + */ + public boolean delete(Long[] shiftIoDetailIds) { + return shiftMaterialDetailDomainService.delete(shiftIoDetailIds); + } + + /** + * 获取移位物料明细详细信息 + */ + public ShiftMaterialDetailPO getInfo(Long shiftIoDetailId) { + return shiftMaterialDetailDomainService.getInfo(shiftIoDetailId); + } + + + /** + * 物料移位 + */ + + public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailDomainService.getShiftMaterialDetail(shiftMaterialDetailDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java new file mode 100644 index 000000000..221e24a65 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java @@ -0,0 +1,165 @@ +package com.mhd.wms.application.service.sowingDistributionDetails; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.StorageSectionFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.domain.sowingDistributionDetails.service.SowingDistributionDetailsDomainService; +import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO; +import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 播种分货明细表ApplicationService + * + * @author gen + * @date 2024-06-05 + */ +@Service +@Slf4j +public class SowingDistributionDetailsApplicationService { + @Autowired + private SowingDistributionDetailsDomainService sowingDistributionDetailsDomainService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询播种分货明细表列表 + */ + + public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + sowingDistributionDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return sowingDistributionDetailsDomainService.queryList(sowingDistributionDetailsDO); + } + + + /** + * 新增播种分货明细表 + */ + public Boolean insert(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + + return sowingDistributionDetailsDomainService.insert(sowingDistributionDetailsDO); + } + + /** + * 修改播种分货明细表 + */ + public Boolean update(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + return sowingDistributionDetailsDomainService.update(sowingDistributionDetailsDO); + } + + /** + * 批量删除播种分货明细表 + */ + public boolean delete(Long[] waveOutOrderRelevanceIds) { + return sowingDistributionDetailsDomainService.delete(waveOutOrderRelevanceIds); + } + + /** + * 获取播种分货明细表详细信息 + */ + public SowingDistributionDetailsPO getInfo(Long waveOutOrderRelevanceId) + { + return sowingDistributionDetailsDomainService.getInfo(waveOutOrderRelevanceId); + } + + + /** + * @description 播种分单 + * @author ZhouGY + * @date 2024/6/6 14:43 + * @param allocationSowingWallDO + * @return List + */ + public List allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO){ + return sowingDistributionDetailsDomainService.allocationSowingWall(allocationSowingWallDO); + } + + /** + * @description 物料扫码 将物料分配至对应的播种墙 + * @author ZhouGY + * @date 2024/6/6 16:16 + * @param allocationSowingWallDO + * @return WaveOutOrderRelevancePO + */ + public SowingDistributionDetailsPO materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO){ + return sowingDistributionDetailsDomainService.materialScanCodeAllocationSowing(allocationSowingWallDO); + } + + /** + * @description 按单分货 + * @author ZhouGY + * @date 2024/6/6 14:43 + * @param allocationByOrderDO + * @return List + */ + public List allocationByOrder(AllocationByOrderDO allocationByOrderDO){ + return sowingDistributionDetailsDomainService.allocationByOrder(allocationByOrderDO); + } + + /** + * @description 物料扫码 将物料分配至对应的出库单物料明细 + * @author ZhouGY + * @date 2024/6/6 16:16 + * @param allocationByOrderDO + * @return WaveOutOrderRelevancePO + */ + public SowingDistributionDetailsPO materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO){ + //封装集货库区信息 + storageSectionParam(allocationByOrderDO); + //封装上架库区信息 + storageLocationParam(allocationByOrderDO); + return sowingDistributionDetailsDomainService.materialScanCodeAllocationByOrder(allocationByOrderDO); + } + + /** + * @description 封装集货库区信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param allocationByOrderDO + */ + private void storageSectionParam(AllocationByOrderDO allocationByOrderDO){ + AjaxResult ajaxResult = systemServiceFeign.getStorageSectionInfoByStorageSectionId(allocationByOrderDO.getStorageSectionId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取集货库区信息失败"); + } + StorageSectionFeignPO storageSectionFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageSectionFeignPO.class); + allocationByOrderDO.setStorageCode(storageSectionFeignPO.getStorageCode()); + allocationByOrderDO.setStorageName(storageSectionFeignPO.getStorageName()); + } + + /** + * @description 封装集货库位信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param allocationByOrderDO + */ + private void storageLocationParam(AllocationByOrderDO allocationByOrderDO){ + AjaxResult ajaxResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(allocationByOrderDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取集货库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageLocationFeignPO.class); + allocationByOrderDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + allocationByOrderDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java new file mode 100644 index 000000000..c49c15cca --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java @@ -0,0 +1,86 @@ +package com.mhd.wms.application.service.sowingWall; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; +import com.mhd.wms.domain.sowingWall.service.SowingWallDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 播种墙管理ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class SowingWallApplicationService { + @Autowired + private SowingWallDomainService sowingWallDomainService; + + + /** + * 分页查询播种墙管理列表 + */ + + public List queryList(SowingWallDO sowingWallDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + sowingWallDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return sowingWallDomainService.queryList(sowingWallDO); + } + + + /** + * 新增播种墙管理 + */ + public Boolean insert(SowingWallDO sowingWallDO) { + + return sowingWallDomainService.insert(sowingWallDO); + } + + /** + * 修改播种墙管理 + */ + public Boolean update(SowingWallDO sowingWallDO) { + return sowingWallDomainService.update(sowingWallDO); + } + + /** + * 批量删除播种墙管理 + */ + public boolean delete(Long[] sowingWallIds) { + return sowingWallDomainService.delete(sowingWallIds); + } + + /** + * 获取播种墙管理详细信息 + */ + public SowingWallPO getInfo(Long sowingWallId) + { + return sowingWallDomainService.getInfo(sowingWallId); + } + + + /** + * @description 根据id作废播种墙 + * @author ZhouGY + * @date 2024/5/13 15:48 + * @param sowingWallIds + * @return Boolean + */ + public Boolean nullifyByIds(Long[] sowingWallIds){ + return sowingWallDomainService.nullifyByIds(sowingWallIds); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java new file mode 100644 index 000000000..022d8a2d7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java @@ -0,0 +1,101 @@ +package com.mhd.wms.application.service.statementStatistics; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingDetail.service.InventoryStandingDetailDomainService; +import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 报表管理ApplicationService + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class StatementStatisticsService { + @Autowired + private MaterialInventoryDomainService materialInventoryDomainService; + @Autowired + private InventoryStandingDetailDomainService inventoryStandingDetailDomainService; + + /** + * 分页查询即时库存列表 + */ + + public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + immediateInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + immediateInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return materialInventoryDomainService.queryImmediateInventoryList(immediateInventoryDO); + } + + /** + * 分页查询入库日报表列表 + */ + + public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryStandingDetailDomainService.queryWarehousingReportList(warehousingReportDO); + } + /** + * 分页查询出库日报表列表 + */ + + public List queryOutboundReportList(WarehousingReportDO warehousingReportDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryStandingDetailDomainService.queryOutboundReportList(warehousingReportDO); + } + + /** + * 分页查询出进出存合并报表列表 + */ + + public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return inventoryStandingDetailDomainService.queryWarehousingAndOutboundReportList(warehousingReportDO); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java new file mode 100644 index 000000000..4db45edd8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java @@ -0,0 +1,228 @@ +package com.mhd.wms.application.service.stockInOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockInOrderApplicationService { + @Autowired + private StockInOrderDomainService stockInOrderDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询入库单列表 + */ + + public List queryList(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockInOrderDomainService.queryList(stockInOrderDO); + } + + + /** + * 新增入库单 + */ + public Boolean insert(StockInOrderDO stockInOrderDO) { + //设置仓库 + setWarehouseInfo(stockInOrderDO); + //设置货主信息 + shipperParam(stockInOrderDO); + //设置供应商信息 + supplierParam(stockInOrderDO); + //设置数据字典键值 + setDataDict(stockInOrderDO); + return stockInOrderDomainService.insert(stockInOrderDO); + } + + /** + * 修改入库单 + */ + public Boolean update(StockInOrderDO stockInOrderDO) { + //设置仓库 + setWarehouseInfo(stockInOrderDO); + //设置货主信息 + shipperParam(stockInOrderDO); + //设置供应商信息 + supplierParam(stockInOrderDO); + //设置数据字典键值 + setDataDict(stockInOrderDO); + return stockInOrderDomainService.update(stockInOrderDO); + } + + /** + * 批量删除入库单 + */ + public boolean delete(Long[] inOrderIds) { + return stockInOrderDomainService.delete(inOrderIds); + } + + /** + * 获取入库单详细信息 + */ + public StockInOrderPO getInfo(Long inOrderId) + { + return stockInOrderDomainService.getInfo(inOrderId); + } + + + /** + * @description 审核入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean auditState(StockInOrderDO stockInOrderDO){ + return stockInOrderDomainService.auditState(stockInOrderDO); + } + + /** + * @description 取消入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean cancelOrder(StockInOrderDO stockInOrderDO){ + return stockInOrderDomainService.cancelOrder(stockInOrderDO); + } + + + /** + * @description 关闭入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean closeOrder(StockInOrderDO stockInOrderDO){ + return stockInOrderDomainService.closeOrder(stockInOrderDO); + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param stockInOrderDO + */ + private void setWarehouseInfo(StockInOrderDO stockInOrderDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + stockInOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + stockInOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 封装货主信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockInOrderDO + */ + private void shipperParam(StockInOrderDO stockInOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockInOrderDO.getShipperId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取货主信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockInOrderDO.setShipperCode(userPo.getUserMemberCode()); + stockInOrderDO.setShipperName(userPo.getUserName()); + } + + /** + * @description 封装供应商信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockInOrderDO + */ + private void supplierParam(StockInOrderDO stockInOrderDO){ + if (ObjectUtil.isNotNull(stockInOrderDO.getSupplierId())){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockInOrderDO.getSupplierId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取供应商信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockInOrderDO.setSupplierName(userPo.getUserName()); + } + } + + /** + * @description 设置数据字典键值 + * @author ZhouGY + * @date 2024/4/7 14:33 + * @param stockInOrderDO + */ + private void setDataDict(StockInOrderDO stockInOrderDO){ + //翻译单据类型 + AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.DOCUMENT_TYPE.getCode()); + if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) { + throw new ServiceException("单据类型数据字典不存在"); + } + List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class); + + SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockInOrderDO.getOrderTypeCode())).findAny().orElse(null); + if (null == documentTypeData) { + throw new ServiceException("单据类型【" + stockInOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员"); + } + stockInOrderDO.setOrderTypeName(documentTypeData.getDictLabel()); + + //翻译优先级别类型 + if (StringUtils.isNotBlank(stockInOrderDO.getPriorityLevelCode())){ + AjaxResult priorityLevelResult = systemServiceFeign.selectListByDictType(DictCode.PRIORITY_LEVEL.getCode()); + if (!"200".equals(String.valueOf(priorityLevelResult.get("code")))) { + throw new ServiceException("优先级别类型数据字典不存在"); + } + List priorityLevelDataList = JSON.parseArray(JSONUtil.toJsonStr(priorityLevelResult.get("data")), SysDictData.class); + + SysDictData priorityLevelData = priorityLevelDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockInOrderDO.getPriorityLevelCode())).findAny().orElse(null); + if (null == priorityLevelData) { + throw new ServiceException("优先级别类型【" + stockInOrderDO.getPriorityLevelCode() + "】数据字典不存在 请联系管理员"); + } + stockInOrderDO.setPriorityLevelName(priorityLevelData.getDictLabel()); + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java new file mode 100644 index 000000000..1424b7e18 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java @@ -0,0 +1,78 @@ +package com.mhd.wms.application.service.stockInTaskOrder; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.domain.stockInTaskOrder.service.StockInTaskOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库作业单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockInTaskOrderApplicationService { + @Autowired + private StockInTaskOrderDomainService stockInTaskOrderDomainService; + + + /** + * 分页查询入库作业单列表 + */ + + public List queryList(StockInTaskOrderDO stockInTaskOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockInTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockInTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockInTaskOrderDomainService.queryList(stockInTaskOrderDO); + } + + + /** + * 新增入库作业单 + */ + public Boolean insert(StockInTaskOrderDO stockInTaskOrderDO) { + + return stockInTaskOrderDomainService.insert(stockInTaskOrderDO); + } + + /** + * 修改入库作业单 + */ + public Boolean update(StockInTaskOrderDO stockInTaskOrderDO) { + return stockInTaskOrderDomainService.update(stockInTaskOrderDO); + } + + /** + * 批量删除入库作业单 + */ + public boolean delete(Long[] inTaskOrderIds) { + return stockInTaskOrderDomainService.delete(inTaskOrderIds); + } + + /** + * 获取入库作业单详细信息 + */ + public StockInTaskOrderPO getInfo(Long inTaskOrderId) + { + return stockInTaskOrderDomainService.getInfo(inTaskOrderId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java new file mode 100644 index 000000000..28e3f82d8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java @@ -0,0 +1,524 @@ +package com.mhd.wms.application.service.stockOutOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 出库单ApplicationService + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class StockOutOrderApplicationService { + @Autowired + private StockOutOrderDomainService stockOutOrderDomainService; + @Autowired + private OutMaterialDetailDomainService outMaterialDetailDomainService; + @Autowired + private MaterialInventoryDomainService materialInventoryDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private IdGenerator idGenerator; + + + /** + * 分页查询出库单列表 + */ + + public List queryList(StockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockOutOrderDomainService.queryList(stockOutOrderDO); + } + + + /** + * 新增出库单 + */ + public Boolean insert(StockOutOrderDO stockOutOrderDO) { + //设置仓库 + setWarehouseInfo(stockOutOrderDO); + //设置货主信息 + shipperParam(stockOutOrderDO); + //设置客户信息 + customerParam(stockOutOrderDO); + //设置数据字典键值 + setDataDict(stockOutOrderDO); + return stockOutOrderDomainService.insert(stockOutOrderDO); + } + + /** + * 修改出库单 + */ + public Boolean update(StockOutOrderDO stockOutOrderDO) { + return stockOutOrderDomainService.update(stockOutOrderDO); + } + + /** + * 修改出库单 + */ + public Boolean close(StockOutOrderDO stockOutOrderDO) { + return stockOutOrderDomainService.close(stockOutOrderDO); + } + + /** + * 批量删除出库单 + */ + public boolean delete(Long[] outOrderIds) { + return stockOutOrderDomainService.delete(outOrderIds); + } + + /** + * 获取出库单详细信息 + */ + public StockOutOrderPO getInfoChildren(Long outOrderId) + { + return stockOutOrderDomainService.getInfoChildren(outOrderId); + } + + /** + * 获取出库单详细信息 + */ + public StockOutOrderPO getInfoByApp(Long outOrderId) + { + return stockOutOrderDomainService.getInfoByApp(outOrderId); + } + + /** + * @description 审核出库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean auditState(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.auditState(stockOutOrderDO); + } + + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean manualAssign(StockOutOrderDO stockOutOrderDO){ + StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); + return stockOutOrderDomainService.manualAssign(assembleStockOutOrderDO); + } + + public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO); + return stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO); + } + + /** + * @description 取消分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean cancelAssign(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.cancelAssign(stockOutOrderDO); + } + + + /** + * @description 复核下发 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean checkTaskDistribution(StockOutOrderDO stockOutOrderDO){ + //设置作业人员信息 + checkOperatorsParam(stockOutOrderDO); + return stockOutOrderDomainService.checkTaskDistribution(stockOutOrderDO); + } + + /** + * @description 生成拣货单 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean genPickingOrder(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.genPickingOrder(stockOutOrderDO); + } + + /** + * 获取出库单复核详细信息 + */ + public StockOutOrderPO getCheckInfo(StockOutOrderDO stockOutOrderDO) { + return stockOutOrderDomainService.getCheckInfo(stockOutOrderDO); + } + + /** + * @description 单件复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public OutMaterialCheckPO singleCheck(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.singleCheck(stockOutOrderDO); + } + + /** + * @description 批量复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean batchCheck(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.batchCheck(stockOutOrderDO); + } + + /** + * @description 批量取消复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean batchCancelCheck(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.batchCancelCheck(stockOutOrderDO); + } + + /** + * @description PDA复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean checkByApp(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.checkByApp(stockOutOrderDO); + } + + /** + * @description 复核确认 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean checkConfirm(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.checkConfirm(stockOutOrderDO); + } + + + /** + * @description 根据指定规则生成波次单 + * @author ZhouGY + * @date 2024/6/7 15:06 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean genWaveOrder(StockOutOrderDO stockOutOrderDO){ + return stockOutOrderDomainService.genWaveOrder(stockOutOrderDO); + } + + /** + * @description 生成补货单 + * @author ZhouGY + * @date 2024/6/15 17:41 + * @param outOrderId + * @return Boolean + */ + public Boolean genReplenishmentNotice(Long outOrderId){ + return stockOutOrderDomainService.genReplenishmentNotice(outOrderId); + } + + + /** + * @description 出库分配 装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutOrderDO + * @return Boolean + */ + private StockOutOrderDO assembleParamByOutOrder(StockOutOrderDO stockOutOrderDO) { + StockOutOrderPO stockOutOrderPO = stockOutOrderDomainService.getInfo(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderPO == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderPO.getStatus() > 4) { + throw new ServiceException("出库单已完成分配"); + } + StockOutOrderDO returnStockOutOrderDO = new StockOutOrderDO(); + returnStockOutOrderDO.setUpdateTime(stockOutOrderDO.getUpdateTime()); + returnStockOutOrderDO.setOutOrderId(stockOutOrderPO.getOutOrderId()); + returnStockOutOrderDO.setOrganizationId(stockOutOrderPO.getOrganizationId()); + returnStockOutOrderDO.setOrganizationName(stockOutOrderPO.getOrganizationName()); + returnStockOutOrderDO.setTopOrganizationId(stockOutOrderPO.getTopOrganizationId()); + returnStockOutOrderDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + OutMaterialDetailDO outMaterialDetailDOByQuery = new OutMaterialDetailDO(); + outMaterialDetailDOByQuery.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + List outMaterialDetailPODbList = outMaterialDetailDomainService.queryList(outMaterialDetailDOByQuery); + Map outMaterialDetailDbMap = outMaterialDetailPODbList.stream().collect(Collectors.toMap(OutMaterialDetailPO::getMaterialDetailId, Function.identity())); + List returnOutMaterialDetailDOList = new ArrayList<>(); + for (OutMaterialDetailDO outMaterialDetailDO : stockOutOrderDO.getMaterialDetailList()){ + //设置物料更多属性信息 + OutMaterialDetailPO outMaterialDetailPO = outMaterialDetailDbMap.get(outMaterialDetailDO.getMaterialDetailId()); + if (outMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (outMaterialDetailDO.getAllocationQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行分配直接跳过 + continue; + } + BigDecimal totalAllocationQuantity = BigDecimal.ZERO;//当前作业分配数量 + //判断收否分配 第一次分配 修改分配数量 +// if (outMaterialDetailPO.getAllocationQuantity().compareTo(BigDecimal.ZERO) == 0){ + if (2 != outMaterialDetailDO.getAllowModify()){ + //设置上架库位 + setStorageLocationInfo(outMaterialDetailDO); + //设置库存信息 + setMaterialInventory(outMaterialDetailDO); + //分配后 设置该记录不允许被修改 + outMaterialDetailDO.setAllowModify(2); + //未分配过货 统计到当前分配单作业分配数 + totalAllocationQuantity = outMaterialDetailDO.getAllocationQuantity(); + } + //判断是否存在子项 + List returnOutMaterialDetailDOChildList = new ArrayList<>(); + List outMaterialDetailDOChildList = outMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(outMaterialDetailDOChildList)){ + for (OutMaterialDetailDO outMaterialDetailDOChild : outMaterialDetailDOChildList){ + OutMaterialDetailPO outMaterialDetailPOChildDb = outMaterialDetailDbMap.get(outMaterialDetailDOChild.getMaterialDetailId()); + if (outMaterialDetailPOChildDb != null){ + continue; + } + OutMaterialDetailDO returnOutMaterialDetailDOChild = new OutMaterialDetailDO(); + BeanUtils.copyProperties(outMaterialDetailPO, returnOutMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + BeanUtils.copyProperties(outMaterialDetailDOChild, returnOutMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDOChild)); + if (ObjectUtil.isNotNull(returnOutMaterialDetailDOChild.getMaterialDetailId()) && returnOutMaterialDetailDOChild.getMaterialDetailId() == 0){ + returnOutMaterialDetailDOChild.setMaterialDetailId(null); + } + //设置上架库位 + setStorageLocationInfo(outMaterialDetailDO); + //设置库存信息 + setMaterialInventory(outMaterialDetailDO); + //分配后 设置该记录不允许被修改 + returnOutMaterialDetailDOChild.setAllowModify(2); + returnOutMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnOutMaterialDetailDOChild.setLevel(2); + returnOutMaterialDetailDOChild.setParentUniqueId(outMaterialDetailPO.getUniqueId()); + returnOutMaterialDetailDOChildList.add(returnOutMaterialDetailDOChild); + totalAllocationQuantity = totalAllocationQuantity.add(returnOutMaterialDetailDOChild.getAllocationQuantity()); + } + } + //主单当分配作业数量和 + outMaterialDetailDO.setAlreadyAllocationQuantity(totalAllocationQuantity); + OutMaterialDetailDO returnOutMaterialDetailDO = new OutMaterialDetailDO(); + BeanUtils.copyProperties(outMaterialDetailPO, returnOutMaterialDetailDO); + BeanUtils.copyProperties(outMaterialDetailDO, returnOutMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDO)); + returnOutMaterialDetailDO.setChildren(returnOutMaterialDetailDOChildList); + returnOutMaterialDetailDOList.add(returnOutMaterialDetailDO); + } + returnStockOutOrderDO.setMaterialDetailList(returnOutMaterialDetailDOList); + return returnStockOutOrderDO; + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param stockOutOrderDO + */ + private void setWarehouseInfo(StockOutOrderDO stockOutOrderDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockOutOrderDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + stockOutOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + stockOutOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 封装货主信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockOutOrderDO + */ + private void shipperParam(StockOutOrderDO stockOutOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getShipperId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取货主信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockOutOrderDO.setShipperCode(userPo.getUserMemberCode()); + stockOutOrderDO.setShipperName(userPo.getUserName()); + } + + /** + * @description 封装客户信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockOutOrderDO + */ + private void customerParam(StockOutOrderDO stockOutOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getCustomerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取客户信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode()); + stockOutOrderDO.setCustomerName(userPo.getUserName()); + } + + /** + * @description 设置数据字典键值 + * @author ZhouGY + * @date 2024/4/7 14:33 + * @param stockOutOrderDO + */ + private void setDataDict(StockOutOrderDO stockOutOrderDO){ + //翻译单据类型 + AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.OUT_DOCUMENT_TYPE.getCode()); + if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) { + throw new ServiceException("单据类型数据字典不存在"); + } + List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class); + + SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockOutOrderDO.getOrderTypeCode())).findAny().orElse(null); + if (null == documentTypeData) { + throw new ServiceException("单据类型【" + stockOutOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员"); + } + stockOutOrderDO.setOrderTypeName(documentTypeData.getDictLabel()); + + if (StringUtils.isNotBlank(stockOutOrderDO.getPriorityLevelCode())){ + //翻译优先级别类型 + AjaxResult priorityLevelResult = systemServiceFeign.selectListByDictType(DictCode.PRIORITY_LEVEL.getCode()); + if (!"200".equals(String.valueOf(priorityLevelResult.get("code")))) { + throw new ServiceException("优先级别类型数据字典不存在"); + } + List priorityLevelDataList = JSON.parseArray(JSONUtil.toJsonStr(priorityLevelResult.get("data")), SysDictData.class); + + SysDictData priorityLevelData = priorityLevelDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockOutOrderDO.getPriorityLevelCode())).findAny().orElse(null); + if (null == priorityLevelData) { + throw new ServiceException("优先级别类型【" + stockOutOrderDO.getPriorityLevelCode() + "】数据字典不存在 请联系管理员"); + } + stockOutOrderDO.setPriorityLevelName(priorityLevelData.getDictLabel()); + } + } + + /** + * @description 设置上架库位信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param outMaterialDetailDO + */ + private void setStorageLocationInfo(OutMaterialDetailDO outMaterialDetailDO){ + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(outMaterialDetailDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + outMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId()); + outMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); + outMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName()); + outMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + outMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode()); + outMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName()); + outMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + outMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + outMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockOutOrderDO + */ + private void checkOperatorsParam(StockOutOrderDO stockOutOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getCheckOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockOutOrderDO.setCheckOperatorsName(userPo.getUserName()); + } + + /** + * @description 设置库存信息 + * @author ZhouGY + * @date 2024/7/19 20:17 + * @param outMaterialDetailDO + */ + private void setMaterialInventory(OutMaterialDetailDO outMaterialDetailDO){ + if (ObjectUtil.isNull(outMaterialDetailDO.getMaterialInventoryId()) || outMaterialDetailDO.getMaterialInventoryId() == 0){ + return; + } + MaterialInventoryPO materialInventoryPO = materialInventoryDomainService.getInfo(outMaterialDetailDO.getMaterialInventoryId()); + if (materialInventoryPO == null){ + throw new ServiceException("物料库存信息不存在"); + } + outMaterialDetailDO.setBatchNumber(materialInventoryPO.getBatchNumber()); + outMaterialDetailDO.setMaterialStatusCode(materialInventoryPO.getMaterialStatusCode()); + outMaterialDetailDO.setMaterialStatusName(materialInventoryPO.getMaterialStatusName()); + outMaterialDetailDO.setContainerId(materialInventoryPO.getContainerId()); + outMaterialDetailDO.setContainerCode(materialInventoryPO.getContainerCode()); + outMaterialDetailDO.setContainerType(materialInventoryPO.getContainerType()); + outMaterialDetailDO.setContainerTypeName(materialInventoryPO.getContainerTypeName()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java new file mode 100644 index 000000000..3d4a4bdfa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java @@ -0,0 +1,183 @@ +package com.mhd.wms.application.service.stockOutTaskOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.stockOutTaskOrder.service.StockOutTaskOrderDomainService; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.service.TaskPickingMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 拣货作业单ApplicationService + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class StockOutTaskOrderApplicationService { + @Autowired + private StockOutTaskOrderDomainService stockOutTaskOrderDomainService; + @Autowired + private TaskPickingMaterialDetailDomainService taskPickingMaterialDetailDomainService; + + + /** + * 分页查询拣货作业单列表 + */ + + public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockOutTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockOutTaskOrderDomainService.queryList(stockOutTaskOrderDO); + } + + + /** + * 新增拣货作业单 + */ + public Boolean insert(StockOutTaskOrderDO stockOutTaskOrderDO) { + + return stockOutTaskOrderDomainService.insert(stockOutTaskOrderDO); + } + + /** + * 修改拣货作业单 + */ + public Boolean update(StockOutTaskOrderDO stockOutTaskOrderDO) { + return stockOutTaskOrderDomainService.update(stockOutTaskOrderDO); + } + + /** + * 批量删除拣货作业单 + */ + public boolean delete(Long[] outTaskOrderIds) { + return stockOutTaskOrderDomainService.delete(outTaskOrderIds); + } + + /** + * 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfo(Long outTaskOrderId) + { + return stockOutTaskOrderDomainService.getInfo(outTaskOrderId); + } + + /** + * 按库位拣货 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfoByStorageLocation(Long outTaskOrderId) + { + return stockOutTaskOrderDomainService.getInfoByStorageLocation(outTaskOrderId); + } + + /** + *按物料拣货 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfoByMaterial(Long outTaskOrderId) + { + return stockOutTaskOrderDomainService.getInfoByMaterial(outTaskOrderId); + } + + /** + * @description 按物料拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutTaskOrderDO + * @return Boolean + */ + public Boolean pickingByMaterial(StockOutTaskOrderDO stockOutTaskOrderDO){ + StockOutTaskOrderDO assembleStockOutTaskOrderDO = assembleParamByTaskOrder(stockOutTaskOrderDO); + return stockOutTaskOrderDomainService.pickingByMaterial(assembleStockOutTaskOrderDO); + } + + /** + * @description 完成拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param outTaskOrderId + * @return Boolean + */ + public Boolean completePicking(Long outTaskOrderId){ + return stockOutTaskOrderDomainService.completePicking(outTaskOrderId); + } + + /** + * @description 拣货 装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutTaskOrderDO + * @return Boolean + */ + private StockOutTaskOrderDO assembleParamByTaskOrder(StockOutTaskOrderDO stockOutTaskOrderDO) { + StockOutTaskOrderPO stockOutTaskOrderPO = stockOutTaskOrderDomainService.getInfo(stockOutTaskOrderDO.getOutTaskOrderId()); + if (stockOutTaskOrderPO == null){ + throw new ServiceException("拣货作业单不存在"); + } + if (stockOutTaskOrderPO.getStatus() > 2) { + throw new ServiceException("拣货作业单已完成拣货"); + } + StockOutTaskOrderDO returnStockOutTaskOrderDO = new StockOutTaskOrderDO(); + returnStockOutTaskOrderDO.setUpdateTime(stockOutTaskOrderDO.getUpdateTime()); + returnStockOutTaskOrderDO.setOutTaskOrderId(stockOutTaskOrderPO.getOutTaskOrderId()); + returnStockOutTaskOrderDO.setOrganizationId(stockOutTaskOrderPO.getOrganizationId()); + returnStockOutTaskOrderDO.setOrganizationName(stockOutTaskOrderPO.getOrganizationName()); + returnStockOutTaskOrderDO.setTopOrganizationId(stockOutTaskOrderPO.getTopOrganizationId()); + returnStockOutTaskOrderDO.setTaskNumber(stockOutTaskOrderPO.getTaskNumber()); + TaskPickingMaterialDetailDO taskPickingMaterialDetailDOByQuery = new TaskPickingMaterialDetailDO(); + taskPickingMaterialDetailDOByQuery.setTaskNumber(stockOutTaskOrderPO.getTaskNumber()); + List taskPickingMaterialDetailPODbList = taskPickingMaterialDetailDomainService.queryList(taskPickingMaterialDetailDOByQuery); + Map taskPickingMaterialDetailDbMap = taskPickingMaterialDetailPODbList.stream().collect(Collectors.toMap(TaskPickingMaterialDetailPO::getMaterialDetailId, Function.identity())); + List returnTaskPickingMaterialDetailDOList = new ArrayList<>(); + for (TaskPickingMaterialDetailDO taskPickingMaterialDetailDO : stockOutTaskOrderDO.getTaskPickingMaterialDetailList()){ + //设置物料更多属性信息 + TaskPickingMaterialDetailPO taskPickingMaterialDetailPO = taskPickingMaterialDetailDbMap.get(taskPickingMaterialDetailDO.getMaterialDetailId()); + if (taskPickingMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (ObjectUtil.isNull(taskPickingMaterialDetailDO.getActualQuantity()) || taskPickingMaterialDetailDO.getActualQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行拣货直接跳过 + continue; + } + TaskPickingMaterialDetailDO returnTaskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(taskPickingMaterialDetailPO, returnTaskPickingMaterialDetailDO); + returnTaskPickingMaterialDetailDO.setActualQuantity(taskPickingMaterialDetailDO.getActualQuantity()); + //是否开启了序列号管理 + if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + taskPickingMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnTaskPickingMaterialDetailDO.setMaterialDetailSerialNumberList(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnTaskPickingMaterialDetailDOList.add(returnTaskPickingMaterialDetailDO); + } + returnStockOutTaskOrderDO.setTaskPickingMaterialDetailList(returnTaskPickingMaterialDetailDOList); + return returnStockOutTaskOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java new file mode 100644 index 000000000..392287747 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java @@ -0,0 +1,743 @@ +package com.mhd.wms.application.service.stockReceiptOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.DateUtils; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.*; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.NoReceiptOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 收货单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockReceiptOrderApplicationService { + @Autowired + private StockReceiptOrderDomainService stockReceiptOrderDomainService; + @Autowired + private ReceiptMaterialDetailDomainService receiptMaterialDetailDomainService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private IdGenerator idGenerator; + + + /** + * 分页查询收货单列表 + */ + + public List queryList(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockReceiptOrderDomainService.queryList(stockReceiptOrderDO); + } + + /** + * 修改收货单 + */ + public Boolean update(StockReceiptOrderDO stockReceiptOrderDO) { + return stockReceiptOrderDomainService.update(stockReceiptOrderDO); + } + + /** + * 批量删除收货单 + */ + public boolean delete(Long[] receiptOrderIds) { + return stockReceiptOrderDomainService.delete(receiptOrderIds); + } + + /** + * 获取收货单详细信息 + */ + public StockReceiptOrderPO getInfo(Long receiptOrderId) + { + StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(receiptOrderId); + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List receiptMaterialDetailPOList = receiptMaterialDetailDomainService.queryListChildren(receiptMaterialDetailDO); + stockReceiptOrderPO.setMaterialDetailList(receiptMaterialDetailPOList); + return stockReceiptOrderPO; + } + + /** + * 获取收货单详细信息 + */ + public StockReceiptOrderPO getInfoByApp(Long receiptOrderId) + { + return stockReceiptOrderDomainService.getInfoByApp(receiptOrderId); + } + + + /** + * @description 分配月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean allocationPlatform(StockReceiptOrderDO stockReceiptOrderDO){ + //封装月台信息 + platformParam(stockReceiptOrderDO); + return stockReceiptOrderDomainService.allocationPlatform(stockReceiptOrderDO); + } + + /** + * @description 释放月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean releasePlatform(StockReceiptOrderDO stockReceiptOrderDO){ + return stockReceiptOrderDomainService.releasePlatform(stockReceiptOrderDO); + } + + + /** + * @description 任务下发 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean taskDistribution(StockReceiptOrderDO stockReceiptOrderDO){ + //设置作业人员信息 + operatorsParam(stockReceiptOrderDO); + return stockReceiptOrderDomainService.taskDistribution(stockReceiptOrderDO); + } + + /** + * @description 收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){ + //收货装配参数 + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO); + } + + /** + * @description 收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean receivingGoodsByApp(StockReceiptOrderDO stockReceiptOrderDO){ + List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); + receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> { + List receiptMaterialDetailDOChildrenList1 = receiptMaterialDetailDO.getChildren(); + ReceiptMaterialDetailDO receiptMaterialDetailDOChildren = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0); + receiptMaterialDetailDO.setMaterialDetailId(receiptMaterialDetailDOChildren.getMaterialDetailId()); + receiptMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + receiptMaterialDetailDO.setMaterialStatusCode(receiptMaterialDetailDOChildren.getMaterialStatusCode()); + receiptMaterialDetailDO.setBatchNumber(receiptMaterialDetailDOChildren.getBatchNumber()); + receiptMaterialDetailDO.setContainerId(receiptMaterialDetailDOChildren.getContainerId()); + receiptMaterialDetailDO.setLevel(receiptMaterialDetailDOChildren.getLevel()); + receiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDOChildren.getMaterialMoreDetailList()); + receiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChildren.getMaterialDetailSerialNumberList()); + //只留二级 + List receiptMaterialDetailDOChildrenList2 = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList()); + receiptMaterialDetailDO.setChildren(receiptMaterialDetailDOChildrenList2); + }); + //收货装配参数 + StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO); + return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO); + } + + /** + * @description 完成收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param receiptOrderId + * @return Boolean + */ + public Boolean completeReceipt(Long receiptOrderId){ + return stockReceiptOrderDomainService.completeReceipt(receiptOrderId); + } + + public Boolean genStockShelfOrder(Long receiptOrderId){ + return stockReceiptOrderDomainService.genStockShelfOrder(receiptOrderId); + } + + /** + * @description 整单收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param receiptOrderIds + * @return Boolean + */ + public Boolean entireReceipt(Long[] receiptOrderIds){ + return stockReceiptOrderDomainService.entireReceipt(receiptOrderIds); + } + + /** + * @description 无单收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean noOrderReceipt(StockReceiptOrderDO stockReceiptOrderDO){ + //设置仓库 + setWarehouseInfo(stockReceiptOrderDO); + //设置货主信息 + shipperParam(stockReceiptOrderDO); + //设置供应商信息 + supplierParam(stockReceiptOrderDO); + //收货装配参数 + List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); + receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> { + List receiptMaterialDetailDOChildrenList1 = receiptMaterialDetailDO.getChildren(); + ReceiptMaterialDetailDO receiptMaterialDetailDOChildren = receiptMaterialDetailDOChildrenList1.get(0); + receiptMaterialDetailDO.setMaterialDetailId(receiptMaterialDetailDOChildren.getMaterialDetailId()); + receiptMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + receiptMaterialDetailDO.setMaterialStatusCode(receiptMaterialDetailDOChildren.getMaterialStatusCode()); + receiptMaterialDetailDO.setBatchNumber(receiptMaterialDetailDOChildren.getBatchNumber()); + receiptMaterialDetailDO.setContainerId(receiptMaterialDetailDOChildren.getContainerId()); + receiptMaterialDetailDO.setLevel(receiptMaterialDetailDOChildren.getLevel()); + receiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDOChildren.getMaterialMoreDetailList()); + receiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChildren.getMaterialDetailSerialNumberList()); + //只留二级 + List receiptMaterialDetailDOChildrenList2 = new ArrayList<>(); + for (int i = 0; i < receiptMaterialDetailDOChildrenList1.size(); i++){ + if (i == 0){ + continue; + } + receiptMaterialDetailDOChildrenList2.add(receiptMaterialDetailDOChildrenList1.get(i)); + } + receiptMaterialDetailDO.setChildren(receiptMaterialDetailDOChildrenList2); + }); + NoReceiptOrderDO noReceiptOrderDO = assembleParamByNoOrderReceipt(stockReceiptOrderDO); + return stockReceiptOrderDomainService.noOrderReceipt(noReceiptOrderDO); + } + + /** + * @description 封装月台信息 + * @author ZhouGY + * @date 2024/5/13 10:45 + * @param stockReceiptOrderDO + */ + private void platformParam(StockReceiptOrderDO stockReceiptOrderDO){ + //封装月台信息 + AjaxResult ajaxResult = systemServiceFeign.getPlatformInfoByPlatformId(stockReceiptOrderDO.getPlatformId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取月台信息失败"); + } + PlatformFeignPO platformFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), PlatformFeignPO.class); + stockReceiptOrderDO.setPlatformCode(platformFeignPO.getPlatformCode()); + stockReceiptOrderDO.setPlatformName(platformFeignPO.getPlatformName()); + + //封装月台使用时间信息 + AjaxResult ajaxResult2 = systemServiceFeign.getPlatformUseTimeInfoByPlatformUseTimeId(stockReceiptOrderDO.getPlatformId()); + if(!"200".equals(String.valueOf(ajaxResult2.get("code")))){ + throw new ServiceException("获取月台使用时间信息失败"); + } + PlatformUseTimeFeignPO platformUseTimeFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult2.get("data")), PlatformUseTimeFeignPO.class); + try { + stockReceiptOrderDO.setPlatformUseStartTime(DateUtils.parseDate(platformUseTimeFeignPO.getStartTime(), "HH:mm")); + stockReceiptOrderDO.setPlatformUseEndTime(DateUtils.parseDate(platformUseTimeFeignPO.getEndTime(), "HH:mm")); + } catch (ParseException e) { + throw new RuntimeException(e); + } + } + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockReceiptOrderDO + */ + private void operatorsParam(StockReceiptOrderDO stockReceiptOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockReceiptOrderDO.setOperatorsName(userPo.getUserName()); + } + + /** + * @description 收货装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockReceiptOrderDO + * @return Boolean + */ + private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) { + StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId()); + if (stockReceiptOrderPO == null){ + throw new ServiceException("收货单不存在"); + } + if (stockReceiptOrderPO.getStatus() > 2) { + throw new ServiceException("收货单已完成收货"); + } + StockReceiptOrderDO returnStockReceiptOrderDO = new StockReceiptOrderDO(); + returnStockReceiptOrderDO.setUpdateTime(stockReceiptOrderDO.getUpdateTime()); + returnStockReceiptOrderDO.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId()); + returnStockReceiptOrderDO.setOrganizationId(stockReceiptOrderPO.getOrganizationId()); + returnStockReceiptOrderDO.setOrganizationName(stockReceiptOrderPO.getOrganizationName()); + returnStockReceiptOrderDO.setTopOrganizationId(stockReceiptOrderPO.getTopOrganizationId()); + returnStockReceiptOrderDO.setWarehouseId(stockReceiptOrderPO.getWarehouseId()); + returnStockReceiptOrderDO.setWarehouseCode(stockReceiptOrderPO.getWarehouseCode()); + returnStockReceiptOrderDO.setWarehouseName(stockReceiptOrderPO.getWarehouseName()); + returnStockReceiptOrderDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + returnStockReceiptOrderDO.setInOrderNumber(stockReceiptOrderPO.getInOrderNumber()); + ReceiptMaterialDetailDO receiptMaterialDetailDOByQuery = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDOByQuery.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List receiptMaterialDetailPODbList = receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDOByQuery); + Map receiptMaterialDetailDbMap = receiptMaterialDetailPODbList.stream().collect(Collectors.toMap(ReceiptMaterialDetailPO::getMaterialDetailId, Function.identity())); + BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数 + int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数 + List returnReceiptMaterialDetailDOList = new ArrayList<>(); + for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){ + //设置物料更多属性信息 + ReceiptMaterialDetailPO receiptMaterialDetailPO = receiptMaterialDetailDbMap.get(receiptMaterialDetailDO.getMaterialDetailId()); + if (receiptMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (receiptMaterialDetailDO.getReceiptQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行收货直接跳过 + continue; + } + BigDecimal actualQuantity = BigDecimal.ZERO;//当前作业收货数 + //判断收否收货 第一次收货创建 更多属性 序列号 + if (receiptMaterialDetailPO.getReceiptQuantity().compareTo(BigDecimal.ZERO) == 0){ + //收货后 设置该记录不允许被修改 + receiptMaterialDetailDO.setAllowModify(2); + //未收过货 统计到当前收货单作业收货数 + actualQuantity = receiptMaterialDetailDO.getReceiptQuantity(); + //设置物料状态及容器信息 + setMaterialMoreDetailInfo(receiptMaterialDetailDO); + } + //判断是否存在子项 + List returnReceiptMaterialDetailDOChildList = new ArrayList<>(); + List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){ + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){ + ReceiptMaterialDetailPO receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(receiptMaterialDetailDOChild.getMaterialDetailId()); + if (receiptMaterialDetailPOChildDb != null){ + continue; + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDOChild = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild)); + if (ObjectUtil.isNotNull(returnReceiptMaterialDetailDOChild.getMaterialDetailId()) && returnReceiptMaterialDetailDOChild.getMaterialDetailId() == 0){ + returnReceiptMaterialDetailDOChild.setMaterialDetailId(null); + } + //收货后 设置该记录不允许被修改 + returnReceiptMaterialDetailDOChild.setAllowModify(2); + returnReceiptMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnReceiptMaterialDetailDOChild.setLevel(2); + returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId()); + //设置物料状态及容器信息 + setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild); + //是否开启了序列号管理 + if (receiptMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDOChild.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDOChild.setMaterialMoreDetailList(receiptMaterialDetailDOChild.getMaterialMoreDetailList()); + returnReceiptMaterialDetailDOChildList.add(returnReceiptMaterialDetailDOChild); + actualQuantity = actualQuantity.add(returnReceiptMaterialDetailDOChild.getReceiptQuantity()); + } + } + //已收货数量 = 已收货数量 + 当前作业数量 + receiptMaterialDetailDO.setAlreadyReceiptQuantity(receiptMaterialDetailPO.getAlreadyReceiptQuantity().add(actualQuantity)); + //记录本次收货单收货总数 + totalActualQuantity = totalActualQuantity.add(actualQuantity); + //判断收货数量是否大于计划数量 + Integer receiptStatus = judgeReceiptQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity(), receiptMaterialDetailPO.getQuantity()); + receiptMaterialDetailDO.setReceiptStatus(receiptStatus); + if (receiptStatus > 2){ + totalActualReceiptMaterialQuantity += 1; + } + ReceiptMaterialDetailDO returnReceiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDO); + BeanUtils.copyProperties(receiptMaterialDetailDO, returnReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDO)); + if (receiptMaterialDetailPO.getReceiptStatus() == 1){ + //一级列表 首次收货 + //是否开启了序列号管理 + if (receiptMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDO.getMaterialMoreDetailList()); + }else { + returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>()); + returnReceiptMaterialDetailDO.setMaterialMoreDetailList(new ArrayList<>()); + } + returnReceiptMaterialDetailDO.setChildren(returnReceiptMaterialDetailDOChildList); + returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO); + } + returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList); + returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity); + returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + return returnStockReceiptOrderDO; + } + + + /** + * @description 收货装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockReceiptOrderDO + * @return Boolean + */ + private NoReceiptOrderDO assembleParamByNoOrderReceipt(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + NoReceiptOrderDO noReceiptOrderDO = new NoReceiptOrderDO(); + stockReceiptOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockReceiptOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockReceiptOrderDO.setCreateBy(loginUser.getUserid()); + stockReceiptOrderDO.setCreateByName(loginUser.getUsername()); + stockReceiptOrderDO.setCreateTime(new Date()); + stockReceiptOrderDO.setStatus(3);//已收货 + + //无单收货默认下发给自己 + stockReceiptOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserid()); + //设置作业人员信息 + operatorsParam(stockReceiptOrderDO); + stockReceiptOrderDO.setTaskDistribution(2); + stockReceiptOrderDO.setTaskDistributionTime(new Date()); + BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数 + int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数 + //出库单信息 + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + BeanUtils.copyProperties(stockReceiptOrderDO, stockInOrderDO); + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockInOrderDO.setCreateBy(loginUser.getUserid()); + stockInOrderDO.setCreateByName(loginUser.getUsername()); + stockInOrderDO.setCreateTime(new Date()); + stockInOrderDO.setOrderTypeCode("pu_tong_ru_ku_dan"); + stockInOrderDO.setOrderTypeName("普通入库单"); + stockInOrderDO.setPriorityLevelCode("zui_gao"); + stockInOrderDO.setPriorityLevelName("最高"); + stockInOrderDO.setDirectWarehouse(2); + stockInOrderDO.setStatus(4);//上架中 + stockInOrderDO.setAuditStatus(3); + stockInOrderDO.setAuditBy(loginUser.getUserPo().getUserId()); + stockInOrderDO.setAuditByName(loginUser.getUserPo().getUserName()); + stockInOrderDO.setAuditTime(new Date()); + stockInOrderDO.setOrderSource(3); + List inMaterialDetailDOList = new ArrayList<>(); + for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){ + //设置物料基本信息 + setMaterialDetailInfo(receiptMaterialDetailDO); + //设置物料更多属性信息 + setMaterialMoreDetailInfo(receiptMaterialDetailDO); + //设置物料状态及容器信息 + setMaterialMoreDetailInfo(receiptMaterialDetailDO); + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDO, inMaterialDetailDO); + inMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + inMaterialDetailDO.setInOrderNumber(stockInOrderDO.getInOrderNumber()); + inMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity()); + inMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDO.getReceiptQuantity()); + inMaterialDetailDO.setLevel(1); + inMaterialDetailDO.setCreateBy(loginUser.getUserid()); + inMaterialDetailDO.setCreateByName(loginUser.getUsername()); + inMaterialDetailDO.setCreateTime(new Date()); + + receiptMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + receiptMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + receiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + receiptMaterialDetailDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + receiptMaterialDetailDO.setReceiptOrderNumber(OrderSequence.getOrderCode("SH")); + receiptMaterialDetailDO.setLevel(1); + receiptMaterialDetailDO.setInUniqueId(inMaterialDetailDO.getUniqueId()); + receiptMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity()); + receiptMaterialDetailDO.setAlreadyReceiptQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity()); + //设置物料更多属性信息 + BigDecimal actualQuantity = receiptMaterialDetailDO.getReceiptQuantity();;//当前作业收货数 + //判断是否存在子项 + List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){ + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){ + ReceiptMaterialDetailDO receiptMaterialDetailDOChildByCopy = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDO, receiptMaterialDetailDOChildByCopy); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailDOChildByCopy); + receiptMaterialDetailDOChildByCopy.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + receiptMaterialDetailDOChildByCopy.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + receiptMaterialDetailDOChildByCopy.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + receiptMaterialDetailDOChildByCopy.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + receiptMaterialDetailDOChildByCopy.setReceiptOrderNumber(OrderSequence.getOrderCode("SH")); + receiptMaterialDetailDOChildByCopy.setLevel(2); + receiptMaterialDetailDOChildByCopy.setParentUniqueId(receiptMaterialDetailDO.getUniqueId()); + receiptMaterialDetailDOChildByCopy.setInUniqueId(inMaterialDetailDO.getUniqueId()); + receiptMaterialDetailDOChildByCopy.setQuantity(receiptMaterialDetailDOChild.getReceiptQuantity()); + receiptMaterialDetailDOChildByCopy.setAlreadyReceiptQuantity(receiptMaterialDetailDOChild.getReceiptQuantity()); + BeanUtils.copyProperties(receiptMaterialDetailDOChildByCopy, receiptMaterialDetailDOChild); + //是否开启了序列号管理 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + actualQuantity = actualQuantity.add(receiptMaterialDetailDOChild.getReceiptQuantity()); + } + } + //已收货数量 = 当前作业数量 + receiptMaterialDetailDO.setAlreadyReceiptQuantity(actualQuantity); + //记录本次收货单收货总数 + totalActualQuantity = totalActualQuantity.add(actualQuantity); + receiptMaterialDetailDO.setReceiptStatus(3); + totalActualReceiptMaterialQuantity += 1; + //一级列表 首次收货 + //是否开启了序列号管理 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + inMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity()); + inMaterialDetailDOList.add(inMaterialDetailDO); + } + stockReceiptOrderDO.setReceiptQuantity(totalActualQuantity); + stockReceiptOrderDO.setMaterialQuantity(totalActualReceiptMaterialQuantity); + stockReceiptOrderDO.setReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + stockReceiptOrderDO.setActualQuantity(totalActualQuantity); + stockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity); + stockReceiptOrderDO.setInOrderNumber(stockInOrderDO.getInOrderNumber()); + stockInOrderDO.setQuantity(totalActualQuantity); + stockInOrderDO.setMaterialQuantity(totalActualReceiptMaterialQuantity); + stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList); + noReceiptOrderDO.setStockInOrderDO(stockInOrderDO); + noReceiptOrderDO.setStockReceiptOrderDO(stockReceiptOrderDO); + return noReceiptOrderDO; + } + + /** + * @description 设置物料状态及容器信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param receiptMaterialDetailDO + */ + private void setMaterialMoreDetailInfo(ReceiptMaterialDetailDO receiptMaterialDetailDO){ + + if(ObjectUtil.isNotNull(receiptMaterialDetailDO.getMaterialStatusCode())){ +//翻译物料状态 + AjaxResult materialsStatusResult = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode()); + if (!"200".equals(String.valueOf(materialsStatusResult.get("code")))) { + throw new ServiceException("物料状态数据字典不存在"); + } + List materialsStatusDataList = JSON.parseArray(JSONUtil.toJsonStr(materialsStatusResult.get("data")), SysDictData.class); + + SysDictData materialsStatusData = materialsStatusDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), receiptMaterialDetailDO.getMaterialStatusCode())).findAny().orElse(null); + if (null == materialsStatusData) { + throw new ServiceException("物料状态【" + receiptMaterialDetailDO.getMaterialStatusCode() + "】数据字典不存在 请联系管理员"); + } + receiptMaterialDetailDO.setMaterialStatusName(materialsStatusData.getDictLabel()); + } + + if (ObjectUtil.isNotNull(receiptMaterialDetailDO.getContainerId()) && 0 !=receiptMaterialDetailDO.getContainerId()){ + //获取容器详情 + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(receiptMaterialDetailDO.getContainerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + receiptMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode()); + receiptMaterialDetailDO.setContainerType(containerFeignPO.getContainerType()); + receiptMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + } + + } + + /** + * @description 判断收货数量是否存在超收 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param receiptQuantity + * @return Integer + */ + private Integer judgeReceiptQuantity(BigDecimal receiptQuantity, BigDecimal quantity){ + if (receiptQuantity.compareTo(quantity) > 0){ + return 5; + } else if (receiptQuantity.compareTo(quantity) == 0) { + return 3; + } else { + return 2; + } + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param stockReceiptOrderDO + */ + private void setWarehouseInfo(StockReceiptOrderDO stockReceiptOrderDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockReceiptOrderDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + stockReceiptOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + stockReceiptOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 封装货主信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockReceiptOrderDO + */ + private void shipperParam(StockReceiptOrderDO stockReceiptOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getShipperId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取货主信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockReceiptOrderDO.setShipperCode(userPo.getUserMemberCode()); + stockReceiptOrderDO.setShipperName(userPo.getUserName()); + } + + /** + * @description 封装供应商信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockReceiptOrderDO + */ + private void supplierParam(StockReceiptOrderDO stockReceiptOrderDO){ + if(ObjectUtil.isNull(stockReceiptOrderDO.getSupplierId())){ + return; + } + AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getSupplierId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取供应商信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockReceiptOrderDO.setSupplierName(userPo.getUserName()); + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param receiptMaterialDetailDO + */ + private void setMaterialDetailInfo(ReceiptMaterialDetailDO receiptMaterialDetailDO){ + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(receiptMaterialDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + receiptMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + receiptMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + receiptMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + receiptMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId()); + receiptMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + receiptMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + receiptMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + receiptMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + receiptMaterialDetailDO.setUnitName(packDetailFeignPO.getName()); + receiptMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + receiptMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + receiptMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + receiptMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage()); + receiptMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage()); + receiptMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule()); + receiptMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm()); + receiptMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge()); + receiptMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio()); + + //获取商品规则信息 + MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialGoodsRulePO == null){ + throw new ServiceException("物料商品规则信息不存在"); + } + receiptMaterialDetailDO.setDistributeRuleId(materialGoodsRulePO.getMaterialGoodsRuleId()); + receiptMaterialDetailDO.setDistributeRuleCode(materialGoodsRulePO.getRuleCode()); + receiptMaterialDetailDO.setDistributeRuleName(materialGoodsRulePO.getRuleName()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java new file mode 100644 index 000000000..e9e059efe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -0,0 +1,381 @@ +package com.mhd.wms.application.service.stockShelfOrder; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.ContainerFeignPO; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.shelfMaterialDetail.service.ShelfMaterialDetailDomainService; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 上架单ApplicationService + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockShelfOrderApplicationService { + @Autowired + private StockShelfOrderDomainService stockShelfOrderDomainService; + @Autowired + private ShelfMaterialDetailDomainService shelfMaterialDetailDomainService; + @Autowired + private UserServiceFeign userServiceFeign; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private IdGenerator idGenerator; + + + /** + * 分页查询上架单列表 + */ + + public List queryList(StockShelfOrderDO stockShelfOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + stockShelfOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return stockShelfOrderDomainService.queryList(stockShelfOrderDO); + } + + + /** + * 新增上架单 + */ + public Boolean insert(StockShelfOrderDO stockShelfOrderDO) { + + return stockShelfOrderDomainService.insert(stockShelfOrderDO); + } + + /** + * 修改上架单 + */ + public Boolean update(StockShelfOrderDO stockShelfOrderDO) { + return stockShelfOrderDomainService.update(stockShelfOrderDO); + } + + /** + * 批量删除上架单 + */ + public boolean delete(Long[] shelfOrderIds) { + return stockShelfOrderDomainService.delete(shelfOrderIds); + } + + /** + * 获取上架单详细信息 + */ + public StockShelfOrderPO getInfo(Long shelfOrderId) + { + return stockShelfOrderDomainService.getInfo(shelfOrderId); + } + + /** + * 获取上架单详细信息 + */ + public StockShelfOrderPO getInfoByApp(Long shelfOrderId) { + return stockShelfOrderDomainService.getInfoByApp(shelfOrderId); + } + + /** + * @description 任务下发 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean taskDistribution(StockShelfOrderDO stockReceiptOrderDO){ + //设置作业人员信息 + operatorsParam(stockReceiptOrderDO); + return stockShelfOrderDomainService.taskDistribution(stockReceiptOrderDO); + } + + + /** + * @description 上架 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean upShelf(StockShelfOrderDO stockReceiptOrderDO){ + //上架装配参数 + StockShelfOrderDO assembleStockShelfOrderDO = assembleParamByShelf(stockReceiptOrderDO); + return stockShelfOrderDomainService.upShelf(assembleStockShelfOrderDO); + } + + /** + * @description 收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean upShelfByApp(StockShelfOrderDO stockReceiptOrderDO){ + List shelfMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); + shelfMaterialDetailDOList.forEach(shelfMaterialDetailDO -> { + List shelfMaterialDetailDOChildrenList1 = shelfMaterialDetailDO.getChildren(); + ShelfMaterialDetailDO shelfMaterialDetailDOChildren = shelfMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0); + shelfMaterialDetailDO.setMaterialDetailId(shelfMaterialDetailDOChildren.getMaterialDetailId()); + shelfMaterialDetailDO.setShelvesQuantity(shelfMaterialDetailDOChildren.getShelvesQuantity()); + shelfMaterialDetailDO.setWarehouseId(shelfMaterialDetailDOChildren.getWarehouseId()); + shelfMaterialDetailDO.setStorageSectionId(shelfMaterialDetailDOChildren.getStorageSectionId()); + shelfMaterialDetailDO.setStorageLocationId(shelfMaterialDetailDOChildren.getStorageLocationId()); + shelfMaterialDetailDO.setContainerId(shelfMaterialDetailDOChildren.getContainerId()); + shelfMaterialDetailDO.setLevel(shelfMaterialDetailDOChildren.getLevel()); + shelfMaterialDetailDO.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChildren.getMaterialDetailSerialNumberList()); + //只留二级 + List shelfMaterialDetailDOChildrenList2 = shelfMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList()); + shelfMaterialDetailDO.setChildren(shelfMaterialDetailDOChildrenList2); + }); + //上架装配参数 + StockShelfOrderDO assembleStockShelfOrderDO = assembleParamByShelf(stockReceiptOrderDO); + return stockShelfOrderDomainService.upShelf(assembleStockShelfOrderDO); + } + + + /** + * @description 完成上架 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param shelfOrderId + * @return Boolean + */ + public Boolean completeUpShelf(Long shelfOrderId){ + return stockShelfOrderDomainService.completeUpShelf(shelfOrderId); + } + + /** + * @description 封装作业人员信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param stockShelfOrderDO + */ + private void operatorsParam(StockShelfOrderDO stockShelfOrderDO){ + AjaxResult ajaxResult = userServiceFeign.getInfo(stockShelfOrderDO.getOperatorsBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取作业人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + stockShelfOrderDO.setOperatorsName(userPo.getUserName()); + } + + /** + * @description 收货装配参数 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockShelfOrderDO + * @return Boolean + */ + private StockShelfOrderDO assembleParamByShelf(StockShelfOrderDO stockShelfOrderDO) { + StockShelfOrderPO stockShelfOrderPO = stockShelfOrderDomainService.getInfo(stockShelfOrderDO.getShelfOrderId()); + if (stockShelfOrderPO == null){ + throw new ServiceException("上架单不存在"); + } + if (stockShelfOrderPO.getStatus() > 2) { + throw new ServiceException("上架单已完成上架"); + } + StockShelfOrderDO returnStockShelfOrderDO = new StockShelfOrderDO(); + BeanUtils.copyProperties(stockShelfOrderDO, returnStockShelfOrderDO); + returnStockShelfOrderDO.setShelfOrderId(stockShelfOrderPO.getShelfOrderId()); + returnStockShelfOrderDO.setUpdateTime(stockShelfOrderDO.getUpdateTime()); + returnStockShelfOrderDO.setOrganizationId(stockShelfOrderPO.getOrganizationId()); + returnStockShelfOrderDO.setOrganizationName(stockShelfOrderPO.getOrganizationName()); + returnStockShelfOrderDO.setTopOrganizationId(stockShelfOrderPO.getTopOrganizationId()); + returnStockShelfOrderDO.setWarehouseId(stockShelfOrderPO.getWarehouseId()); + returnStockShelfOrderDO.setWarehouseCode(stockShelfOrderPO.getWarehouseCode()); + returnStockShelfOrderDO.setWarehouseName(stockShelfOrderPO.getWarehouseName()); + returnStockShelfOrderDO.setInOrderNumber(stockShelfOrderPO.getInOrderNumber()); + returnStockShelfOrderDO.setReceiptOrderNumber(stockShelfOrderPO.getReceiptOrderNumber()); + returnStockShelfOrderDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + ShelfMaterialDetailDO shelfMaterialDetailDOByQuery = new ShelfMaterialDetailDO(); + shelfMaterialDetailDOByQuery.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + List shelfMaterialDetailPODbList = shelfMaterialDetailDomainService.queryList(shelfMaterialDetailDOByQuery); + Map receiptMaterialDetailDbMap = shelfMaterialDetailPODbList.stream().collect(Collectors.toMap(ShelfMaterialDetailPO::getMaterialDetailId, Function.identity())); + BigDecimal totalActualQuantity = BigDecimal.ZERO;//上架单当前作业收货数 + int totalActualShelfMaterialQuantity = 0;//上架单收货物料种数 + List returnShelfMaterialDetailDOList = new ArrayList<>(); + for (ShelfMaterialDetailDO shelfMaterialDetailDO : stockShelfOrderDO.getMaterialDetailList()){ + //设置物料更多属性信息 + ShelfMaterialDetailPO shelfMaterialDetailPO = receiptMaterialDetailDbMap.get(shelfMaterialDetailDO.getMaterialDetailId()); + if (shelfMaterialDetailPO == null){ + throw new ServiceException("物料明细不存在"); + } + if (shelfMaterialDetailDO.getShelvesQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行上架直接跳过 + continue; + } + BigDecimal actualQuantity = BigDecimal.ZERO;//当前作业上架数 + //判断收否上架 第一次收货创建 更多属性 序列号 + if (shelfMaterialDetailPO.getShelvesQuantity().compareTo(BigDecimal.ZERO) == 0){ + //设置上架信息 + setStorageLocationInfo(shelfMaterialDetailDO); + //设置容器信息 + setContainerInfo(shelfMaterialDetailDO); + //上架后 设置该记录不允许被修改 + shelfMaterialDetailDO.setAllowModify(2); + //未上过架 统计到当前收货单作业收货数 + actualQuantity = shelfMaterialDetailDO.getShelvesQuantity(); + } + //判断是否存在子项 + List returnShelfMaterialDetailDOChildList = new ArrayList<>(); + List shelfMaterialDetailDOChildList = shelfMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(shelfMaterialDetailDOChildList)){ + for (ShelfMaterialDetailDO shelfMaterialDetailDOChild : shelfMaterialDetailDOChildList){ + ShelfMaterialDetailPO shelfMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(shelfMaterialDetailDOChild.getMaterialDetailId()); + if (shelfMaterialDetailPOChildDb != null){ + continue; + } + ShelfMaterialDetailDO returnShelfMaterialDetailDOChild = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(shelfMaterialDetailPO, returnShelfMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + BeanUtils.copyProperties(shelfMaterialDetailDOChild, returnShelfMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetailDOChild)); + //设置上架信息 + setStorageLocationInfo(shelfMaterialDetailDOChild); + //设置容器信息 + setContainerInfo(returnShelfMaterialDetailDOChild); + //上架后 设置该记录不允许被修改 + shelfMaterialDetailDO.setAllowModify(2); + returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChild.getMaterialDetailSerialNumberList()); + returnShelfMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + returnShelfMaterialDetailDOChild.setLevel(2); + returnShelfMaterialDetailDOChild.setParentUniqueId(shelfMaterialDetailPO.getUniqueId()); + //是否开启了序列号管理 + if (shelfMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(shelfMaterialDetailPO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + shelfMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDO.getMaterialDetailSerialNumberList()); + returnShelfMaterialDetailDOChildList.add(returnShelfMaterialDetailDOChild); + actualQuantity = actualQuantity.add(returnShelfMaterialDetailDOChild.getShelvesQuantity()); + } + } + //现在已上架数量=之前已上架数量+现在作业数量 + shelfMaterialDetailDO.setAlreadyShelvesQuantity(shelfMaterialDetailPO.getAlreadyShelvesQuantity().add(actualQuantity)); + //记录本次上架单上架总数 + totalActualQuantity = totalActualQuantity.add(actualQuantity); + //判断上架数量是否大于计划数量 + Integer shelvesStatus = judgeShelfQuantity(shelfMaterialDetailDO.getAlreadyShelvesQuantity(), shelfMaterialDetailPO.getQuantity()); + shelfMaterialDetailDO.setShelvesStatus(shelvesStatus); + if (shelvesStatus > 2){ + totalActualShelfMaterialQuantity += 1; + } + ShelfMaterialDetailDO returnShelfMaterialDetailDO = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(shelfMaterialDetailPO, returnShelfMaterialDetailDO); + BeanUtils.copyProperties(shelfMaterialDetailDO, returnShelfMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetailDO)); + if (shelfMaterialDetailPO.getShelvesStatus() == 1){ + //首次上架 + //是否开启了序列号管理 + if (shelfMaterialDetailPO.getSerialNumberManage() == 1){ + if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())){ + throw new ServiceException("物料【" + shelfMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + } + returnShelfMaterialDetailDO.setMaterialDetailSerialNumberList(shelfMaterialDetailDO.getMaterialDetailSerialNumberList()); + }else { + returnShelfMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + returnShelfMaterialDetailDO.setChildren(returnShelfMaterialDetailDOChildList); + returnShelfMaterialDetailDOList.add(returnShelfMaterialDetailDO); + } + returnStockShelfOrderDO.setMaterialDetailList(returnShelfMaterialDetailDOList); + returnStockShelfOrderDO.setActualQuantity(totalActualQuantity); + returnStockShelfOrderDO.setActualReceiptMaterialQuantity(totalActualShelfMaterialQuantity); + return returnStockShelfOrderDO; + } + + /** + * @description 设置上架库位信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param shelfMaterialDetailDO + */ + private void setStorageLocationInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){ + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shelfMaterialDetailDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + shelfMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId()); + shelfMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); + shelfMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName()); + shelfMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + shelfMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode()); + shelfMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName()); + shelfMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + shelfMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + shelfMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + + /** + * @description 设置物料状态及容器信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param shelfMaterialDetailDO + */ + private void setContainerInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){ + + //获取容器详情 + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + shelfMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode()); + shelfMaterialDetailDO.setContainerType(containerFeignPO.getContainerType()); + shelfMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + } + + /** + * @description 判断上架数量是否存在超收 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param shelfQuantity + * @return Integer + */ + private Integer judgeShelfQuantity(BigDecimal shelfQuantity, BigDecimal quantity){ + if (shelfQuantity.compareTo(quantity) > 0){ + return 5; + } else if (shelfQuantity.compareTo(quantity) == 0) { + return 3; + } else { + return 2; + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java new file mode 100644 index 000000000..ab26bdc7f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.taskReceiptMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.service.TaskReceiptMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 收货作业单物料详情ApplicationService + * + * @author gen + * @date 2024-06-19 + */ +@Service +@Slf4j +public class TaskReceiptMaterialDetailApplicationService { + @Autowired + private TaskReceiptMaterialDetailDomainService taskReceiptMaterialDetailDomainService; + + + /** + * 分页查询收货作业单物料详情列表 + */ + + public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + taskReceiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return taskReceiptMaterialDetailDomainService.queryList(taskReceiptMaterialDetailDO); + } + + + /** + * 新增收货作业单物料详情 + */ + public Boolean insert(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + + return taskReceiptMaterialDetailDomainService.insert(taskReceiptMaterialDetailDO); + } + + /** + * 修改收货作业单物料详情 + */ + public Boolean update(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + return taskReceiptMaterialDetailDomainService.update(taskReceiptMaterialDetailDO); + } + + /** + * 批量删除收货作业单物料详情 + */ + public boolean delete(Long[] materialDetailIds) { + return taskReceiptMaterialDetailDomainService.delete(materialDetailIds); + } + + /** + * 获取收货作业单物料详情详细信息 + */ + public TaskReceiptMaterialDetailPO getInfo(Long materialDetailId) + { + return taskReceiptMaterialDetailDomainService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java new file mode 100644 index 000000000..0a361b276 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.taskShelfMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import com.mhd.wms.domain.taskShelfMaterialDetail.service.TaskShelfMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 上架作业物料详情ApplicationService + * + * @author gen + * @date 2024-06-19 + */ +@Service +@Slf4j +public class TaskShelfMaterialDetailApplicationService { + @Autowired + private TaskShelfMaterialDetailDomainService taskShelfMaterialDetailDomainService; + + + /** + * 分页查询上架作业物料详情列表 + */ + + public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + taskShelfMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return taskShelfMaterialDetailDomainService.queryList(taskShelfMaterialDetailDO); + } + + + /** + * 新增上架作业物料详情 + */ + public Boolean insert(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + + return taskShelfMaterialDetailDomainService.insert(taskShelfMaterialDetailDO); + } + + /** + * 修改上架作业物料详情 + */ + public Boolean update(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + return taskShelfMaterialDetailDomainService.update(taskShelfMaterialDetailDO); + } + + /** + * 批量删除上架作业物料详情 + */ + public boolean delete(Long[] materialDetailIds) { + return taskShelfMaterialDetailDomainService.delete(materialDetailIds); + } + + /** + * 获取上架作业物料详情详细信息 + */ + public TaskShelfMaterialDetailPO getInfo(Long materialDetailId) + { + return taskShelfMaterialDetailDomainService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java new file mode 100644 index 000000000..755b041a7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java @@ -0,0 +1,129 @@ +package com.mhd.wms.application.service.userCommonSettings; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.service.CommonSettingsDomainService; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import com.mhd.wms.domain.userCommonSettings.service.UserCommonSettingsDomainService; +import com.mhd.wms.interfaces.dto.userCommonSettings.UserCommonSettingsAddDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 用户常用设置关联ApplicationService + * + * @author gen + * @date 2024-07-29 + */ +@Service +@Slf4j +public class UserCommonSettingsApplicationService { + @Autowired + private UserCommonSettingsDomainService userCommonSettingsDomainService; + @Autowired + private CommonSettingsDomainService commonSettingsDomainService; + + /** + * 分页查询用户常用设置关联列表 + */ + + public List queryList(UserCommonSettingsDO userCommonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + userCommonSettingsDO.setUserId(loginUser.getUserid()); + } + } + return userCommonSettingsDomainService.queryList(userCommonSettingsDO); + } + + + /** + * 新增用户常用设置关联 + */ + public Boolean insert(UserCommonSettingsDO userCommonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + deleteByUserId(loginUser.getUserid()); + List commonSettingsIddList=userCommonSettingsDO.getUserCommonSettingsAddDTOList(); + Boolean isTrue=true; + for (UserCommonSettingsAddDTO userCommonSettingsAddDTO:commonSettingsIddList){ + + CommonSettingsPO commonSettings=commonSettingsDomainService.getInfo(userCommonSettingsAddDTO.getCommonSettingsId()); + if(ObjectUtil.isNotNull(commonSettings)){ + UserCommonSettingsDO userCommonSettingsDO1=new UserCommonSettingsDO(); + userCommonSettingsDO1.setUserId(loginUser.getUserid()); + userCommonSettingsDO1.setCommonSettingsId(userCommonSettingsAddDTO.getCommonSettingsId()); + userCommonSettingsDO1.setName(commonSettings.getName()); + userCommonSettingsDO1.setRoute(commonSettings.getRoute()); + userCommonSettingsDO1.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + userCommonSettingsDO1.setCreateBy(loginUser.getUserid()); + userCommonSettingsDO1.setCreateByName(loginUser.getUsername()); + userCommonSettingsDO1.setCreateTime(new Date()); + userCommonSettingsDO1.setUpdateBy(loginUser.getUserid()); + userCommonSettingsDO1.setUpdateByName(loginUser.getUsername()); + userCommonSettingsDO1.setUpdateTime(new Date()); + userCommonSettingsDO1.setDelFlag(1); + userCommonSettingsDO1.setIsSettings(userCommonSettingsAddDTO.getIsSettings()); + boolean isFalse=userCommonSettingsDomainService.insert(userCommonSettingsDO1); + if(isFalse=false){ + isTrue=false; + } + } + } + + return isTrue; + } + + /** + * 修改用户常用设置关联 + */ + public Boolean update(UserCommonSettingsDO userCommonSettingsDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + //deleteByUserId(loginUser.getUserid()); + return userCommonSettingsDomainService.update(userCommonSettingsDO); + } + + /** + * 批量删除用户常用设置关联 + */ + public boolean delete(Long[] userCommonSettingsIds) { + return userCommonSettingsDomainService.delete(userCommonSettingsIds); + } + + /** + * 获取用户常用设置关联详细信息 + */ + public UserCommonSettingsPO getInfo(Long userCommonSettingsId) + { + return userCommonSettingsDomainService.getInfo(userCommonSettingsId); + } + + /** + * 根据用户id批量删除用户常用设置关联 + */ + public boolean deleteByUserId(Long userId) { + return userCommonSettingsDomainService.deleteByUserId(userId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java new file mode 100644 index 000000000..aaedccfc4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.application.service.waveMaterialDetail; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import com.mhd.wms.domain.waveMaterialDetail.service.WaveMaterialDetailDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库单物料明细ApplicationService + * + * @author gen + * @date 2024-06-27 + */ +@Service +@Slf4j +public class WaveMaterialDetailApplicationService { + @Autowired + private WaveMaterialDetailDomainService waveMaterialDetailDomainService; + + + /** + * 分页查询出库单物料明细列表 + */ + + public List queryList(WaveMaterialDetailDO waveMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + waveMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return waveMaterialDetailDomainService.queryList(waveMaterialDetailDO); + } + + + /** + * 新增出库单物料明细 + */ + public Boolean insert(WaveMaterialDetailDO waveMaterialDetailDO) { + + return waveMaterialDetailDomainService.insert(waveMaterialDetailDO); + } + + /** + * 修改出库单物料明细 + */ + public Boolean update(WaveMaterialDetailDO waveMaterialDetailDO) { + return waveMaterialDetailDomainService.update(waveMaterialDetailDO); + } + + /** + * 批量删除出库单物料明细 + */ + public boolean delete(Long[] materialDetailIds) { + return waveMaterialDetailDomainService.delete(materialDetailIds); + } + + /** + * 获取出库单物料明细详细信息 + */ + public WaveMaterialDetailPO getInfo(Long materialDetailId) + { + return waveMaterialDetailDomainService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java new file mode 100644 index 000000000..6dcaa7ef5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java @@ -0,0 +1,121 @@ +package com.mhd.wms.application.service.waveOrder; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import com.mhd.wms.domain.waveOrder.service.WaveOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 波次单ApplicationService + * + * @author gen + * @date 2024-06-04 + */ +@Service +@Slf4j +public class WaveOrderApplicationService { + @Autowired + private WaveOrderDomainService waveOrderDomainService; + + + /** + * 分页查询波次单列表 + */ + + public List queryList(WaveOrderDO waveOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + waveOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + waveOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + } + return waveOrderDomainService.queryList(waveOrderDO); + } + + + /** + * 新增波次单 + */ + public Boolean insert(WaveOrderDO waveOrderDO) { + + return waveOrderDomainService.insert(waveOrderDO); + } + + /** + * 修改波次单 + */ + public Boolean update(WaveOrderDO waveOrderDO) { + return waveOrderDomainService.update(waveOrderDO); + } + + /** + * 批量删除波次单 + */ + public boolean delete(Long[] waveOrderIds) { + return waveOrderDomainService.delete(waveOrderIds); + } + + /** + * 获取波次单详细信息 + */ + public WaveOrderPO getInfo(Long waveOrderId) + { + return waveOrderDomainService.getInfo(waveOrderId); + } + + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param waveOrderDO + * @return Boolean + */ + public Boolean manualAssign(WaveOrderDO waveOrderDO){ + return waveOrderDomainService.manualAssign(waveOrderDO); + } + + /** + * @description 取消分配 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param waveOrderDO + * @return Boolean + */ + public Boolean cancelAssign(WaveOrderDO waveOrderDO){ + return waveOrderDomainService.cancelAssign(waveOrderDO); + } + + /** + * @description 取消波次 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param waveOrderDO + * @return Boolean + */ + public Boolean cancelWave(WaveOrderDO waveOrderDO){ + return waveOrderDomainService.cancelWave(waveOrderDO); + } + + /** + * @description 生成拣货单 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param waveOrderDO + * @return Boolean + */ + public Boolean genPickingOrder(WaveOrderDO waveOrderDO){ + return waveOrderDomainService.genPickingOrder(waveOrderDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java new file mode 100644 index 000000000..9a312cd92 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java @@ -0,0 +1,80 @@ +package com.mhd.wms.application.service.waveRule; + +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; +import com.mhd.wms.domain.waveRule.service.WaveRuleDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 波次规则ApplicationService + * + * @author gen + * @date 2024-07-23 + */ +@Service +@Slf4j +public class WaveRuleApplicationService { + @Autowired + private WaveRuleDomainService waveRuleDomainService; + + + /** + * 分页查询波次规则列表 + */ + + public List queryList(WaveRuleDO waveRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + waveRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return waveRuleDomainService.queryList(waveRuleDO); + } + + + /** + * 新增波次规则 + */ + public Boolean insert(WaveRuleDO waveRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (loginUser != null){ + Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId(); + if (topOrganizationId != null && topOrganizationId != 1){ + waveRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + } + return waveRuleDomainService.insert(waveRuleDO); + } + + /** + * 修改波次规则 + */ + public Boolean update(WaveRuleDO waveRuleDO) { + return waveRuleDomainService.update(waveRuleDO); + } + + /** + * 批量删除波次规则 + */ + public boolean delete(Long[] ids) { + return waveRuleDomainService.delete(ids); + } + + /** + * 获取波次规则详细信息 + */ + public WaveRulePO getInfo(Long id) + { + return waveRuleDomainService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java new file mode 100644 index 000000000..c3a610420 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.commonSettings.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 常用设置对象 common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class CommonSettings extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("常用设置id") + @TableId(type = IdType.AUTO) + private Long commonSettingsId; + + @ApiModelProperty("所属上级id") + @Excel(name = "所属上级id") + private Long parentId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("级别 1-一级 2-二级") + @Excel(name = "级别 1-一级 2-二级") + private Long level; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java new file mode 100644 index 000000000..775d1c235 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.commonSettings.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.commonSettings.entity.CommonSettings; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; + +import java.util.List; + +/** + * 常用设置Service接口 + * + * @author gen + * @date 2024-07-29 + */ +public interface ICommonSettingsService extends IService +{ + /** + * 分页查询常用设置列表 + */ + public List queryList(CommonSettingsDO commonSettingsDO); + + /** + * 新增常用设置 + */ + public Boolean insert(CommonSettingsDO commonSettingsDO); + + /** + * 修改常用设置 + */ + public Boolean update(CommonSettingsDO commonSettingsDO); + + /** + * 批量删除常用设置 + */ + public Boolean delete(Long[] commonSettingsIds); + + + /** + * 查询常用设置 + */ + public CommonSettingsPO getInfo(Long commonSettingsId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java new file mode 100644 index 000000000..811de81a9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.commonSettings.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.commonSettings.entity.CommonSettings; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; + +import java.util.List; + +/** + * 常用设置Mapper接口 + * + * @author gen + * @date 2024-07-29 + */ +public interface CommonSettingsMapper extends BaseMapper +{ + /** + * 查询常用设置列表 + */ + public List queryList(CommonSettingsDO commonSettingsDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java new file mode 100644 index 000000000..06e51ea11 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.commonSettings.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.commonSettings.entity.CommonSettings; +import com.mhd.wms.domain.commonSettings.repository.facade.ICommonSettingsService; +import com.mhd.wms.domain.commonSettings.repository.mapper.CommonSettingsMapper; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 常用设置Service业务层处理 + * + * @author gen + * @date 2024-07-29 + */ +@Service +public class CommonSettingsImpl extends ServiceImpl implements ICommonSettingsService{ + @Autowired + private CommonSettingsMapper commonSettingsMapper; + + /** + * 查询常用设置列表 + */ + @Override + public List queryList(CommonSettingsDO commonSettingsDO) + { + return commonSettingsMapper.queryList(commonSettingsDO); + } + + /** + * 新增常用设置 + */ + @Override + public Boolean insert(CommonSettingsDO commonSettingsDO) { + CommonSettings commonSettings = new CommonSettings(); + BeanUtils.copyProperties(commonSettingsDO,commonSettings); + return this.save(commonSettings); + } + + /** + * 修改常用设置 + */ + @Override + public Boolean update(CommonSettingsDO commonSettingsDO) { + CommonSettings commonSettings = new CommonSettings(); + BeanUtils.copyProperties(commonSettingsDO,commonSettings); + return this.updateById(commonSettings); + } + + /** + * 批量删除常用设置 + */ + @Override + public Boolean delete(Long[] commonSettingsIds ) { + List list = new ArrayList<>(); + for (Long id : commonSettingsIds) { + CommonSettings commonSettings = new CommonSettings(); + commonSettings.setCommonSettingsId(id); + commonSettings.setDelFlag(2); + list.add(commonSettings); + } + return this.updateBatchById(list); + } + + /** + * 修改常用设置 + */ + @Override + public CommonSettingsPO getInfo(Long commonSettingsId) { + CommonSettings commonSettings = this.getById(commonSettingsId); + CommonSettingsPO commonSettingsPO = new CommonSettingsPO(); + BeanUtils.copyProperties(commonSettings,commonSettingsPO); + return commonSettingsPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java new file mode 100644 index 000000000..d4ae4baac --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.commonSettings.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 常用设置对象 common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +@ApiModel(value = "常用设置对象", description = "常用设置响应对象") +public class CommonSettingsPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("所属上级id") + @Excel(name = "所属上级id") + private Long parentId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("级别 1-一级 2-二级") + @Excel(name = "级别 1-一级 2-二级") + private Long level; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("是否设置为常用 0-否 1-是") + @Excel(name = "是否设置为常用 0-否 1-是") + private Integer isSettings; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java new file mode 100644 index 000000000..6d506395e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.commonSettings.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 常用设置对象 common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class CommonSettingsDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("所属上级id") + @Excel(name = "所属上级id") + private Long parentId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("级别 1-一级 2-二级") + @Excel(name = "级别 1-一级 2-二级") + private Long level; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java new file mode 100644 index 000000000..cc5dcf1f0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.commonSettings.service; + +import com.mhd.wms.domain.commonSettings.repository.facade.ICommonSettingsService; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 常用设置 + * + * @author gen + * @date 2024-07-29 + */ +@Service +@Slf4j +public class CommonSettingsDomainService { + + @Autowired + private ICommonSettingsService commonSettingsService; + + + /** + * 分页查询常用设置列表 + */ + public List queryList(CommonSettingsDO commonSettingsDO) { + return commonSettingsService.queryList(commonSettingsDO); + } + + + /** + * 新增常用设置 + */ + public Boolean insert(CommonSettingsDO commonSettingsDO) { + + return commonSettingsService.insert(commonSettingsDO); + } + + /** + * 修改常用设置 + */ + public Boolean update(CommonSettingsDO commonSettingsDO) { + return commonSettingsService.update(commonSettingsDO); + } + + /** + * 批量删除常用设置 + */ + public Boolean delete(Long[] commonSettingsIds) { + return commonSettingsService.delete(commonSettingsIds); + } + + /** + * 获取常用设置详细信息 + */ + public CommonSettingsPO getInfo(Long commonSettingsId) + { + return commonSettingsService.getInfo(commonSettingsId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java new file mode 100644 index 000000000..d068729af --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.containerUsageRecord.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 容器使用记录对象 container_usage_record + * + * @author gen + * @date 2024-08-22 + */ + +@Data +public class ContainerUsageRecord extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + @TableId(type = IdType.AUTO) + private String id; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("容器容积 单位:立方米") + @Excel(name = "容器容积 单位:立方米") + private BigDecimal containerVolume; + + @ApiModelProperty("记录类型: 1-占用 2-释放") + @Excel(name = "记录类型: 1-占用 2-释放") + private Integer useType; + + @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库") + @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库") + private Integer node; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java new file mode 100644 index 000000000..7fbc799af --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.containerUsageRecord.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; + +import java.util.List; + +/** + * 容器使用记录Service接口 + * + * @author gen + * @date 2024-08-22 + */ +public interface IContainerUsageRecordService extends IService +{ + /** + * 分页查询容器使用记录列表 + */ + public List queryList(ContainerUsageRecordDO containerUsageRecordDO); + + /** + * 新增容器使用记录 + */ + public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO); + + /** + * 修改容器使用记录 + */ + public Boolean update(ContainerUsageRecordDO containerUsageRecordDO); + + /** + * 批量删除容器使用记录 + */ + public Boolean delete(String[] ids); + + + /** + * 查询容器使用记录 + */ + public ContainerUsageRecordPO getInfo(String id); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java new file mode 100644 index 000000000..40d73acae --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.containerUsageRecord.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; + +import java.util.List; + +/** + * 容器使用记录Mapper接口 + * + * @author gen + * @date 2024-08-22 + */ +public interface ContainerUsageRecordMapper extends BaseMapper +{ + /** + * 查询容器使用记录列表 + */ + public List queryList(ContainerUsageRecordDO containerUsageRecordDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java new file mode 100644 index 000000000..3baaf7240 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.containerUsageRecord.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord; +import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService; +import com.mhd.wms.domain.containerUsageRecord.repository.mapper.ContainerUsageRecordMapper; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 容器使用记录Service业务层处理 + * + * @author gen + * @date 2024-08-22 + */ +@Service +public class ContainerUsageRecordImpl extends ServiceImpl implements IContainerUsageRecordService { + @Autowired + private ContainerUsageRecordMapper containerUsageRecordMapper; + + /** + * 查询容器使用记录列表 + */ + @Override + public List queryList(ContainerUsageRecordDO containerUsageRecordDO) + { + return containerUsageRecordMapper.queryList(containerUsageRecordDO); + } + + /** + * 新增容器使用记录 + */ + @Override + public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) { + ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord(); + BeanUtils.copyProperties(containerUsageRecordDO,containerUsageRecord); + return this.save(containerUsageRecord); + } + + /** + * 修改容器使用记录 + */ + @Override + public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) { + ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord(); + BeanUtils.copyProperties(containerUsageRecordDO,containerUsageRecord); + return this.updateById(containerUsageRecord); + } + + /** + * 批量删除容器使用记录 + */ + @Override + public Boolean delete(String[] ids ) { + List list = new ArrayList<>(); + for (String id : ids) { + ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord(); + containerUsageRecord.setId(id); + containerUsageRecord.setDelFlag(2); + list.add(containerUsageRecord); + } + return this.updateBatchById(list); + } + + /** + * 修改容器使用记录 + */ + @Override + public ContainerUsageRecordPO getInfo(String id) { + ContainerUsageRecord containerUsageRecord = this.getById(id); + ContainerUsageRecordPO containerUsageRecordPO = new ContainerUsageRecordPO(); + BeanUtils.copyProperties(containerUsageRecord,containerUsageRecordPO); + return containerUsageRecordPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java new file mode 100644 index 000000000..2436126e0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.containerUsageRecord.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 容器使用记录对象 container_usage_record + * + * @author gen + * @date 2024-08-22 + */ + +@Data +@ApiModel(value = "容器使用记录对象", description = "容器使用记录响应对象") +public class ContainerUsageRecordPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private String id; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("容器容积 单位:立方米") + @Excel(name = "容器容积 单位:立方米") + private BigDecimal containerVolume; + + @ApiModelProperty("记录类型: 1-占用 2-释放") + @Excel(name = "记录类型: 1-占用 2-释放") + private Integer useType; + + @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库") + @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库") + private Integer node; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java new file mode 100644 index 000000000..49c225e13 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.containerUsageRecord.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 容器使用记录对象 container_usage_record + * + * @author gen + * @date 2024-08-22 + */ + +@Data +public class ContainerUsageRecordDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private String id; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("容器容积 单位:立方米") + @Excel(name = "容器容积 单位:立方米") + private BigDecimal containerVolume; + + @ApiModelProperty("记录类型: 1-占用 2-释放") + @Excel(name = "记录类型: 1-占用 2-释放") + private Integer useType; + + @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库") + @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库") + private Integer node; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java new file mode 100644 index 000000000..864fdc46d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.containerUsageRecord.service; + +import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 容器使用记录 + * + * @author gen + * @date 2024-08-22 + */ +@Service +@Slf4j +public class ContainerUsageRecordDomainService { + + @Autowired + private IContainerUsageRecordService containerUsageRecordService; + + + /** + * 分页查询容器使用记录列表 + */ + public List queryList(ContainerUsageRecordDO containerUsageRecordDO) { + return containerUsageRecordService.queryList(containerUsageRecordDO); + } + + + /** + * 新增容器使用记录 + */ + public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) { + + return containerUsageRecordService.insert(containerUsageRecordDO); + } + + /** + * 修改容器使用记录 + */ + public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) { + return containerUsageRecordService.update(containerUsageRecordDO); + } + + /** + * 批量删除容器使用记录 + */ + public Boolean delete(String[] ids) { + return containerUsageRecordService.delete(ids); + } + + /** + * 获取容器使用记录详细信息 + */ + public ContainerUsageRecordPO getInfo(String id) + { + return containerUsageRecordService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java new file mode 100644 index 000000000..3d5303c7a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java @@ -0,0 +1,112 @@ +package com.mhd.wms.domain.deliveTask.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 下发任务对象 delive_task + * + * @author gen + * @date 2024-07-26 + */ + +@Data +public class DeliveTask extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("任务id") + @TableId(type = IdType.AUTO) + private Long deliverTaskId; + + @ApiModelProperty("任务单号") + @Excel(name = "任务单号") + private String taskNumber; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + private Integer taskType; + + @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + private Integer taskStatus; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer taskDistribution; + + @ApiModelProperty("下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("下发人id") + @Excel(name = "下发人id") + private Long taskDistributionId; + + @ApiModelProperty("下发人名称") + @Excel(name = "下发人名称") + private String taskDistributionName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("重新指派时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date reassignTime; + + @ApiModelProperty("重新指派人id") + @Excel(name = "重新指派人id") + private Long reassignById; + + @ApiModelProperty("重新指派人") + @Excel(name = "重新指派人") + private String reassignByName; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java new file mode 100644 index 000000000..f80415ea9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java @@ -0,0 +1,57 @@ +package com.mhd.wms.domain.deliveTask.factorys; + +import com.aliyun.oss.ServiceException; +import com.aliyun.oss.common.utils.CaseInsensitiveMap; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + * @author ZhouGY + * @title WaveOrderFactory + * @description: 生成波次单规则类型工厂 + * @date 2024/6/4 11:12 + **/ +@Service +public class DeliveTaskServiceFactory { + + @Autowired + private Map deliveTaskTypeServiceMap = new CaseInsensitiveMap<>(); + + /** + * @description 获取对应的服务 + * @author ZhouGY + * @date 2024/6/4 11:14 + * @param taskType + * @return IWaveOrderTypeService + */ + public IDeliveTaskTypeService getDeliveTaskTypeService(Integer taskType) { + String deliveTaskType = ""; + //任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点 + switch (taskType){ + case 1: + deliveTaskType = "stockReceiptOrderImpl"; + break; + case 2: + deliveTaskType = "stockShelfOrderImpl"; + break; + case 3: + deliveTaskType = "stockOutTaskOrderImpl"; + break; + case 4: + deliveTaskType = "stockOutOrderImpl"; + break; + case 5: + deliveTaskType = "shiftManageImpl"; + break; + case 6: + deliveTaskType = "investigationManageImpl"; + break; + default: + throw new ServiceException("任务类型不存在"); + } + return deliveTaskTypeServiceMap.get(deliveTaskType); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java new file mode 100644 index 000000000..7714f15c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.deliveTask.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.deliveTask.entity.DeliveTask; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; + +import java.util.List; + +/** + * 下发任务Service接口 + * + * @author gen + * @date 2024-07-26 + */ +public interface IDeliveTaskService extends IService +{ + /** + * 分页查询下发任务列表 + */ + public List queryList(DeliveTaskDO deliveTaskDO); + /** + * 分页查询下发任务列表 + */ + public List queryListApp(DeliveTaskDO deliveTaskDO); + + + /** + * 批量 新增下发任务 + */ + public Boolean batchInsert(List deliveTaskDOList); + + + /** + * 批量删除下发任务 + */ + public Boolean delete(Long[] deliverTaskIds); + + + /** + * 查询下发任务 + */ + public DeliveTaskPO getInfo(Long deliverTaskId); + + /** + * 工作台查询 + */ + public DeliveTaskSumPO workbenchQuery(); + + public int receive(Long deliverTaskId); + + public int refuse(Long deliverTaskId); + + /** + * 查询列表表头数量 + */ + public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java new file mode 100644 index 000000000..73148fcbf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java @@ -0,0 +1,21 @@ +package com.mhd.wms.domain.deliveTask.repository.facade; + +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; + +/** + * @author ZhouGY + * @title IWaveOrderType + * @description: 任务下发 + * @date 2024/6/4 10:42 + **/ +public interface IDeliveTaskTypeService { + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/6/4 10:43 + * @param deliveTaskDO + * @return Boolean + */ + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java new file mode 100644 index 000000000..6c5843a79 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java @@ -0,0 +1,49 @@ +package com.mhd.wms.domain.deliveTask.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.deliveTask.entity.DeliveTask; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +/** + * 下发任务Mapper接口 + * + * @author gen + * @date 2024-07-26 + */ +public interface DeliveTaskMapper extends BaseMapper +{ + /** + * 查询下发任务列表 + */ + public List queryList(DeliveTaskDO deliveTaskDO); + + public DeliveTaskSumPO workbenchQuery(@Param("operatorsBy") Long userid); + + /** + * 查询下发任务列表 + */ + public List queryListApp(DeliveTaskDO deliveTaskDO); + /** + * 修改任务状态 + */ + @Update("update delive_task set task_status=#{taskStatus} where deliver_task_id=#{deliverTaskId}") + public int receive(@Param("deliverTaskId") Long deliverTaskId, @Param("taskStatus") Integer taskStatus); + + + /** + * 修改作业人员 + */ + @Update("update delive_task set operators_by=#{operatorsBy},operators_name=#{operatorsName} where deliver_task_id=#{deliverTaskId}") + public int updateOperatorsBy(@Param("deliverTaskId") Long deliverTaskId, @Param("operatorsBy") Long operatorsBy, @Param("operatorsName") String operatorsName); + + /** + * 查询下发任务列表 + */ + public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java new file mode 100644 index 000000000..992200e6f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java @@ -0,0 +1,174 @@ +package com.mhd.wms.domain.deliveTask.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.dto.NoticeMessageLoggingDto; +import com.mhd.common.core.enums.MessageTypeEnum; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.entity.DeliveTask; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.mapper.DeliveTaskMapper; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 下发任务Service业务层处理 + * + * @author gen + * @date 2024-07-26 + */ +@Service +public class DeliveTaskImpl extends ServiceImpl implements IDeliveTaskService{ + @Autowired + private DeliveTaskMapper deliveTaskMapper; + @Autowired + private SystemServiceFeign systemServiceFeign; + /** + * 查询下发任务列表 + */ + @Override + public List queryList(DeliveTaskDO deliveTaskDO) + { + return deliveTaskMapper.queryList(deliveTaskDO); + } + /** + * 查询下发任务列表 + */ + @Override + public List queryListApp(DeliveTaskDO deliveTaskDO) + { + LoginUser loginUser = SecurityUtils.getLoginUser(); + if(null!=deliveTaskDO.getTabType()&&deliveTaskDO.getTabType()==1){ + deliveTaskDO.setOperatorsBy(loginUser.getUserid()); + }else{ + + } + return deliveTaskMapper.queryListApp(deliveTaskDO); + } + /** + * 新增下发任务 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List deliveTaskDOList) { + List deliveTaskList = new ArrayList<>(); + List noticeMessageLoggingDtoList = new ArrayList<>(); + for (DeliveTaskDO deliveTaskDO : deliveTaskDOList){ + DeliveTask deliveTask = new DeliveTask(); + BeanUtils.copyProperties(deliveTaskDO,deliveTask); + deliveTaskList.add(deliveTask); + NoticeMessageLoggingDto noticeMessageLoggingDto = new NoticeMessageLoggingDto(); + noticeMessageLoggingDto.setUserId(deliveTaskDO.getOperatorsBy()); + noticeMessageLoggingDto.setUserName(deliveTaskDO.getOperatorsName()); + noticeMessageLoggingDto.setNoticeMessageType(MessageTypeEnum.system_notifications.getCode()); + noticeMessageLoggingDto.setNoticeMessageName(MessageTypeEnum.system_notifications.getInfo()); + noticeMessageLoggingDto.setNoticeMessageTitle("任务下发通知"); + noticeMessageLoggingDto.setMessageReadStatus(2); + String text=""; + if(deliveTaskDO.getTaskType()==1){ + text="有一个指派给您的收货任务,请尽快处理"; + }else if(deliveTaskDO.getTaskType()==2){ + text="有一个指派给您的上架任务,请尽快处理"; + }else if(deliveTaskDO.getTaskType()==3){ + text="有一个指派给您的拣货任务,请尽快处理"; + }else if(deliveTaskDO.getTaskType()==4){ + text="有一个指派给您的复盘任务,请尽快处理"; + }else if(deliveTaskDO.getTaskType()==5){ + text="有一个指派给您的移位任务,请尽快处理"; + }else if(deliveTaskDO.getTaskType()==6){ + text="有一个指派给您的盘点任务,请尽快处理"; + } + noticeMessageLoggingDto.setMessagePushTime(new Date()); + noticeMessageLoggingDto.setMessageSource(2); + noticeMessageLoggingDto.setTopOrganizationId(deliveTaskDO.getTopOrganizationId()); + noticeMessageLoggingDto.setWaybillNumber(deliveTaskDO.getTrackingNumber()); + noticeMessageLoggingDto.setDataSourceSystem(3); + noticeMessageLoggingDto.setDelFlag(1); + noticeMessageLoggingDto.setJumpPage(0); + noticeMessageLoggingDto.setNoticeMessageContent(text); + noticeMessageLoggingDto.setCreateBy(deliveTaskDO.getCreateBy()); + noticeMessageLoggingDto.setCreateByName(deliveTaskDO.getCreateByName()); + noticeMessageLoggingDto.setCreateTime(new Date()); + noticeMessageLoggingDto.setMessagePushTime(new Date()); + noticeMessageLoggingDtoList.add(noticeMessageLoggingDto); + } + saveBatch(deliveTaskList); + NoticeMessageLoggingDto noticeMessageLogging = new NoticeMessageLoggingDto(); + noticeMessageLogging.setNoticeList(noticeMessageLoggingDtoList); + AjaxResult ajaxResult= systemServiceFeign.addMessageLoggingList(noticeMessageLogging); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("保存消息信息失败"); + } + return true; + } + + /** + * 批量删除下发任务 + */ + @Override + public Boolean delete(Long[] deliverTaskIds ) { + List list = new ArrayList<>(); + for (Long id : deliverTaskIds) { + DeliveTask deliveTask = new DeliveTask(); + deliveTask.setDeliverTaskId(id); + deliveTask.setDelFlag(2); + list.add(deliveTask); + } + return this.updateBatchById(list); + } + + /** + * 修改下发任务 + */ + @Override + public DeliveTaskPO getInfo(Long deliverTaskId) { + DeliveTask deliveTask = this.getById(deliverTaskId); + DeliveTaskPO deliveTaskPO = new DeliveTaskPO(); + BeanUtils.copyProperties(deliveTask,deliveTaskPO); + return deliveTaskPO; + } + /** + * 工作台查询 + */ + @Override + public DeliveTaskSumPO workbenchQuery() { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + return deliveTaskMapper.workbenchQuery(loginUser.getUserid()); + } + /** + * 接收操作 + */ + @Override + public int receive(Long deliverTaskId) { + return deliveTaskMapper.receive(deliverTaskId,1); + } + /** + * 拒绝操作 + */ + @Override + public int refuse(Long deliverTaskId) { + int update=deliveTaskMapper.receive(deliverTaskId,2); + if(update==1){ + deliveTaskMapper.updateOperatorsBy(deliverTaskId, Long.valueOf("0"),""); + } + return update; + } + + @Override + public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) { + return deliveTaskMapper.querySum(deliveTaskDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java new file mode 100644 index 000000000..2e233188b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java @@ -0,0 +1,118 @@ +package com.mhd.wms.domain.deliveTask.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 下发任务对象 delive_task + * + * @author gen + * @date 2024-07-26 + */ + +@Data +@ApiModel(value = "下发任务对象", description = "下发任务响应对象") +public class DeliveTaskPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("任务id") + private Long deliverTaskId; + + @ApiModelProperty("任务单号") + @Excel(name = "任务单号") + private String taskNumber; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + private Integer taskType; + + @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + private Integer taskStatus; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer taskDistribution; + + @ApiModelProperty("下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("下发人id") + @Excel(name = "下发人id") + private Long taskDistributionId; + + @ApiModelProperty("下发人名称") + @Excel(name = "下发人名称") + private String taskDistributionName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("重新指派时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date reassignTime; + + @ApiModelProperty("重新指派人id") + @Excel(name = "重新指派人id") + private Long reassignById; + + @ApiModelProperty("重新指派人") + @Excel(name = "重新指派人") + private String reassignByName; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer designateSum; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer taskSum; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java new file mode 100644 index 000000000..14bc511eb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java @@ -0,0 +1,37 @@ +package com.mhd.wms.domain.deliveTask.repository.po; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 下发任务对象 delive_task + * + * @author gen + * @date 2024-07-26 + */ + +@Data +@ApiModel(value = "下发任务对象", description = "下发任务响应对象") +public class DeliveTaskSumPO { + + @ApiModelProperty("待收货数量") + private Integer receivedQuantity; + + @ApiModelProperty("待上架数量") + private Integer listingQuantity; + + @ApiModelProperty("待拣货数量") + private Integer pickQuantity; + + @ApiModelProperty("待复核数量") + private Integer recheckQuantity; + + @ApiModelProperty("待移位数量") + private Integer displacementQuantity; + + @ApiModelProperty("待盘点数量") + private Integer stockQuantity; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java new file mode 100644 index 000000000..c880530f8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java @@ -0,0 +1,118 @@ +package com.mhd.wms.domain.deliveTask.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + + +/** + * 下发任务对象 delive_task + * + * @author gen + * @date 2024-07-26 + */ + +@Data +public class DeliveTaskDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("任务id") + private Long deliverTaskId; + + @ApiModelProperty("任务单号") + @Excel(name = "任务单号") + private String taskNumber; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + private Integer taskType; + + @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + private Integer taskStatus; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer taskDistribution; + + @ApiModelProperty("下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("下发人id") + @Excel(name = "下发人id") + private Long taskDistributionId; + + @ApiModelProperty("下发人名称") + @Excel(name = "下发人名称") + private String taskDistributionName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("重新指派时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date reassignTime; + + @ApiModelProperty("重新指派人id") + @Excel(name = "重新指派人id") + private Long reassignById; + + @ApiModelProperty("重新指派人") + @Excel(name = "重新指派人") + private String reassignByName; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("查询类型 1-指派给我的 2-任务") + @Excel(name = "查询类型 1-指派给我的 2-任务") + private Long tabType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java new file mode 100644 index 000000000..d4e99c3fe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java @@ -0,0 +1,117 @@ +package com.mhd.wms.domain.deliveTask.service; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.wms.domain.deliveTask.entity.DeliveTask; +import com.mhd.wms.domain.deliveTask.factorys.DeliveTaskServiceFactory; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 下发任务 + * + * @author gen + * @date 2024-07-26 + */ +@Service +@Slf4j +public class DeliveTaskDomainService { + + @Autowired + private IDeliveTaskService deliveTaskService; + @Autowired + private DeliveTaskServiceFactory deliveTaskServiceFactory; + + /** + * 分页查询下发任务列表 + */ + public List queryList(DeliveTaskDO deliveTaskDO) { + return deliveTaskService.queryList(deliveTaskDO); + } + /** + * 分页查询下发任务列表 + */ + public List queryListApp(DeliveTaskDO deliveTaskDO) { + return deliveTaskService.queryListApp(deliveTaskDO); + } + + /** + * 批量 新增下发任务 + */ + public Boolean batchInsert(List deliveTaskDOList) { + return deliveTaskService.batchInsert(deliveTaskDOList); + } + + + /** + * 批量删除下发任务 + */ + public Boolean delete(Long[] deliverTaskIds) { + return deliveTaskService.delete(deliverTaskIds); + } + + /** + * 获取下发任务详细信息 + */ + public DeliveTaskPO getInfo(Long deliverTaskId) + { + return deliveTaskService.getInfo(deliverTaskId); + } + + /** + * 工作台查询 + */ + public DeliveTaskSumPO workbenchQuery() + { + return deliveTaskService.workbenchQuery(); + } + /** + * 接收操作 + */ + @Transactional(rollbackFor = Exception.class) + public int receive(Long deliverTaskId) { + DeliveTask deliveTask = deliveTaskService.getById(deliverTaskId); + if (deliveTask == null){ + throw new ServiceException("任务不存在"); + } + if (deliveTask.getTaskStatus() > 0){ + throw new ServiceException("任务已处理,请勿重复处理"); + } + int count = deliveTaskService.receive(deliverTaskId); + if (count == 0) { + throw new ServiceException("接受任务失败"); + } + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setTrackingNumber(deliveTask.getTrackingNumber()); + deliveTaskDO.setOperatorsBy(deliveTask.getOperatorsBy()); + deliveTaskDO.setOperatorsName(deliveTask.getOperatorsName()); + deliveTaskServiceFactory.getDeliveTaskTypeService(deliveTask.getTaskType()).handleDeliveTask(deliveTaskDO); + return count; + } + /** + * 拒绝操作 + */ + public int refuse(Long deliverTaskId) { + DeliveTask deliveTask = deliveTaskService.getById(deliverTaskId); + if (deliveTask == null){ + throw new ServiceException("任务不存在"); + } + if (deliveTask.getTaskStatus() > 0){ + throw new ServiceException("任务已处理,请勿重复处理"); + } + return deliveTaskService.refuse(deliverTaskId); + } + /** + * 查询列表表头数量 + */ + public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) { + return deliveTaskService.querySum(deliveTaskDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java new file mode 100644 index 000000000..87031715b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java @@ -0,0 +1,117 @@ +package com.mhd.wms.domain.differentManage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 差异单对象 different_manage + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class DifferentManage extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("差异管理id") + @TableId(type = IdType.AUTO) + private Long differentManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("监盘人ID") + @Excel(name = "监盘人ID") + private Long investigationManBy; + + @ApiModelProperty("监盘人姓名") + @Excel(name = "监盘人姓名") + private String investigationManName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否过账: 1-是 2-否") + @Excel(name = "是否过账: 1-是 2-否") + private Integer postedFlag; + + @ApiModelProperty("是否重盘: 1-是 2-否") + @Excel(name = "是否重盘: 1-是 2-否") + private Integer reCountedFlag; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java new file mode 100644 index 000000000..43ea7b9d8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.differentManage.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.differentManage.entity.DifferentManage; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; + +import java.util.List; + +/** + * 差异单Service接口 + * + * @author gen + * @date 2024-07-20 + */ +public interface IDifferentManageService extends IService +{ + /** + * 分页查询差异单列表 + */ + public List queryList(DifferentManageDO differentManageDO); + + /** + * 新增差异单 + */ + public Boolean insert(DifferentManageDO differentManageDO); + + /** + * 修改差异单 + */ + public Boolean update(DifferentManageDO differentManageDO); + + /** + * 批量删除差异单 + */ + public Boolean delete(Long[] differentManageIds); + + + /** + * 查询差异单 + */ + public DifferentManagePO getInfo(Long differentManageId); + + /** + * 重盘生成新的差异单 + */ + public Boolean resetDifferent(DifferentManageDO differentManageDO); + + /** + * 差异过账 + */ + public Boolean differentRollback(DifferentManageDO differentManageDO); + + public DifferentManagePO getDifferentManageDO(Long differentManageId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java new file mode 100644 index 000000000..7c4b9f87d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.differentManage.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.differentManage.entity.DifferentManage; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; + +import java.util.List; + +/** + * 差异单Mapper接口 + * + * @author gen + * @date 2024-07-20 + */ +public interface DifferentManageMapper extends BaseMapper +{ + /** + * 查询差异单列表 + */ + public List queryList(DifferentManageDO differentManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java new file mode 100644 index 000000000..ae699716b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java @@ -0,0 +1,210 @@ +package com.mhd.wms.domain.differentManage.repository.persistence; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.differentManage.entity.DifferentManage; +import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService; +import com.mhd.wms.domain.differentManage.repository.mapper.DifferentManageMapper; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import com.mhd.wms.domain.investigationManage.entity.InvestigationManage; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import com.mhd.wms.domain.investigetionManageDetail.repository.mapper.InvestigetionManageDetailMapper; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.enums.StatusInvestigationEnum; +import com.mhd.wms.util.UtilloginUserAssemble; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 差异单Service业务层处理 + * + * @author gen + * @date 2024-07-20 + */ +@Service +public class DifferentManageImpl extends ServiceImpl implements IDifferentManageService { + @Autowired + private DifferentManageMapper differentManageMapper; + + @Autowired + private com.mhd.wms.domain.investigationManage.repository.mapper.InvestigationManageMapper investigationManageMapper; + + @Autowired + private InvestigetionManageDetailMapper investigetionManageDetailMapper; + + @Autowired + private com.mhd.wms.domain.investigationManage.repository.mapper.InvestigationManageMapper InvestigationManageMapper; + + @Autowired + private MaterialInventoryMapper materialInventoryMapper; + + /** + * 查询差异单列表 + */ + @Override + public List queryList(DifferentManageDO differentManageDO) { + return differentManageMapper.queryList(differentManageDO); + } + + /** + * 新增差异单 + */ + @Override + public Boolean insert(DifferentManageDO differentManageDO) { + DifferentManage differentManage = new DifferentManage(); + BeanUtils.copyProperties(differentManageDO, differentManage); + return this.save(differentManage); + } + + /** + * 修改差异单 + */ + @Override + public Boolean update(DifferentManageDO differentManageDO) { + DifferentManage differentManage = new DifferentManage(); + BeanUtils.copyProperties(differentManageDO, differentManage); + return this.updateById(differentManage); + } + + /** + * 批量删除差异单 + */ + @Override + public Boolean delete(Long[] differentManageIds) { + List list = new ArrayList<>(); + for (Long id : differentManageIds) { + DifferentManage differentManage = new DifferentManage(); + differentManage.setDifferentManageId(id); + differentManage.setDelFlag(2); + list.add(differentManage); + } + return this.updateBatchById(list); + } + + /** + * 修改差异单 + */ + @Override + public DifferentManagePO getInfo(Long differentManageId) { + DifferentManage differentManage = this.getById(differentManageId); + DifferentManagePO differentManagePO = new DifferentManagePO(); + BeanUtils.copyProperties(differentManage, differentManagePO); + return differentManagePO; + } + + @Override + public Boolean resetDifferent(DifferentManageDO differentManageDO) { + // 生成新的盘点单 + // 查询差异单 + DifferentManage differentManage = differentManageMapper.selectById(differentManageDO.getDifferentManageId()); + if(null == differentManage){ + throw new ServiceException("抱歉,没有找到此差异单信息!"); + } + //盘点单号 + String investigationNumber = differentManage.getInvestigationNumber(); + //查询原盘点单信息 + InvestigationManage investigationManage = investigationManageMapper.selectOne(new QueryWrapper().lambda().eq(InvestigationManage::getInvestigationNumber, investigationNumber)); + if(null == investigationManage){ + throw new ServiceException("抱歉,没有找到此差异单关联的盘点单信息!"); + } + //新的盘点单号 + investigationManage.setInvestigationNumber(panDian()); + investigationManage.setOldInvestigationNumber(differentManage.getInvestigationNumber()); + investigationManage.setDifferentNumber(null); + investigationManage.setInvestigationFrequency(2); + // 基本信息 + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + investigationManage.setOrganizationId(userPo.getOrganizationId()); + investigationManage.setTopOrganizationId(userPo.getTopOrganizationId()); + investigationManage.setOrganizationName(userPo.getOrganizationName()); + investigationManage.setCreateBy(loginUser.getUserid()); + investigationManage.setCreateByName(loginUser.getUsername()); + investigationManage.setCreateTime(new Date()); + investigationManage.setUpdateBy(loginUser.getUserid()); + investigationManage.setUpdateByName(loginUser.getUsername()); + investigationManage.setUpdateTime(new Date()); + + //设置新盘点单状态--待盘点(禅道7820) + investigationManage.setInvestigationStatus(StatusInvestigationEnum.pending.getCode()); + //根据差异单生成新盘点单明细 + List investigetionManageDetailList = investigetionManageDetailMapper.selectList(new QueryWrapper().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationNumber)); + for(InvestigetionManageDetail investigetionManageDetail : investigetionManageDetailList){ + investigetionManageDetail.setDifferentNumber(null); + investigetionManageDetail.setInvestigationNumber(investigationManage.getInvestigationNumber()); + investigetionManageDetail.setInvestigationStatus(StatusInvestigationEnum.pending.getCode()); + investigetionManageDetail.setInvestigationFrequency(2); + //获取最新的库存数量 + MaterialInventory materialInventory = materialInventoryMapper.selectOne(new QueryWrapper().lambda().eq(MaterialInventory::getMaterialInventoryId, investigetionManageDetail.getMaterialInventoryId())); + investigetionManageDetail.setInventoryQuantity(materialInventory.getInventoryQuantity()); + //盘点数量设置为0 + investigetionManageDetail.setInvestigationQuantity(BigDecimal.ZERO); + //差异数量设置为0 + investigetionManageDetail.setDifferentQuantity(BigDecimal.ZERO); + UtilloginUserAssemble assembler = new UtilloginUserAssemble(); + assembler.fillCommonProperties(investigetionManageDetail, loginUser); + investigetionManageDetail.setInvestigationManageDetailId(null); + //保存明细 + investigetionManageDetailMapper.insert(investigetionManageDetail); + } + + return InvestigationManageMapper.insert(investigationManage) > 0; + } + + @Override + public Boolean differentRollback(DifferentManageDO differentManageDO1) { + DifferentManagePO differentManagePO = getDifferentManageDO(differentManageDO1.getDifferentManageId()); + DifferentManageDO differentManageDO = JSONUtil.toBean(JSONUtil.toJsonStr(differentManagePO), DifferentManageDO.class); + // 库存差异更新 + List investigetionManageDetailList = differentManageDO.getInvestigetionManageDetailList(); + investigetionManageDetailList.forEach(e->{ + MaterialInventory materialInventory = new MaterialInventory(); + if (e.getInvestigationStatus() != 3){ // 库存更新 + materialInventory = materialInventoryMapper.selectById(e.getMaterialInventoryId()); + materialInventory.setInventoryQuantity(e.getInvestigationQuantity()); + + } + materialInventoryMapper.updateMaterial(JSONUtil.toBean(JSONUtil.toJsonStr(materialInventory), MaterialInventoryDO.class)); + }); + return true; + } + + @Override + public DifferentManagePO getDifferentManageDO(Long differentManageId) { + DifferentManage differentManage = differentManageMapper.selectById(differentManageId); + String investigationNumber = differentManage.getInvestigationNumber(); + List investigetionManageDetails = investigetionManageDetailMapper.selectList(new QueryWrapper().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationNumber)); + List investigetionManageDetailList = new ArrayList<>(); + for (InvestigetionManageDetail e : investigetionManageDetails) { + if (e.getInvestigationResult() != 3) { + investigetionManageDetailList.add(e); + } + } + differentManage.setInvestigetionManageDetailList(investigetionManageDetailList); + return JSONUtil.toBean(JSONUtil.toJsonStr(differentManage),DifferentManagePO.class); + } + + public String panDian() { + String panDian = "PD"; + LocalDateTime loc = LocalDateTime.now(); + panDian += loc.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + return panDian; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java new file mode 100644 index 000000000..5463e476f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java @@ -0,0 +1,117 @@ +package com.mhd.wms.domain.differentManage.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 差异单对象 different_manage + * + * @author gen + * @date 2024-07-20 + */ + +@Data +@ApiModel(value = "差异单对象", description = "差异单响应对象") +public class DifferentManagePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("差异管理id") + private Long differentManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("监盘人ID") + @Excel(name = "监盘人ID") + private Long investigationManBy; + + @ApiModelProperty("监盘人姓名") + @Excel(name = "监盘人姓名") + private String investigationManName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否过账: 1-是 2-否") + @Excel(name = "是否过账: 1-是 2-否") + private Integer postedFlag; + + @ApiModelProperty("是否重盘: 1-是 2-否") + @Excel(name = "是否重盘: 1-是 2-否") + private Integer reCountedFlag; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java new file mode 100644 index 000000000..4aa8a986e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java @@ -0,0 +1,120 @@ +package com.mhd.wms.domain.differentManage.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 差异单对象 different_manage + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class DifferentManageDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("差异管理id") + private Long differentManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("监盘人ID") + @Excel(name = "监盘人ID") + private Long investigationManBy; + + @ApiModelProperty("监盘人姓名") + @Excel(name = "监盘人姓名") + private String investigationManName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("是否过账: 1-是 2-否") + @Excel(name = "是否过账: 1-是 2-否") + private Integer postedFlag; + + @ApiModelProperty("是否重盘: 1-是 2-否") + @Excel(name = "是否重盘: 1-是 2-否") + private Integer reCountedFlag; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java new file mode 100644 index 000000000..017214cd4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java @@ -0,0 +1,74 @@ +package com.mhd.wms.domain.differentManage.service; + +import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 差异单 + * + * @author gen + * @date 2024-07-20 + */ +@Service +@Slf4j +public class DifferentManageDomainService { + + @Autowired + private IDifferentManageService differentManageService; + + + /** + * 分页查询差异单列表 + */ + public List queryList(DifferentManageDO differentManageDO) { + return differentManageService.queryList(differentManageDO); + } + + + /** + * 新增差异单 + */ + public Boolean insert(DifferentManageDO differentManageDO) { + + return differentManageService.insert(differentManageDO); + } + + /** + * 修改差异单 + */ + public Boolean update(DifferentManageDO differentManageDO) { + return differentManageService.update(differentManageDO); + } + + /** + * 批量删除差异单 + */ + public Boolean delete(Long[] differentManageIds) { + return differentManageService.delete(differentManageIds); + } + + /** + * 获取差异单详细信息 + */ + public DifferentManagePO getInfo(Long differentManageId) { + return differentManageService.getInfo(differentManageId); + } + + public Boolean resetDifferent(DifferentManageDO differentManageDO){ + return differentManageService.resetDifferent(differentManageDO); + } + public Boolean differentRollback(DifferentManageDO differentManageDO){ + return differentManageService.differentRollback(differentManageDO); + } + + public DifferentManagePO getDifferentManageDO(Long differentManageId){ + return differentManageService.getDifferentManageDO(differentManageId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java new file mode 100644 index 000000000..a16cbc689 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java @@ -0,0 +1,129 @@ +package com.mhd.wms.domain.handoverTaskOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 交接作业单对象 handover_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class HandoverTaskOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("交接作业单id") + @TableId(type = IdType.AUTO) + private Long handoverTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("交接状态: 1-未交接 2-已交接") + @Excel(name = "交接状态: 1-未交接 2-已交接") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java new file mode 100644 index 000000000..4c6826611 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.handoverTaskOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; + +import java.util.List; + +/** + * 交接作业单Service接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface IHandoverTaskOrderService extends IService +{ + /** + * 分页查询交接作业单列表 + */ + public List queryList(HandoverTaskOrderDO handoverTaskOrderDO); + + /** + * 新增交接作业单 + */ + public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO); + + /** + * 修改交接作业单 + */ + public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO); + + /** + * 批量删除交接作业单 + */ + public Boolean delete(Long[] outTaskOrderIds); + + + /** + * 查询交接作业单 + */ + public HandoverTaskOrderPO getInfo(Long outTaskOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java new file mode 100644 index 000000000..61b4af1bf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.handoverTaskOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; + +import java.util.List; + +/** + * 交接作业单Mapper接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface HandoverTaskOrderMapper extends BaseMapper +{ + /** + * 查询交接作业单列表 + */ + public List queryList(HandoverTaskOrderDO handoverTaskOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java new file mode 100644 index 000000000..de919fd5e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.handoverTaskOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; +import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; +import com.mhd.wms.domain.handoverTaskOrder.repository.mapper.HandoverTaskOrderMapper; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 交接作业单Service业务层处理 + * + * @author gen + * @date 2024-05-28 + */ +@Service +public class HandoverTaskOrderImpl extends ServiceImpl implements IHandoverTaskOrderService { + @Autowired + private HandoverTaskOrderMapper handoverTaskOrderMapper; + + /** + * 查询交接作业单列表 + */ + @Override + public List queryList(HandoverTaskOrderDO handoverTaskOrderDO) + { + return handoverTaskOrderMapper.queryList(handoverTaskOrderDO); + } + + /** + * 新增交接作业单 + */ + @Override + public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO) { + HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder(); + BeanUtils.copyProperties(handoverTaskOrderDO,handoverTaskOrder); + return this.save(handoverTaskOrder); + } + + /** + * 修改交接作业单 + */ + @Override + public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO) { + HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder(); + BeanUtils.copyProperties(handoverTaskOrderDO,handoverTaskOrder); + return this.updateById(handoverTaskOrder); + } + + /** + * 批量删除交接作业单 + */ + @Override + public Boolean delete(Long[] outTaskOrderIds ) { + List list = new ArrayList<>(); + for (Long id : outTaskOrderIds) { + HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder(); + handoverTaskOrder.setHandoverTaskOrderId(id); + handoverTaskOrder.setDelFlag(2); + list.add(handoverTaskOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改交接作业单 + */ + @Override + public HandoverTaskOrderPO getInfo(Long outTaskOrderId) { + HandoverTaskOrder handoverTaskOrder = this.getById(outTaskOrderId); + HandoverTaskOrderPO handoverTaskOrderPO = new HandoverTaskOrderPO(); + BeanUtils.copyProperties(handoverTaskOrder,handoverTaskOrderPO); + return handoverTaskOrderPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java new file mode 100644 index 000000000..e8e86272c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java @@ -0,0 +1,129 @@ +package com.mhd.wms.domain.handoverTaskOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + + +/** + * 交接作业单对象 handover_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +@ApiModel(value = "交接作业单对象", description = "交接作业单响应对象") +public class HandoverTaskOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("交接作业单id") + private Long handoverTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("交接状态: 1-未交接 2-已交接") + @Excel(name = "交接状态: 1-未交接 2-已交接") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java new file mode 100644 index 000000000..3d89bd667 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java @@ -0,0 +1,134 @@ +package com.mhd.wms.domain.handoverTaskOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + + +/** + * 交接作业单对象 handover_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class HandoverTaskOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("交接作业单id") + private Long handoverTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("交接状态: 1-未交接 2-已交接") + @Excel(name = "交接状态: 1-未交接 2-已交接") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("交接作业单id") + private List handoverTaskOrderIds; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java new file mode 100644 index 000000000..9513e558c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java @@ -0,0 +1,130 @@ +package com.mhd.wms.domain.handoverTaskOrder.service; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder; +import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 交接作业单 + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class HandoverTaskOrderDomainService { + + @Autowired + private IHandoverTaskOrderService handoverTaskOrderService; + + + /** + * 分页查询交接作业单列表 + */ + public List queryList(HandoverTaskOrderDO handoverTaskOrderDO) { + return handoverTaskOrderService.queryList(handoverTaskOrderDO); + } + + + /** + * 新增交接作业单 + */ + public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO) { + + return handoverTaskOrderService.insert(handoverTaskOrderDO); + } + + /** + * 修改交接作业单 + */ + public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO) { + return handoverTaskOrderService.update(handoverTaskOrderDO); + } + + /** + * 批量删除交接作业单 + */ + public Boolean delete(Long[] outTaskOrderIds) { + return handoverTaskOrderService.delete(outTaskOrderIds); + } + + /** + * 获取交接作业单详细信息 + */ + public HandoverTaskOrderPO getInfo(Long outTaskOrderId) + { + return handoverTaskOrderService.getInfo(outTaskOrderId); + } + + + /** + * @description 分配月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + * @param handoverTaskOrderDO + * @return Boolean + */ + public Boolean allocationPlatform(HandoverTaskOrderDO handoverTaskOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + return handoverTaskOrderService.update(null, new UpdateWrapper().lambda() + .set(HandoverTaskOrder::getPlatformUseStatus, 1) + .set(HandoverTaskOrder::getPlatformId, handoverTaskOrderDO.getPlatformId()) + .set(HandoverTaskOrder::getPlatformCode, handoverTaskOrderDO.getPlatformCode()) + .set(HandoverTaskOrder::getPlatformName, handoverTaskOrderDO.getPlatformName()) + .set(HandoverTaskOrder::getPlatformUseTimeId, handoverTaskOrderDO.getPlatformUseTimeId()) + .set(HandoverTaskOrder::getPlatformUseStartTime, handoverTaskOrderDO.getPlatformUseStartTime()) + .set(HandoverTaskOrder::getPlatformUseEndTime, handoverTaskOrderDO.getPlatformUseEndTime()) + .set(HandoverTaskOrder::getUpdateBy, loginUser.getUserid()) + .set(HandoverTaskOrder::getUpdateByName, loginUser.getUsername()) + .set(HandoverTaskOrder::getUpdateTime, new Date()) + .in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds()) + ); + } + + /** + * @description 释放月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + * @param handoverTaskOrderDO + * @return Boolean + */ + public Boolean releasePlatform(HandoverTaskOrderDO handoverTaskOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + return handoverTaskOrderService.update(null, new UpdateWrapper().lambda() + .set(HandoverTaskOrder::getPlatformUseStatus, 3) + .set(HandoverTaskOrder::getUpdateBy, loginUser.getUserid()) + .set(HandoverTaskOrder::getUpdateByName, loginUser.getUsername()) + .set(HandoverTaskOrder::getUpdateTime, new Date()) + .in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds()) + ); + } + + + /** + * @description 完成交接 + * @author ZhouGY + * @date 2024/5/31 14:23 + * @param handoverTaskOrderDO + * @return Boolean + */ + public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + return handoverTaskOrderService.update(null, new UpdateWrapper().lambda() + .set(HandoverTaskOrder::getStatus, 2) + .set(HandoverTaskOrder::getUpdateBy, loginUser.getUserid()) + .set(HandoverTaskOrder::getUpdateByName, loginUser.getUsername()) + .set(HandoverTaskOrder::getUpdateTime, new Date()) + .in(HandoverTaskOrder::getHandoverTaskOrderId, handoverTaskOrderDO.getHandoverTaskOrderIds()) + ); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java new file mode 100644 index 000000000..9f0cfe107 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/entity/InMaterialDetail.java @@ -0,0 +1,254 @@ +package com.mhd.wms.domain.inMaterialDetail.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("作业数量(例如:收货数量 上架数量)") + @Excel(name = "作业数量(例如:收货数量 上架数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + private Integer receiptStatus; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java new file mode 100644 index 000000000..851a3a7f0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/facade/IInMaterialDetailService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; + +import java.util.List; + +/** + * 物料明细Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IInMaterialDetailService extends IService +{ + + /** + * 分页查询物料明细列表 + */ + public List queryList(InMaterialDetailDO inMaterialDetailDO); + + + public List queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + + /** + * 分页查询物料明细列表 + */ + public List queryListChildren(InMaterialDetailDO inMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean insert(InMaterialDetailDO inMaterialDetailDO); + + /** + * 修改物料明细 + */ + public Boolean update(InMaterialDetailDO inMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean batchInsert(String orderNumber, List inMaterialDetailDOList); + + + /** + * 修改物料明细 + */ + public Boolean batchUpdate(List inMaterialDetailDOList, InMaterialDetailBaseDO inMaterialDetailBaseDO); + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询物料明细 + */ + public InMaterialDetailPO getInfo(Long materialDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java new file mode 100644 index 000000000..618bf84c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/mapper/InMaterialDetailMapper.java @@ -0,0 +1,29 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; + +import java.util.List; + +/** + * 物料明细Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface InMaterialDetailMapper extends BaseMapper +{ + /** + * 查询物料明细列表 + */ + public List queryList(InMaterialDetailDO inMaterialDetailDO); + + /** + * 关联入库单查询物料明细列表 + */ + public List queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java new file mode 100644 index 000000000..e920c49bc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/persistence/InMaterialDetailImpl.java @@ -0,0 +1,242 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetail.repository.mapper.InMaterialDetailMapper; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 物料明细Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class InMaterialDetailImpl extends ServiceImpl implements IInMaterialDetailService { + @Autowired + private InMaterialDetailMapper inMaterialDetailMapper; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private IdGenerator idGenerator; + + + /** + * 查询物料明细列表 + */ + @Override + public List queryList(InMaterialDetailDO inMaterialDetailDO) { + return inMaterialDetailMapper.queryList(inMaterialDetailDO); + } + + /** + * 关联入库单查询物料明细列表 + */ + @Override + public List queryInOrderList(QueryOrderOverStockDO queryOrderOverStockDO) { + return inMaterialDetailMapper.queryInOrderList(queryOrderOverStockDO); + } + + /** + * 查询物料明细列表 + */ + @Override + public List queryListChildren(InMaterialDetailDO inMaterialDetailDO) + { + List inMaterialDetailPOList = inMaterialDetailMapper.queryList(inMaterialDetailDO); + + // 获取查询的层级 + List inMaterialDetailPOParentList = inMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + inMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), inMaterialDetailPOList, 2))); + return inMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List inMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = inMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), inMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增物料明细 + */ + @Override + public Boolean insert(InMaterialDetailDO inMaterialDetailDO) { + InMaterialDetail inMaterialDetail = new InMaterialDetail(); + BeanUtils.copyProperties(inMaterialDetailDO, inMaterialDetail); + return this.save(inMaterialDetail); + } + + /** + * 修改物料明细 + */ + @Override + public Boolean update(InMaterialDetailDO inMaterialDetailDO) { + InMaterialDetail inMaterialDetail = new InMaterialDetail(); + BeanUtils.copyProperties(inMaterialDetailDO, inMaterialDetail); + return this.updateById(inMaterialDetail); + } + + /** + * @description 批量新增物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param inOrderNumber + * @param inMaterialDetailDOList + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchInsert(String inOrderNumber, List inMaterialDetailDOList) { + if (CollectionUtils.isEmpty(inMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 批量新增或修改 + List inMaterialDetailList = new ArrayList<>(); + for (InMaterialDetailDO inMaterialDetailDO : inMaterialDetailDOList){ + InMaterialDetail inMaterialDetail = new InMaterialDetail(); + BeanUtils.copyProperties(inMaterialDetailDO, inMaterialDetail); + inMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + inMaterialDetail.setInOrderNumber(inOrderNumber); + inMaterialDetail.setLevel(1); + inMaterialDetail.setCreateBy(loginUser.getUserid()); + inMaterialDetail.setCreateByName(loginUser.getUsername()); + inMaterialDetail.setCreateTime(new Date()); + inMaterialDetailList.add(inMaterialDetail); + } + return saveBatch(inMaterialDetailList); + } + + /** + * @description 批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param inMaterialDetailDOList + * @param inMaterialDetailBaseDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchUpdate(List inMaterialDetailDOList, InMaterialDetailBaseDO inMaterialDetailBaseDO) { + if (CollectionUtils.isEmpty(inMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + + List inMaterialDetailDbList = inMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(InMaterialDetail::getInOrderNumber, inMaterialDetailBaseDO.getInOrderNumber())); + Map materialDetailMap = inMaterialDetailDbList.stream().collect(Collectors.toMap(InMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List inMaterialDetailList = new ArrayList<>(); + //需要修改的物流明细 + List materialDetailIdsByUpdate = new ArrayList<>(); + for (InMaterialDetailDO inMaterialDetailDO : inMaterialDetailDOList){ + //判断是否需要修改 + InMaterialDetail inMaterialDetail = materialDetailMap.get(inMaterialDetailDO.getMaterialDetailId()); + if (inMaterialDetail == null){ + inMaterialDetail = new InMaterialDetail(); + BeanUtils.copyProperties(inMaterialDetailDO, inMaterialDetail); + inMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + inMaterialDetail.setInOrderNumber(inMaterialDetailBaseDO.getInOrderNumber()); + inMaterialDetail.setOrganizationId(inMaterialDetailBaseDO.getOrganizationId()); + inMaterialDetail.setOrganizationName(inMaterialDetailBaseDO.getOrganizationName()); + inMaterialDetail.setTopOrganizationId(inMaterialDetailBaseDO.getTopOrganizationId()); + }else { + BeanUtils.copyProperties(inMaterialDetailDO, inMaterialDetail); + inMaterialDetail.setUpdateBy(loginUser.getUserid()); + inMaterialDetail.setUpdateByName(loginUser.getUsername()); + inMaterialDetail.setUpdateTime(new Date()); + materialDetailIdsByUpdate.add(inMaterialDetailDO.getMaterialDetailId()); + } + inMaterialDetailList.add(inMaterialDetail); + } + //需修改的物料明细id集合不为空 + if (!CollectionUtils.isEmpty(inMaterialDetailDbList) && !CollectionUtils.isEmpty(materialDetailIdsByUpdate)){ + List materialDetailIdsByDb = inMaterialDetailDbList.stream().map(InMaterialDetail::getMaterialDetailId).collect(Collectors.toList()); + //过滤需要修改的id集合 + materialDetailIdsByDb.removeAll(materialDetailIdsByUpdate); + //判断是否存在需要删除的物流明细 标记删除 + if (!CollectionUtils.isEmpty(materialDetailIdsByDb)){ + update(new UpdateWrapper().lambda() + .set(InMaterialDetail::getDelFlag, 2) + .set(InMaterialDetail::getUpdateBy, loginUser.getUserid()) + .set(InMaterialDetail::getUpdateByName, loginUser.getUsername()) + .set(InMaterialDetail::getUpdateTime, new Date()) + .in(InMaterialDetail::getMaterialDetailId, materialDetailIdsByDb)); + } + } + //保存物料明细信息 + return saveOrUpdateBatch(inMaterialDetailList); + } + + /** + * 批量删除物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + InMaterialDetail inMaterialDetail = new InMaterialDetail(); + inMaterialDetail.setMaterialDetailId(id); + inMaterialDetail.setDelFlag(2); + list.add(inMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细 + */ + @Override + public InMaterialDetailPO getInfo(Long materialDetailId) { + InMaterialDetail inMaterialDetail = this.getById(materialDetailId); + InMaterialDetailPO inMaterialDetailPO = new InMaterialDetailPO(); + BeanUtils.copyProperties(inMaterialDetail, inMaterialDetailPO); + return inMaterialDetailPO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java new file mode 100644 index 000000000..050894b61 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/po/InMaterialDetailPO.java @@ -0,0 +1,266 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "物料明细对象", description = "物料明细响应对象") +public class InMaterialDetailPO extends StockInOrderBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("作业数量(例如:收货数量 上架数量)") + @Excel(name = "作业数量(例如:收货数量 上架数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + private Integer receiptStatus; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("未收货数量") + @Excel(name = "未收货数量") + private BigDecimal waitReceiptQuantity; + + @ApiModelProperty("未上架数量") + @Excel(name = "未上架数量") + private BigDecimal waitShelvesQuantity; + + @ApiModelProperty("物料明细") + private List children; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailBaseDO.java new file mode 100644 index 000000000..75ccc3b4a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailBaseDO.java @@ -0,0 +1,42 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title StockBaseDO + * @description: TODO + * @date 2024/5/23 20:30 + **/ +@Data +public class InMaterialDetailBaseDO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java new file mode 100644 index 000000000..785b6dbde --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/repository/todo/InMaterialDetailDO.java @@ -0,0 +1,261 @@ +package com.mhd.wms.domain.inMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailDO extends StockInOrderBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("作业数量(例如:收货数量 上架数量)") + @Excel(name = "作业数量(例如:收货数量 上架数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + private Integer receiptStatus; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("入库单号集合") + @Excel(name = "入库单号集合") + private List inOrderNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java new file mode 100644 index 000000000..c3adc2ffe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetail/service/InMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.inMaterialDetail.service; + +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InMaterialDetailDomainService { + + @Autowired + private IInMaterialDetailService materialDetailService; + + + /** + * 分页查询物料明细列表 + */ + public List queryList(InMaterialDetailDO inMaterialDetailDO) { + return materialDetailService.queryList(inMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(InMaterialDetailDO inMaterialDetailDO) { + + return materialDetailService.insert(inMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(InMaterialDetailDO inMaterialDetailDO) { + return materialDetailService.update(inMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return materialDetailService.delete(materialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public InMaterialDetailPO getInfo(Long materialDetailId) + { + return materialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/entity/InMaterialDetailSerialNumber.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/entity/InMaterialDetailSerialNumber.java new file mode 100644 index 000000000..06b2a6780 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/entity/InMaterialDetailSerialNumber.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料明细序列号对象 material_detail_serial_number + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailSerialNumber extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/facade/IInMaterialDetailSerialNumberService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/facade/IInMaterialDetailSerialNumberService.java new file mode 100644 index 000000000..b5ab0dacb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/facade/IInMaterialDetailSerialNumberService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; + +import java.util.List; + +/** + * 物料明细序列号Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IInMaterialDetailSerialNumberService extends IService +{ + /** + * 分页查询物料明细序列号列表 + */ + public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO); + + /** + * 新增物料明细序列号 + */ + public Boolean insert(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO); + + /** + * 修改物料明细序列号 + */ + public Boolean update(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO); + + /** + * 批量删除物料明细序列号 + */ + public Boolean delete(Long[] materialDetailSerialNumberIds); + + + /** + * 查询物料明细序列号 + */ + public InMaterialDetailSerialNumberPO getInfo(Long materialDetailSerialNumberId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/mapper/InMaterialDetailSerialNumberMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/mapper/InMaterialDetailSerialNumberMapper.java new file mode 100644 index 000000000..596e733e5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/mapper/InMaterialDetailSerialNumberMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; + +import java.util.List; + +/** + * 物料明细序列号Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface InMaterialDetailSerialNumberMapper extends BaseMapper +{ + /** + * 查询物料明细序列号列表 + */ + public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/persistence/InMaterialDetailSerialNumberImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/persistence/InMaterialDetailSerialNumberImpl.java new file mode 100644 index 000000000..7fdbb3f5a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/persistence/InMaterialDetailSerialNumberImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.mapper.InMaterialDetailSerialNumberMapper; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 物料明细序列号Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class InMaterialDetailSerialNumberImpl extends ServiceImpl implements IInMaterialDetailSerialNumberService { + @Autowired + private InMaterialDetailSerialNumberMapper InMaterialDetailSerialNumberMapper; + + /** + * 查询物料明细序列号列表 + */ + @Override + public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) + { + return InMaterialDetailSerialNumberMapper.queryList(InMaterialDetailSerialNumberDO); + } + + /** + * 新增物料明细序列号 + */ + @Override + public Boolean insert(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(InMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber); + return this.save(inMaterialDetailSerialNumber); + } + + /** + * 修改物料明细序列号 + */ + @Override + public Boolean update(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(InMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber); + return this.updateById(inMaterialDetailSerialNumber); + } + + /** + * 批量删除物料明细序列号 + */ + @Override + public Boolean delete(Long[] materialDetailSerialNumberIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailSerialNumberIds) { + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + inMaterialDetailSerialNumber.setMaterialDetailSerialNumberId(id); + inMaterialDetailSerialNumber.setDelFlag(2); + list.add(inMaterialDetailSerialNumber); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细序列号 + */ + @Override + public InMaterialDetailSerialNumberPO getInfo(Long materialDetailSerialNumberId) { + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = this.getById(materialDetailSerialNumberId); + InMaterialDetailSerialNumberPO InMaterialDetailSerialNumberPO = new InMaterialDetailSerialNumberPO(); + BeanUtils.copyProperties(inMaterialDetailSerialNumber, InMaterialDetailSerialNumberPO); + return InMaterialDetailSerialNumberPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/po/InMaterialDetailSerialNumberPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/po/InMaterialDetailSerialNumberPO.java new file mode 100644 index 000000000..ad884b6cb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/po/InMaterialDetailSerialNumberPO.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料明细序列号对象 material_detail_serial_number + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "物料明细序列号对象", description = "物料明细序列号响应对象") +public class InMaterialDetailSerialNumberPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/todo/InMaterialDetailSerialNumberDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/todo/InMaterialDetailSerialNumberDO.java new file mode 100644 index 000000000..eee8d0abf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/repository/todo/InMaterialDetailSerialNumberDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 物料明细序列号对象 material_detail_serial_number + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailSerialNumberDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private List orderNumbers; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/service/InMaterialDetailSerialNumberDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/service/InMaterialDetailSerialNumberDomainService.java new file mode 100644 index 000000000..b5035637f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inMaterialDetailSerialNumber/service/InMaterialDetailSerialNumberDomainService.java @@ -0,0 +1,64 @@ +package com.mhd.wms.domain.inMaterialDetailSerialNumber.service; + +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细序列号 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InMaterialDetailSerialNumberDomainService { + + @Autowired + private com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService IInMaterialDetailSerialNumberService; + + + /** + * 分页查询物料明细序列号列表 + */ + public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + return IInMaterialDetailSerialNumberService.queryList(InMaterialDetailSerialNumberDO); + } + + + /** + * 新增物料明细序列号 + */ + public Boolean insert(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + + return IInMaterialDetailSerialNumberService.insert(InMaterialDetailSerialNumberDO); + } + + /** + * 修改物料明细序列号 + */ + public Boolean update(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) { + return IInMaterialDetailSerialNumberService.update(InMaterialDetailSerialNumberDO); + } + + /** + * 批量删除物料明细序列号 + */ + public Boolean delete(Long[] materialDetailSerialNumberIds) { + return IInMaterialDetailSerialNumberService.delete(materialDetailSerialNumberIds); + } + + /** + * 获取物料明细序列号详细信息 + */ + public InMaterialDetailSerialNumberPO getInfo(Long materialDetailSerialNumberId) + { + return IInMaterialDetailSerialNumberService.getInfo(materialDetailSerialNumberId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/entity/InOrderAbnormal.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/entity/InOrderAbnormal.java new file mode 100644 index 000000000..abc6692c8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/entity/InOrderAbnormal.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.inOrderAbnormal.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 入库异常单对象 in_order_abnormal + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InOrderAbnormal extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + @TableId(type = IdType.AUTO) + private Long inOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("类型:1-收货 2-上架") + @Excel(name = "类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("允许超出的作业数量") + @Excel(name = "允许超出的作业数量") + private BigDecimal allowActualQuantity; + + @ApiModelProperty("异常数量(异常数量 = 作业数量 - 计划数量)") + @Excel(name = "异常数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-上架异常 2-收货异常 3-收货异常(允许超收没超出超收比例) 4-收货异常(不允许超收)5-收货异常(允许超收但超出超收比例)") + @Excel(name = "异常类型: 1-上架异常 2-收货异常 3-收货异常", readConverterExp = "允=许超收但不允许超出超收比例") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/facade/IInOrderAbnormalService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/facade/IInOrderAbnormalService.java new file mode 100644 index 000000000..ea1f1768c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/facade/IInOrderAbnormalService.java @@ -0,0 +1,54 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inOrderAbnormal.entity.InOrderAbnormal; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalBaseDO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; + +import java.util.List; + +/** + * 入库异常单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IInOrderAbnormalService extends IService +{ + /** + * 分页查询入库异常单列表 + */ + public List queryList(InOrderAbnormalDO inOrderAbnormalDO); + + /** + * 新增入库异常单 + */ + public Boolean insert(InOrderAbnormalDO inOrderAbnormalDO); + + /** + * 修改入库异常单 + */ + public Boolean update(InOrderAbnormalDO inOrderAbnormalDO); + + /** + * 批量删除入库异常单 + */ + public Boolean delete(Long[] inOrderAbnormalIds); + + + /** + * 查询入库异常单 + */ + public InOrderAbnormalPO getInfo(Long inOrderAbnormalId); + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/5/24 11:34 + * @param inOrderAbnormalBaseDO + * @param type 1-收货 2-上架 + * @return Boolean + */ + Boolean genInOrderAbnormal(InOrderAbnormalBaseDO inOrderAbnormalBaseDO, Integer type); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/mapper/InOrderAbnormalMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/mapper/InOrderAbnormalMapper.java new file mode 100644 index 000000000..e5824050c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/mapper/InOrderAbnormalMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inOrderAbnormal.entity.InOrderAbnormal; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; + +import java.util.List; + +/** + * 入库异常单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface InOrderAbnormalMapper extends BaseMapper +{ + /** + * 查询入库异常单列表 + */ + public List queryList(InOrderAbnormalDO inOrderAbnormalDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java new file mode 100644 index 000000000..3205327d8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/persistence/InOrderAbnormalImpl.java @@ -0,0 +1,264 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inOrderAbnormal.entity.InOrderAbnormal; +import com.mhd.wms.domain.inOrderAbnormal.repository.facade.IInOrderAbnormalService; +import com.mhd.wms.domain.inOrderAbnormal.repository.mapper.InOrderAbnormalMapper; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalBaseDO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; +import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail; +import com.mhd.wms.domain.receiptMaterialDetail.repository.mapper.ReceiptMaterialDetailMapper; +import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.mapper.ShelfMaterialDetailMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 入库异常单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class InOrderAbnormalImpl extends ServiceImpl implements IInOrderAbnormalService { + @Autowired + private InOrderAbnormalMapper inOrderAbnormalMapper; + @Autowired + private ReceiptMaterialDetailMapper receiptMaterialDetailMapper; + @Autowired + private ShelfMaterialDetailMapper shelfMaterialDetailMapper; + + /** + * 查询入库异常单列表 + */ + @Override + public List queryList(InOrderAbnormalDO inOrderAbnormalDO) + { + return inOrderAbnormalMapper.queryList(inOrderAbnormalDO); + } + + /** + * 新增入库异常单 + */ + @Override + public Boolean insert(InOrderAbnormalDO inOrderAbnormalDO) { + InOrderAbnormal inOrderAbnormal = new InOrderAbnormal(); + BeanUtils.copyProperties(inOrderAbnormalDO,inOrderAbnormal); + return this.save(inOrderAbnormal); + } + + /** + * 修改入库异常单 + */ + @Override + public Boolean update(InOrderAbnormalDO inOrderAbnormalDO) { + InOrderAbnormal inOrderAbnormal = new InOrderAbnormal(); + BeanUtils.copyProperties(inOrderAbnormalDO,inOrderAbnormal); + return this.updateById(inOrderAbnormal); + } + + /** + * 批量删除入库异常单 + */ + @Override + public Boolean delete(Long[] inOrderAbnormalIds ) { + List list = new ArrayList<>(); + for (Long id : inOrderAbnormalIds) { + InOrderAbnormal inOrderAbnormal = new InOrderAbnormal(); + inOrderAbnormal.setInOrderAbnormalId(id); + inOrderAbnormal.setDelFlag(2); + list.add(inOrderAbnormal); + } + return this.updateBatchById(list); + } + + /** + * 修改入库异常单 + */ + @Override + public InOrderAbnormalPO getInfo(Long inOrderAbnormalId) { + InOrderAbnormalDO inOrderAbnormalDO = new InOrderAbnormalDO(); + inOrderAbnormalDO.setInOrderAbnormalId(inOrderAbnormalId); + List inOrderAbnormalPOList = queryList(inOrderAbnormalDO); + if (CollectionUtils.isEmpty(inOrderAbnormalPOList)){ + throw new ServiceException("入库异常单不存在"); + } + return inOrderAbnormalPOList.get(0); + } + + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/5/22 21:15 + * @param inOrderAbnormalBaseDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genInOrderAbnormal(InOrderAbnormalBaseDO inOrderAbnormalBaseDO, Integer type){ + List inOrderAbnormalList = new ArrayList<>(); + if (1 == type){ + //收货数量与计划数量不符,完成收货会生成收货异常记录 + List receiptMaterialDetailList = receiptMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(ReceiptMaterialDetail::getReceiptOrderNumber, inOrderAbnormalBaseDO.getReceiptOrderNumber())); + inOrderAbnormalList.addAll(genReceiptOrderMaterialDetailList(inOrderAbnormalBaseDO, receiptMaterialDetailList)); + }else if (2 == type) { + //上架数量与收货数量不符,完成收货会生成上架异常记录 + List shelfMaterialDetailList = shelfMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(ShelfMaterialDetail::getShelfOrderNumber, inOrderAbnormalBaseDO.getShelfOrderNumber())); + inOrderAbnormalList.addAll(genShelfOrderMaterialDetailList(inOrderAbnormalBaseDO, shelfMaterialDetailList)); + }else { + throw new ServiceException("异常类型错误"); + } + if (!CollectionUtils.isEmpty(inOrderAbnormalList)){ + return saveBatch(inOrderAbnormalList); + } + return true; + } + + /** + * @description 收货数量与计划数量不符,完成收货会生成收货异常记录 + * @author ZhouGY + * @date 2024/5/24 11:45 + * @param inOrderAbnormalBaseDO + * @param shelfMaterialDetailList + * @return List + */ + private List genShelfOrderMaterialDetailList(InOrderAbnormalBaseDO inOrderAbnormalBaseDO, List shelfMaterialDetailList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List inOrderAbnormalList = new ArrayList<>(); + for (ShelfMaterialDetail shelfMaterialDetail : shelfMaterialDetailList){ + //上架 + if (shelfMaterialDetail.getShelvesQuantity().compareTo(shelfMaterialDetail.getQuantity()) != 0){ + //判断是否存在异常 根据设置的是否允许超收 取值动态赋值 先默认写死 收货异常 + InOrderAbnormal inOrderAbnormal = new InOrderAbnormal(); + //赋值基础数据 + BeanUtils.copyProperties(inOrderAbnormalBaseDO, inOrderAbnormal); + //赋值物料信息 + BeanUtils.copyProperties(shelfMaterialDetail, inOrderAbnormal, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetail)); + inOrderAbnormal.setAbnormalNumber(OrderSequence.getOrderCode("SHYC")); + if (shelfMaterialDetail.getShelvesQuantity().compareTo(shelfMaterialDetail.getQuantity()) > 0){ + //上架数量大于收货数量 + inOrderAbnormal.setAbnormalType(1); + inOrderAbnormal.setActualQuantity(shelfMaterialDetail.getShelvesQuantity()); + inOrderAbnormal.setAbnormalReason("上架数量大于收货数量"); + }else if (shelfMaterialDetail.getShelvesQuantity().compareTo(shelfMaterialDetail.getQuantity()) < 0){ + //上架数量小于收货数量 + inOrderAbnormal.setAbnormalType(1); + inOrderAbnormal.setActualQuantity(shelfMaterialDetail.getShelvesQuantity()); + inOrderAbnormal.setAbnormalReason("上架数量小于收货数量"); + } + inOrderAbnormal.setAllowActualQuantity(shelfMaterialDetail.getQuantity()); + inOrderAbnormal.setAbnormalActualQuantity(shelfMaterialDetail.getShelvesQuantity().subtract(shelfMaterialDetail.getQuantity())); + inOrderAbnormal.setCreateBy(loginUser.getUserid()); + inOrderAbnormal.setCreateByName(loginUser.getUsername()); + inOrderAbnormal.setCreateTime(new Date()); + inOrderAbnormal.setType(2); + inOrderAbnormalList.add(inOrderAbnormal); + } + } + return inOrderAbnormalList; + } + + /** + * @description 收货数量与计划数量不符,完成收货会生成收货异常记录 + * @author ZhouGY + * @date 2024/5/24 11:45 + * @param inOrderAbnormalBaseDO + * @param receiptMaterialDetailList + * @return List + */ + private List genReceiptOrderMaterialDetailList(InOrderAbnormalBaseDO inOrderAbnormalBaseDO, List receiptMaterialDetailList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List inOrderAbnormalList = new ArrayList<>(); + for (ReceiptMaterialDetail receiptMaterialDetail : receiptMaterialDetailList){ + //收货 + if (receiptMaterialDetail.getReceiptQuantity().compareTo(receiptMaterialDetail.getQuantity()) != 0){ + //判断是否存在异常 根据设置的是否允许超收 取值动态赋值 先默认写死 收货异常 + InOrderAbnormal inOrderAbnormal = new InOrderAbnormal(); + //赋值基础数据 + BeanUtils.copyProperties(inOrderAbnormalBaseDO, inOrderAbnormal); + //赋值物料信息 + BeanUtils.copyProperties(receiptMaterialDetail, inOrderAbnormal, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetail)); + inOrderAbnormal.setAbnormalNumber(OrderSequence.getOrderCode("SHYC")); + if (receiptMaterialDetail.getReceiptQuantity().compareTo(receiptMaterialDetail.getQuantity()) > 0){ + //收货数量大于应收数量 + greatAbnormalParams(receiptMaterialDetail, inOrderAbnormal); + }else if (receiptMaterialDetail.getReceiptQuantity().compareTo(receiptMaterialDetail.getQuantity()) < 0){ + //收货数量小于应收数量 + lessAbnormalSmallParams(receiptMaterialDetail, inOrderAbnormal); + } + inOrderAbnormal.setCreateBy(loginUser.getUserid()); + inOrderAbnormal.setCreateByName(loginUser.getUsername()); + inOrderAbnormal.setCreateTime(new Date()); + inOrderAbnormal.setType(1); + inOrderAbnormalList.add(inOrderAbnormal); + } + } + return inOrderAbnormalList; + } + + /** + * @description 大于创建异常参数 + * @author ZhouGY + * @date 2024/5/24 9:10 + * @param receiptMaterialDetail + * @return InOrderAbnormal + */ + private InOrderAbnormal greatAbnormalParams(ReceiptMaterialDetail receiptMaterialDetail, InOrderAbnormal inOrderAbnormal){ + //是否允许超收: 1-是 2-否 + if (receiptMaterialDetail.getAllowOvercharge() == 2){ + //计算允许超收量 + //允许超出的作业量 = 计划数量 * 超收比例 * 0.01 + BigDecimal allowActualQuantity = receiptMaterialDetail.getQuantity().multiply(receiptMaterialDetail.getOverchargeRatio()).multiply(new BigDecimal("0.01")); + BigDecimal maxActualQuantity = receiptMaterialDetail.getQuantity().add(allowActualQuantity); + if (receiptMaterialDetail.getReceiptQuantity().compareTo(maxActualQuantity) <= 0){ + //收货异常(允许超收 单在超收范围内超出超收比例) 收货数量大于应收数量 但没有超出超收限制 + inOrderAbnormal.setAbnormalType(3); + inOrderAbnormal.setActualQuantity(receiptMaterialDetail.getReceiptQuantity()); + inOrderAbnormal.setAbnormalReason("收货数量大于应收数量,但没有超出超收限制"); + }else { + //收货异常(允许超收 且超出超收比例) 收货数量大于应收数量且超出超收限制 + inOrderAbnormal.setAbnormalType(5); + inOrderAbnormal.setActualQuantity(receiptMaterialDetail.getReceiptQuantity()); + inOrderAbnormal.setAbnormalReason("收货数量大于应收数量,且超出超收限制"); + } + inOrderAbnormal.setAllowActualQuantity(allowActualQuantity); + inOrderAbnormal.setAbnormalActualQuantity(receiptMaterialDetail.getReceiptQuantity().subtract(receiptMaterialDetail.getQuantity())); + }else { + //收货异常(不允许超收) 收货数量大于应收数量 + inOrderAbnormal.setAbnormalType(4); + inOrderAbnormal.setActualQuantity(receiptMaterialDetail.getReceiptQuantity()); + inOrderAbnormal.setAbnormalReason("收货数量大于应收数量"); + } + return inOrderAbnormal; + } + + /** + * @description 小于创建异常参数 + * @author ZhouGY + * @date 2024/5/24 9:10 + * @param receiptMaterialDetail + * @return InOrderAbnormal + */ + private InOrderAbnormal lessAbnormalSmallParams(ReceiptMaterialDetail receiptMaterialDetail, InOrderAbnormal inOrderAbnormal){ + inOrderAbnormal.setAbnormalType(2); + inOrderAbnormal.setActualQuantity(receiptMaterialDetail.getReceiptQuantity()); + inOrderAbnormal.setAbnormalReason("收货数量小于应收数量"); + return inOrderAbnormal; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/po/InOrderAbnormalPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/po/InOrderAbnormalPO.java new file mode 100644 index 000000000..b1070370c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/po/InOrderAbnormalPO.java @@ -0,0 +1,96 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 入库异常单对象 in_order_abnormal + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "入库异常单对象", description = "入库异常单响应对象") +public class InOrderAbnormalPO extends StockInOrderBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("类型:1-收货 2-上架") + @Excel(name = "类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("允许超出的作业数量") + @Excel(name = "允许超出的作业数量") + private BigDecimal allowActualQuantity; + + @ApiModelProperty("异常数量(异常数量 = 作业数量 - 计划数量)") + @Excel(name = "异常数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-上架异常 2-收货异常 3-收货异常(允许超收没超出超收比例) 4-收货异常(不允许超收)5-收货异常(允许超收但超出超收比例)") + @Excel(name = "异常类型: 1-上架异常 2-收货异常 3-收货异常", readConverterExp = "允=许超收但不允许超出超收比例") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("收货明细") + private List receiptMaterialDetailList; + + @ApiModelProperty("上架明细") + private List shelfMaterialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalBaseDO.java new file mode 100644 index 000000000..fb3e3df25 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalBaseDO.java @@ -0,0 +1,46 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title StockBaseDO + * @description: TODO + * @date 2024/5/23 20:30 + **/ +@Data +public class InOrderAbnormalBaseDO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("类型:1-收货 2-上架") + @Excel(name = "类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalDO.java new file mode 100644 index 000000000..5ff5222fb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/repository/todo/InOrderAbnormalDO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.inOrderAbnormal.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 入库异常单对象 in_order_abnormal + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InOrderAbnormalDO extends StockInOrderBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("类型:1-收货 2-上架") + @Excel(name = "类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("允许超出的作业数量") + @Excel(name = "允许超出的作业数量") + private BigDecimal allowActualQuantity; + + @ApiModelProperty("异常数量(异常数量 = 作业数量 - 计划数量)") + @Excel(name = "异常数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-上架异常 2-收货异常 3-收货异常(允许超收没超出超收比例) 4-收货异常(不允许超收)5-收货异常(允许超收但超出超收比例)") + @Excel(name = "异常类型: 1-上架异常 2-收货异常 3-收货异常", readConverterExp = "允=许超收但不允许超出超收比例") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/service/InOrderAbnormalDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/service/InOrderAbnormalDomainService.java new file mode 100644 index 000000000..2f9ab5215 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inOrderAbnormal/service/InOrderAbnormalDomainService.java @@ -0,0 +1,103 @@ +package com.mhd.wms.domain.inOrderAbnormal.service; + +import com.mhd.wms.domain.inOrderAbnormal.repository.facade.IInOrderAbnormalService; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库异常单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class InOrderAbnormalDomainService { + + @Autowired + private IInOrderAbnormalService inOrderAbnormalService; + + @Autowired + private IReceiptMaterialDetailService receiptMaterialDetailService; + + @Autowired + private IShelfMaterialDetailService shelfMaterialDetailService; + + + /** + * 分页查询入库异常单列表 + */ + public List queryList(InOrderAbnormalDO inOrderAbnormalDO) { + return inOrderAbnormalService.queryList(inOrderAbnormalDO); + } + + + /** + * 新增入库异常单 + */ + public Boolean insert(InOrderAbnormalDO inOrderAbnormalDO) { + + return inOrderAbnormalService.insert(inOrderAbnormalDO); + } + + /** + * 修改入库异常单 + */ + public Boolean update(InOrderAbnormalDO inOrderAbnormalDO) { + return inOrderAbnormalService.update(inOrderAbnormalDO); + } + + /** + * 批量删除入库异常单 + */ + public Boolean delete(Long[] inOrderAbnormalIds) { + return inOrderAbnormalService.delete(inOrderAbnormalIds); + } + + /** + * 获取入库上架异常单详细信息 + */ + public InOrderAbnormalPO getInfo(Long inOrderAbnormalId) { + InOrderAbnormalPO inOrderAbnormalPO = inOrderAbnormalService.getInfo(inOrderAbnormalId); + if (inOrderAbnormalPO.getType() == 1){ + inOrderAbnormalPO.setReceiptMaterialDetailList(getReceiptInfo(inOrderAbnormalPO.getReceiptOrderNumber())); + }else { + //根据上架单号查询 + inOrderAbnormalPO.setShelfMaterialDetailList(getShelfInfo(inOrderAbnormalPO.getShelfOrderNumber())); + } + return inOrderAbnormalPO; + } + + /** + * 获取入库收货异常单详细信息 + */ + public List getReceiptInfo(String receiptOrderNumber) { + //根据收货单号查询 + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumber(receiptOrderNumber); + return receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO); + } + + + /** + * 获取入库上架异常单详细信息 + */ + public List getShelfInfo(String shelfOrderNumber) { + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + //根据上架单号查询 + shelfMaterialDetailDO.setShelfOrderNumber(shelfOrderNumber); + return shelfMaterialDetailService.queryListChildren(shelfMaterialDetailDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/entity/InventoryAdjustmentRecord.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/entity/InventoryAdjustmentRecord.java new file mode 100644 index 000000000..b7f85f469 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/entity/InventoryAdjustmentRecord.java @@ -0,0 +1,152 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存调整记录对象 inventory_adjustment_record + * + * @author gen + * @date 2024-07-17 + */ + +@Data +public class InventoryAdjustmentRecord extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存调整记录id") + @TableId(type = IdType.AUTO) + private Long inventoryAdjustmentId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + @Excel(name = "调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + private Long adjustType; + + @ApiModelProperty("调整方向:0:无状态 1:增库存 2:减库存") + @Excel(name = "调整方向:0:无状态 1:增库存 2:减库存") + private Long adjustDirection; + + @ApiModelProperty("调整前状态编码") + @Excel(name = "调整前状态编码") + private String adjustBeforeStatusCode; + + @ApiModelProperty("调整前状态名称") + @Excel(name = "调整前状态名称") + private String adjustBeforeStatusName; + + @ApiModelProperty("调整后状态编码") + @Excel(name = "调整后状态编码") + private String adjustAfterStatusCode; + + @ApiModelProperty("调整后状态名称") + @Excel(name = "调整后状态名称") + private String adjustAfterStatusName; + + @ApiModelProperty("调整前库存数量") + @Excel(name = "调整前库存数量") + private BigDecimal inventoryBeforeQuantity; + + @ApiModelProperty("调整前可用数量") + @Excel(name = "调整前可用数量") + private BigDecimal allocationBeforeQuantity; + + @ApiModelProperty("调整前冻结数量") + @Excel(name = "调整前冻结数量") + private BigDecimal freezeBeforeQuantity; + + @ApiModelProperty("调整后库存数量") + @Excel(name = "调整后库存数量") + private BigDecimal inventoryAfterQuantity; + + @ApiModelProperty("调整后可用数量") + @Excel(name = "调整后可用数量") + private BigDecimal allocationAfterQuantity; + + @ApiModelProperty("调整后冻结数量") + @Excel(name = "调整后冻结数量") + private BigDecimal freezeAfterQuantity; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/facade/IInventoryAdjustmentRecordService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/facade/IInventoryAdjustmentRecordService.java new file mode 100644 index 000000000..e46a84feb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/facade/IInventoryAdjustmentRecordService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; + +import java.util.List; + +/** + * 库存调整记录Service接口 + * + * @author gen + * @date 2024-07-17 + */ +public interface IInventoryAdjustmentRecordService extends IService +{ + /** + * 分页查询库存调整记录列表 + */ + public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO); + + /** + * 新增库存调整记录 + */ + public Boolean insert(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO); + + /** + * 修改库存调整记录 + */ + public Boolean update(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO); + + /** + * 批量删除库存调整记录 + */ + public Boolean delete(Long[] inventoryAdjustmentIds); + + + /** + * 查询库存调整记录 + */ + public InventoryAdjustmentRecordPO getInfo(Long inventoryAdjustmentId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/mapper/InventoryAdjustmentRecordMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/mapper/InventoryAdjustmentRecordMapper.java new file mode 100644 index 000000000..30f19ceb4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/mapper/InventoryAdjustmentRecordMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; + +import java.util.List; + +/** + * 库存调整记录Mapper接口 + * + * @author gen + * @date 2024-07-17 + */ +public interface InventoryAdjustmentRecordMapper extends BaseMapper +{ + /** + * 查询库存调整记录列表 + */ + public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/persistence/InventoryAdjustmentRecordImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/persistence/InventoryAdjustmentRecordImpl.java new file mode 100644 index 000000000..1a6136768 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/persistence/InventoryAdjustmentRecordImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.facade.IInventoryAdjustmentRecordService; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.mapper.InventoryAdjustmentRecordMapper; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存调整记录Service业务层处理 + * + * @author gen + * @date 2024-07-17 + */ +@Service +public class InventoryAdjustmentRecordImpl extends ServiceImpl implements IInventoryAdjustmentRecordService { + @Autowired + private InventoryAdjustmentRecordMapper inventoryAdjustmentRecordMapper; + + /** + * 查询库存调整记录列表 + */ + @Override + public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) + { + return inventoryAdjustmentRecordMapper.queryList(inventoryAdjustmentRecordDO); + } + + /** + * 新增库存调整记录 + */ + @Override + public Boolean insert(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + InventoryAdjustmentRecord inventoryAdjustmentRecord = new InventoryAdjustmentRecord(); + BeanUtils.copyProperties(inventoryAdjustmentRecordDO,inventoryAdjustmentRecord); + return this.save(inventoryAdjustmentRecord); + } + + /** + * 修改库存调整记录 + */ + @Override + public Boolean update(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + InventoryAdjustmentRecord inventoryAdjustmentRecord = new InventoryAdjustmentRecord(); + BeanUtils.copyProperties(inventoryAdjustmentRecordDO,inventoryAdjustmentRecord); + return this.updateById(inventoryAdjustmentRecord); + } + + /** + * 批量删除库存调整记录 + */ + @Override + public Boolean delete(Long[] inventoryAdjustmentIds ) { + List list = new ArrayList<>(); + for (Long id : inventoryAdjustmentIds) { + InventoryAdjustmentRecord inventoryAdjustmentRecord = new InventoryAdjustmentRecord(); + inventoryAdjustmentRecord.setInventoryAdjustmentId(id); + inventoryAdjustmentRecord.setDelFlag(2); + list.add(inventoryAdjustmentRecord); + } + return this.updateBatchById(list); + } + + /** + * 修改库存调整记录 + */ + @Override + public InventoryAdjustmentRecordPO getInfo(Long inventoryAdjustmentId) { + InventoryAdjustmentRecord inventoryAdjustmentRecord = this.getById(inventoryAdjustmentId); + InventoryAdjustmentRecordPO inventoryAdjustmentRecordPO = new InventoryAdjustmentRecordPO(); + BeanUtils.copyProperties(inventoryAdjustmentRecord,inventoryAdjustmentRecordPO); + return inventoryAdjustmentRecordPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/po/InventoryAdjustmentRecordPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/po/InventoryAdjustmentRecordPO.java new file mode 100644 index 000000000..23d21eb92 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/po/InventoryAdjustmentRecordPO.java @@ -0,0 +1,152 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存调整记录对象 inventory_adjustment_record + * + * @author gen + * @date 2024-07-17 + */ + +@Data +@ApiModel(value = "库存调整记录对象", description = "库存调整记录响应对象") +public class InventoryAdjustmentRecordPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存调整记录id") + private Long inventoryAdjustmentId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + @Excel(name = "调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + private Long adjustType; + + @ApiModelProperty("调整方向:0:无状态 1:增库存 2:减库存") + @Excel(name = "调整方向:0:无状态 1:增库存 2:减库存") + private Long adjustDirection; + + @ApiModelProperty("调整前状态编码") + @Excel(name = "调整前状态编码") + private String adjustBeforeStatusCode; + + @ApiModelProperty("调整前状态名称") + @Excel(name = "调整前状态名称") + private String adjustBeforeStatusName; + + @ApiModelProperty("调整后状态编码") + @Excel(name = "调整后状态编码") + private String adjustAfterStatusCode; + + @ApiModelProperty("调整后状态名称") + @Excel(name = "调整后状态名称") + private String adjustAfterStatusName; + + @ApiModelProperty("调整前库存数量") + @Excel(name = "调整前库存数量") + private BigDecimal inventoryBeforeQuantity; + + @ApiModelProperty("调整前可用数量") + @Excel(name = "调整前可用数量") + private BigDecimal allocationBeforeQuantity; + + @ApiModelProperty("调整前冻结数量") + @Excel(name = "调整前冻结数量") + private BigDecimal freezeBeforeQuantity; + + @ApiModelProperty("调整后库存数量") + @Excel(name = "调整后库存数量") + private BigDecimal inventoryAfterQuantity; + + @ApiModelProperty("调整后可用数量") + @Excel(name = "调整后可用数量") + private BigDecimal allocationAfterQuantity; + + @ApiModelProperty("调整后冻结数量") + @Excel(name = "调整后冻结数量") + private BigDecimal freezeAfterQuantity; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/todo/InventoryAdjustmentRecordDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/todo/InventoryAdjustmentRecordDO.java new file mode 100644 index 000000000..4a872ebdc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/repository/todo/InventoryAdjustmentRecordDO.java @@ -0,0 +1,166 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 库存调整记录对象 inventory_adjustment_record + * + * @author gen + * @date 2024-07-17 + */ + +@Data +public class InventoryAdjustmentRecordDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存调整记录id") + private Long inventoryAdjustmentId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + @Excel(name = "调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + private Long adjustType; + + @ApiModelProperty("调整方向:0:无状态 1:增库存 2:减库存") + @Excel(name = "调整方向:0:无状态 1:增库存 2:减库存") + private Long adjustDirection; + + @ApiModelProperty("调整前状态编码") + @Excel(name = "调整前状态编码") + private String adjustBeforeStatusCode; + + @ApiModelProperty("调整前状态名称") + @Excel(name = "调整前状态名称") + private String adjustBeforeStatusName; + + @ApiModelProperty("调整后状态编码") + @Excel(name = "调整后状态编码") + private String adjustAfterStatusCode; + + @ApiModelProperty("调整后状态名称") + @Excel(name = "调整后状态名称") + private String adjustAfterStatusName; + + @ApiModelProperty("调整数量") + @Excel(name = "调整数量") + private BigDecimal adjustQuantity; + + @ApiModelProperty("调整前库存数量") + @Excel(name = "调整前库存数量") + private BigDecimal inventoryBeforeQuantity; + + @ApiModelProperty("调整前可用数量") + @Excel(name = "调整前可用数量") + private BigDecimal allocationBeforeQuantity; + + @ApiModelProperty("调整前冻结数量") + @Excel(name = "调整前冻结数量") + private BigDecimal freezeBeforeQuantity; + + @ApiModelProperty("调整后库存数量") + @Excel(name = "调整后库存数量") + private BigDecimal inventoryAfterQuantity; + + @ApiModelProperty("调整后可用数量") + @Excel(name = "调整后可用数量") + private BigDecimal allocationAfterQuantity; + + @ApiModelProperty("调整后冻结数量") + @Excel(name = "调整后冻结数量") + private BigDecimal freezeAfterQuantity; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java new file mode 100644 index 000000000..b954b44b4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAdjustmentRecord/service/InventoryAdjustmentRecordDomainService.java @@ -0,0 +1,348 @@ +package com.mhd.wms.domain.inventoryAdjustmentRecord.service; + +import cn.hutool.core.util.ObjectUtil; +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.facade.IInventoryAdjustmentRecordService; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +/** + * 库存调整记录 + * + * @author gen + * @date 2024-07-17 + */ +@Service +@Slf4j +public class InventoryAdjustmentRecordDomainService { + + @Autowired + private IInventoryAdjustmentRecordService inventoryAdjustmentRecordService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + + + /** + * 分页查询库存调整记录列表 + */ + public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordService.queryList(inventoryAdjustmentRecordDO); + } + + + /** + * 新增库存调整记录 + */ + public Boolean insert(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + + return inventoryAdjustmentRecordService.insert(inventoryAdjustmentRecordDO); + } + + /** + * 修改库存调整记录 + */ + public Boolean update(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + return inventoryAdjustmentRecordService.update(inventoryAdjustmentRecordDO); + } + + /** + * 批量删除库存调整记录 + */ + public Boolean delete(Long[] inventoryAdjustmentIds) { + return inventoryAdjustmentRecordService.delete(inventoryAdjustmentIds); + } + + /** + * 获取库存调整记录详细信息 + */ + public InventoryAdjustmentRecordPO getInfo(Long inventoryAdjustmentId) + { + return inventoryAdjustmentRecordService.getInfo(inventoryAdjustmentId); + } + + /** + * @description:库存调整 + * @param inventoryAdjustmentRecordDO + * @return: java.lang.Boolean + * @author: lianzj + * @time: 2024-07-18 9:30:30 + */ + @Transactional + public Boolean inventoryAdjust(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + InventoryAdjustmentRecordDO inventoryAdjustmentRecord = new InventoryAdjustmentRecordDO(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + inventoryAdjustmentRecord.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inventoryAdjustmentRecord.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inventoryAdjustmentRecord.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inventoryAdjustmentRecord.setCreateBy(loginUser.getUserid()); + inventoryAdjustmentRecord.setCreateByName(loginUser.getUsername()); + inventoryAdjustmentRecord.setCreateTime(new Date()); + MaterialInventory materialInventory = null; + //根据调整类型判断,数量调整只调整当前库存记录数量,状态调整减少当前原物料状态库存数量和可用数量,增加到现状态库存数量和可用数量 + if (inventoryAdjustmentRecordDO.getAdjustType() != null && inventoryAdjustmentRecordDO.getAdjustType() == 1) { + inventoryAdjustmentRecord.setAdjustType(1L); + if (inventoryAdjustmentRecordDO.getMaterialInventoryId() != null) { + materialInventory = materialInventoryService.getById(inventoryAdjustmentRecordDO.getMaterialInventoryId()); + if (ObjectUtil.isNotNull(materialInventory)) { + BeanUtils.copyProperties(materialInventory, inventoryAdjustmentRecord); + inventoryAdjustmentRecord.setInventoryBeforeQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory.getFreezeQuantity()); + MaterialBaseInfo materialBaseInfo = materialBaseInfoService.getOne(new QueryWrapper().lambda() + .eq(MaterialBaseInfo::getMaterialBaseInfoId,materialInventory.getMaterialBaseInfoId()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(materialBaseInfo)) { + inventoryAdjustmentRecord.setMaterialCode(materialBaseInfo.getMaterialCode()); + inventoryAdjustmentRecord.setMaterialName(materialBaseInfo.getMaterialName()); + inventoryAdjustmentRecord.setBarCode(materialBaseInfo.getBarCode()); + inventoryAdjustmentRecord.setShipperId(materialBaseInfo.getShipperId()); + inventoryAdjustmentRecord.setShipperName(materialBaseInfo.getShipperName()); + } + //根据调整方向判断 + if (inventoryAdjustmentRecordDO.getAdjustDirection() != null && inventoryAdjustmentRecordDO.getAdjustDirection() == 1) { + materialInventory.setInventoryQuantity(materialInventory.getInventoryQuantity().add(inventoryAdjustmentRecordDO.getAdjustQuantity())); + materialInventory.setAllocationQuantity(materialInventory.getAllocationQuantity().add(inventoryAdjustmentRecordDO.getAdjustQuantity())); + + } else if (inventoryAdjustmentRecordDO.getAdjustDirection() != null && inventoryAdjustmentRecordDO.getAdjustDirection() == 2) { + materialInventory.setInventoryQuantity(materialInventory.getInventoryQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + if (materialInventory.getInventoryQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("库存数量调整之后不能小于0"); + } + materialInventory.setAllocationQuantity(materialInventory.getAllocationQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + if (materialInventory.getAllocationQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("可用数量调整之后不能小于0"); + } + } + inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory.getFreezeQuantity()); + } else { + throw new ServiceException("根据物料库存id查询不到物料库存信息!"); + } + } + } else if (inventoryAdjustmentRecordDO.getAdjustType() != null && inventoryAdjustmentRecordDO.getAdjustType() == 2) { + inventoryAdjustmentRecord.setAdjustType(2L); + inventoryAdjustmentRecord.setAdjustBeforeStatusCode(inventoryAdjustmentRecordDO.getAdjustBeforeStatusCode()); + inventoryAdjustmentRecord.setAdjustBeforeStatusName(inventoryAdjustmentRecordDO.getAdjustBeforeStatusName()); + //根据物料基本信息id,仓库id,库区id,库位id,原物料状态查询 + materialInventory = materialInventoryService.getOne(new QueryWrapper().lambda() + .eq(MaterialInventory::getMaterialInventoryId,inventoryAdjustmentRecordDO.getMaterialInventoryId()) + .eq(MaterialInventory::getMaterialBaseInfoId,inventoryAdjustmentRecordDO.getMaterialBaseInfoId()) + .eq(MaterialInventory::getWarehouseId,inventoryAdjustmentRecordDO.getWarehouseId()) + .eq(MaterialInventory::getStorageSectionId,inventoryAdjustmentRecordDO.getStorageSectionId()) + .eq(MaterialInventory::getStorageLocationId,inventoryAdjustmentRecordDO.getStorageLocationId()) + .eq(MaterialInventory::getMaterialStatusCode,inventoryAdjustmentRecordDO.getAdjustBeforeStatusCode()) + .eq(MaterialInventory::getBatchNumber,inventoryAdjustmentRecordDO.getBatchNumber()) + .eq(MaterialInventory::getContainerId,inventoryAdjustmentRecordDO.getContainerId()) + .eq(BaseVOEntity::getDelFlag, 1)); + if (ObjectUtil.isNotNull(materialInventory)) { + BeanUtils.copyProperties(materialInventory, inventoryAdjustmentRecord); + inventoryAdjustmentRecord.setInventoryBeforeQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory.getFreezeQuantity()); + MaterialBaseInfo materialBaseInfo = materialBaseInfoService.getOne(new QueryWrapper().lambda() + .eq(MaterialBaseInfo::getMaterialBaseInfoId,materialInventory.getMaterialBaseInfoId()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(materialBaseInfo)) { + inventoryAdjustmentRecord.setMaterialCode(materialBaseInfo.getMaterialCode()); + inventoryAdjustmentRecord.setMaterialName(materialBaseInfo.getMaterialName()); + inventoryAdjustmentRecord.setBarCode(materialBaseInfo.getBarCode()); + inventoryAdjustmentRecord.setShipperId(materialBaseInfo.getShipperId()); + inventoryAdjustmentRecord.setShipperName(materialBaseInfo.getShipperName()); + } + materialInventory.setInventoryQuantity(materialInventory.getInventoryQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + if (materialInventory.getInventoryQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("库存数量调整之后不能小于0"); + } + materialInventory.setAllocationQuantity(materialInventory.getAllocationQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + if (materialInventory.getAllocationQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("可用数量调整之后不能小于0"); + } + inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory.getFreezeQuantity()); + } else { + throw new ServiceException("根据原物料状态查询不到物料库存信息!"); + } + //根据物料基本信息id,仓库id,库区id,库位id,现物料状态查询 + MaterialInventory materialInventory1 = materialInventoryService.getOne(new QueryWrapper().lambda() + .eq(MaterialInventory::getMaterialBaseInfoId,inventoryAdjustmentRecordDO.getMaterialBaseInfoId()) + .eq(MaterialInventory::getWarehouseId,inventoryAdjustmentRecordDO.getWarehouseId()) + .eq(MaterialInventory::getStorageSectionId,inventoryAdjustmentRecordDO.getStorageSectionId()) + .eq(MaterialInventory::getStorageLocationId,inventoryAdjustmentRecordDO.getStorageLocationId()) + .eq(MaterialInventory::getMaterialStatusCode,inventoryAdjustmentRecordDO.getAdjustAfterStatusCode()) + .eq(MaterialInventory::getBatchNumber,inventoryAdjustmentRecordDO.getBatchNumber()) + .eq(MaterialInventory::getContainerId,inventoryAdjustmentRecordDO.getContainerId()) + .eq(BaseVOEntity::getDelFlag, 1)); + if (ObjectUtil.isNotNull(materialInventory1)) { + materialInventory1.setInventoryQuantity(materialInventory1.getInventoryQuantity().add(inventoryAdjustmentRecordDO.getAdjustQuantity())); + materialInventory1.setAllocationQuantity(materialInventory1.getAllocationQuantity().add(inventoryAdjustmentRecordDO.getAdjustQuantity())); + materialInventoryService.updateById(materialInventory1); + + inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory1.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory1.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory1.getFreezeQuantity()); + } else { + throw new ServiceException("根据现物料状态查询不到调整库存库存信息!"); + } + inventoryAdjustmentRecord.setAdjustAfterStatusCode(inventoryAdjustmentRecordDO.getAdjustAfterStatusCode()); + inventoryAdjustmentRecord.setAdjustAfterStatusName(inventoryAdjustmentRecordDO.getAdjustAfterStatusName()); + } + //生成库存调整追溯记录 + if (ObjectUtil.isNotNull(materialInventory)){ + genInventoryStandingDetail(materialInventory, inventoryAdjustmentRecordDO.getAdjustQuantity()); + } + materialInventoryService.updateById(materialInventory); + return inventoryAdjustmentRecordService.insert(inventoryAdjustmentRecord); + } + + /** + * @description:库存冻结 + * @param inventoryAdjustmentRecordDO + * @return: java.lang.Boolean + * @author: lianzj + * @time: 2024-07-18 14:58:50 + */ + @Transactional + public Boolean inventoryFrozen(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + InventoryAdjustmentRecordDO inventoryAdjustmentRecord = new InventoryAdjustmentRecordDO(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + inventoryAdjustmentRecord.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inventoryAdjustmentRecord.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inventoryAdjustmentRecord.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inventoryAdjustmentRecord.setCreateBy(loginUser.getUserid()); + inventoryAdjustmentRecord.setCreateByName(loginUser.getUsername()); + inventoryAdjustmentRecord.setCreateTime(new Date()); + MaterialInventory materialInventory = materialInventoryService.getById(inventoryAdjustmentRecordDO.getMaterialInventoryId()); + inventoryAdjustmentRecord.setAdjustType(3L); + if (ObjectUtil.isNotNull(materialInventory)) { + BeanUtils.copyProperties(materialInventory, inventoryAdjustmentRecord); + inventoryAdjustmentRecord.setInventoryBeforeQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory.getFreezeQuantity()); + MaterialBaseInfo materialBaseInfo = materialBaseInfoService.getOne(new QueryWrapper().lambda() + .eq(MaterialBaseInfo::getMaterialBaseInfoId,materialInventory.getMaterialBaseInfoId()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(materialBaseInfo)) { + inventoryAdjustmentRecord.setMaterialCode(materialBaseInfo.getMaterialCode()); + inventoryAdjustmentRecord.setMaterialName(materialBaseInfo.getMaterialName()); + inventoryAdjustmentRecord.setBarCode(materialBaseInfo.getBarCode()); + inventoryAdjustmentRecord.setShipperId(materialBaseInfo.getShipperId()); + inventoryAdjustmentRecord.setShipperName(materialBaseInfo.getShipperName()); + } + //可用数量减,冻结数量加 + materialInventory.setAllocationQuantity(materialInventory.getAllocationQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + materialInventory.setFreezeQuantity(materialInventory.getFreezeQuantity().add(inventoryAdjustmentRecordDO.getAdjustQuantity())); + if (materialInventory.getAllocationQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("冻结可用数量不能小于0"); + } + inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory.getFreezeQuantity()); + } else { + throw new ServiceException("根据物料库存id查询不到物料库存信息!"); + } + materialInventoryService.updateById(materialInventory); + return inventoryAdjustmentRecordService.insert(inventoryAdjustmentRecord); + } + + /** + * @description:库存冻结,根据禅道BUG8000,重新编写:http://chandao.manhuoda.com/bug-view-8000.html?tid=0nj582b2 + * @param inventoryAdjustmentRecordDO + * @return: java.lang.Boolean + * @author: lianzj + * @time: 2024-07-18 14:58:50 + */ + @Transactional + public Boolean inventoryFrozenForAll(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) { + InventoryAdjustmentRecordDO inventoryAdjustmentRecord = new InventoryAdjustmentRecordDO(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + inventoryAdjustmentRecord.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inventoryAdjustmentRecord.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inventoryAdjustmentRecord.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inventoryAdjustmentRecord.setCreateBy(loginUser.getUserid()); + inventoryAdjustmentRecord.setCreateByName(loginUser.getUsername()); + inventoryAdjustmentRecord.setCreateTime(new Date()); + MaterialInventory materialInventory = materialInventoryService.getById(inventoryAdjustmentRecordDO.getMaterialInventoryId()); + inventoryAdjustmentRecord.setAdjustType(3L); + if (ObjectUtil.isNotNull(materialInventory)) { + BeanUtils.copyProperties(materialInventory, inventoryAdjustmentRecord); + inventoryAdjustmentRecord.setInventoryBeforeQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationBeforeQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeBeforeQuantity(materialInventory.getFreezeQuantity()); + MaterialBaseInfo materialBaseInfo = materialBaseInfoService.getOne(new QueryWrapper().lambda() + .eq(MaterialBaseInfo::getMaterialBaseInfoId,materialInventory.getMaterialBaseInfoId()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(materialBaseInfo)) { + inventoryAdjustmentRecord.setMaterialCode(materialBaseInfo.getMaterialCode()); + inventoryAdjustmentRecord.setMaterialName(materialBaseInfo.getMaterialName()); + inventoryAdjustmentRecord.setBarCode(materialBaseInfo.getBarCode()); + inventoryAdjustmentRecord.setShipperId(materialBaseInfo.getShipperId()); + inventoryAdjustmentRecord.setShipperName(materialBaseInfo.getShipperName()); + } + //可用数量减,冻结数量加 + materialInventory.setAllocationQuantity(materialInventory.getInventoryQuantity().subtract(inventoryAdjustmentRecordDO.getAdjustQuantity())); + materialInventory.setFreezeQuantity(inventoryAdjustmentRecordDO.getAdjustQuantity()); + if (materialInventory.getAllocationQuantity().compareTo(BigDecimal.ZERO) < 0) { + throw new ServiceException("冻结可用数量不能小于0"); + } + inventoryAdjustmentRecord.setInventoryAfterQuantity(materialInventory.getInventoryQuantity()); + inventoryAdjustmentRecord.setAllocationAfterQuantity(materialInventory.getAllocationQuantity()); + inventoryAdjustmentRecord.setFreezeAfterQuantity(materialInventory.getFreezeQuantity()); + } else { + throw new ServiceException("根据物料库存id查询不到物料库存信息!"); + } + materialInventoryService.updateById(materialInventory); + return inventoryAdjustmentRecordService.insert(inventoryAdjustmentRecord); + } + + /** + * @description 生成库存调整追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param materialInventory + * @param adjustQuantity + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(MaterialInventory materialInventory, BigDecimal adjustQuantity){ + MaterialBaseInfo materialBaseInfo = materialBaseInfoService.getById(materialInventory.getMaterialBaseInfoId()); + if (ObjectUtil.isNull(materialInventory)){ + throw new ServiceException("物料基础信息不存在"); + } + //生成追溯记录 + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(materialInventory.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(materialInventory.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(materialInventory.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(materialBaseInfo.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(materialBaseInfo.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(materialBaseInfo.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(""); + inventoryStandingDetailDO.setWarehouseId(materialInventory.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(materialInventory.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(materialInventory.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(6); + inventoryStandingDetailDO.setMaterialQuantity(adjustQuantity); + inventoryStandingDetailService.batchInsert(Collections.singletonList(inventoryStandingDetailDO)); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/entity/InventoryAllocationRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/entity/InventoryAllocationRule.java new file mode 100644 index 000000000..e9a9feb26 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/entity/InventoryAllocationRule.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.inventoryAllocationRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存分配规则对象 inventory_allocation_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/facade/IInventoryAllocationRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/facade/IInventoryAllocationRuleService.java new file mode 100644 index 000000000..69c234ed7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/facade/IInventoryAllocationRuleService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.inventoryAllocationRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryAllocationRule.entity.InventoryAllocationRule; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; + +import java.util.List; + +/** + * 库存分配规则Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IInventoryAllocationRuleService extends IService +{ + /** + * 分页查询库存分配规则列表 + */ + public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO); + + /** + * 新增库存分配规则 + */ + public Boolean insert(InventoryAllocationRuleDO inventoryAllocationRuleDO); + + /** + * 修改库存分配规则 + */ + public Boolean update(InventoryAllocationRuleDO inventoryAllocationRuleDO); + + /** + * 批量删除库存分配规则 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询库存分配规则 + */ + public InventoryAllocationRulePO getInfo(Long id); + + Long insertToId(InventoryAllocationRuleDO inventoryAllocationRuleDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/mapper/InventoryAllocationRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/mapper/InventoryAllocationRuleMapper.java new file mode 100644 index 000000000..14221daa6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/mapper/InventoryAllocationRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.inventoryAllocationRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryAllocationRule.entity.InventoryAllocationRule; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; + +import java.util.List; + +/** + * 库存分配规则Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface InventoryAllocationRuleMapper extends BaseMapper +{ + /** + * 查询库存分配规则列表 + */ + public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/persistence/InventoryAllocationRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/persistence/InventoryAllocationRuleImpl.java new file mode 100644 index 000000000..007137f4f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/persistence/InventoryAllocationRuleImpl.java @@ -0,0 +1,90 @@ +package com.mhd.wms.domain.inventoryAllocationRule.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryAllocationRule.entity.InventoryAllocationRule; +import com.mhd.wms.domain.inventoryAllocationRule.repository.facade.IInventoryAllocationRuleService; +import com.mhd.wms.domain.inventoryAllocationRule.repository.mapper.InventoryAllocationRuleMapper; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存分配规则Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class InventoryAllocationRuleImpl extends ServiceImpl implements IInventoryAllocationRuleService{ + @Autowired + private InventoryAllocationRuleMapper inventoryAllocationRuleMapper; + + /** + * 查询库存分配规则列表 + */ + @Override + public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO) + { + return inventoryAllocationRuleMapper.queryList(inventoryAllocationRuleDO); + } + + /** + * 新增库存分配规则 + */ + @Override + public Boolean insert(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + InventoryAllocationRule inventoryAllocationRule = new InventoryAllocationRule(); + BeanUtils.copyProperties(inventoryAllocationRuleDO,inventoryAllocationRule); + return this.save(inventoryAllocationRule); + } + + /** + * 修改库存分配规则 + */ + @Override + public Boolean update(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + InventoryAllocationRule inventoryAllocationRule = new InventoryAllocationRule(); + BeanUtils.copyProperties(inventoryAllocationRuleDO,inventoryAllocationRule); + return this.updateById(inventoryAllocationRule); + } + + /** + * 批量删除库存分配规则 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + InventoryAllocationRule inventoryAllocationRule = new InventoryAllocationRule(); + inventoryAllocationRule.setId(id); + inventoryAllocationRule.setDelFlag(2); + list.add(inventoryAllocationRule); + } + return this.updateBatchById(list); + } + + /** + * 修改库存分配规则 + */ + @Override + public InventoryAllocationRulePO getInfo(Long id) { + InventoryAllocationRule inventoryAllocationRule = this.getById(id); + InventoryAllocationRulePO inventoryAllocationRulePO = new InventoryAllocationRulePO(); + BeanUtils.copyProperties(inventoryAllocationRule,inventoryAllocationRulePO); + return inventoryAllocationRulePO; + } + + @Override + public Long insertToId(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + InventoryAllocationRule inventoryAllocationRule = new InventoryAllocationRule(); + BeanUtils.copyProperties(inventoryAllocationRuleDO,inventoryAllocationRule); + this.save(inventoryAllocationRule); + + return inventoryAllocationRule.getId(); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/po/InventoryAllocationRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/po/InventoryAllocationRulePO.java new file mode 100644 index 000000000..ec6d273f6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/po/InventoryAllocationRulePO.java @@ -0,0 +1,61 @@ +package com.mhd.wms.domain.inventoryAllocationRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存分配规则对象 inventory_allocation_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "库存分配规则对象", description = "库存分配规则响应对象") +public class InventoryAllocationRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("库存分配规则明细") + private List inventoryAllocationRuleDetailList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/todo/InventoryAllocationRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/todo/InventoryAllocationRuleDO.java new file mode 100644 index 000000000..167f1f0c6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/repository/todo/InventoryAllocationRuleDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.inventoryAllocationRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存分配规则对象 inventory_allocation_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "库存分配规则明细") + private List inventoryAllocationRuleDetailDOS; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/service/InventoryAllocationRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/service/InventoryAllocationRuleDomainService.java new file mode 100644 index 000000000..ea6a18943 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRule/service/InventoryAllocationRuleDomainService.java @@ -0,0 +1,68 @@ +package com.mhd.wms.domain.inventoryAllocationRule.service; + +import com.mhd.wms.domain.inventoryAllocationRule.repository.facade.IInventoryAllocationRuleService; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存分配规则 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryAllocationRuleDomainService { + + @Autowired + private IInventoryAllocationRuleService inventoryAllocationRuleService; + + + /** + * 分页查询库存分配规则列表 + */ + public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + return inventoryAllocationRuleService.queryList(inventoryAllocationRuleDO); + } + + + /** + * 新增库存分配规则 + */ + public Boolean insert(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + + return inventoryAllocationRuleService.insert(inventoryAllocationRuleDO); + } + + /** + * 修改库存分配规则 + */ + public Boolean update(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + return inventoryAllocationRuleService.update(inventoryAllocationRuleDO); + } + + /** + * 批量删除库存分配规则 + */ + public Boolean delete(Long[] ids) { + return inventoryAllocationRuleService.delete(ids); + } + + /** + * 获取库存分配规则详细信息 + */ + public InventoryAllocationRulePO getInfo(Long id) + { + return inventoryAllocationRuleService.getInfo(id); + } + + + public Long insertToId(InventoryAllocationRuleDO inventoryAllocationRuleDO) { + return inventoryAllocationRuleService.insertToId(inventoryAllocationRuleDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/entity/InventoryAllocationRuleDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/entity/InventoryAllocationRuleDetail.java new file mode 100644 index 000000000..a9da9835e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/entity/InventoryAllocationRuleDetail.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存规则分配明细对象 inventory_allocation_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRuleDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存分配表ID") + @Excel(name = "库存分配表ID") + private Long inventoryAllocationRuleId; + + @ApiModelProperty("库位种类ID") + @Excel(name = "库位种类ID") + private String locationKindId; + + @ApiModelProperty("库位种类") + @Excel(name = "库位种类") + private String locationKind; + + @ApiModelProperty("库位分类ID") + @Excel(name = "库位分类ID") + private String locationTypeId; + + @ApiModelProperty("库位分类") + @Excel(name = "库位分类") + private String locationType; + + @ApiModelProperty("混放策略ID") + @Excel(name = "混放策略ID") + private String mixingSlgId; + + @ApiModelProperty("混放策略") + @Excel(name = "混放策略") + private String mixingSlg; + + @ApiModelProperty("物料状态ID") + @Excel(name = "物料状态ID") + private String materialStatusId; + + @ApiModelProperty("物料状态") + @Excel(name = "物料状态") + private String materialStatus; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/facade/IInventoryAllocationRuleDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/facade/IInventoryAllocationRuleDetailService.java new file mode 100644 index 000000000..cfc1fe38c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/facade/IInventoryAllocationRuleDetailService.java @@ -0,0 +1,51 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.entity.InventoryAllocationRuleDetail; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; + +import java.util.List; + +/** + * 库存规则分配明细Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IInventoryAllocationRuleDetailService extends IService +{ + /** + * 分页查询库存规则分配明细列表 + */ + public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO); + + /** + * 新增库存规则分配明细 + */ + public Boolean insert(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO); + + /** + * 修改库存规则分配明细 + */ + public Boolean update(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO); + + /** + * 批量删除库存规则分配明细 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询库存规则分配明细 + */ + public InventoryAllocationRuleDetailPO getInfo(Long id); + + Long[] selectIdsByInventoryAllocationRuleId(Long id); + + Boolean batchInsert(List inventoryAllocationRuleDetailDOS); + + List selectListByInventoryAllocationRuleId(Long id); + + Long[] selectIdsByInventoryAllocationRuleIds(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/mapper/InventoryAllocationRuleDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/mapper/InventoryAllocationRuleDetailMapper.java new file mode 100644 index 000000000..58251e7ab --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/mapper/InventoryAllocationRuleDetailMapper.java @@ -0,0 +1,30 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.entity.InventoryAllocationRuleDetail; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 库存规则分配明细Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface InventoryAllocationRuleDetailMapper extends BaseMapper +{ + /** + * 查询库存规则分配明细列表 + */ + public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO); + + @Select("select id from inventory_allocation_rule_detail where del_flag = 1 and inventory_allocation_rule_id = #{id}") + Long[] selectIdsByInventoryAllocationRuleId(Long id); + + List selectListByInventoryAllocationRuleId(Long id); + + Long[] selectIdsByInventoryAllocationRuleIds(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/persistence/InventoryAllocationRuleDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/persistence/InventoryAllocationRuleDetailImpl.java new file mode 100644 index 000000000..4aba9ba8e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/persistence/InventoryAllocationRuleDetailImpl.java @@ -0,0 +1,107 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.entity.InventoryAllocationRuleDetail; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.facade.IInventoryAllocationRuleDetailService; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.mapper.InventoryAllocationRuleDetailMapper; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 库存规则分配明细Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class InventoryAllocationRuleDetailImpl extends ServiceImpl implements IInventoryAllocationRuleDetailService { + @Autowired + private InventoryAllocationRuleDetailMapper inventoryAllocationRuleDetailMapper; + + /** + * 查询库存规则分配明细列表 + */ + @Override + public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) + { + return inventoryAllocationRuleDetailMapper.queryList(inventoryAllocationRuleDetailDO); + } + + /** + * 新增库存规则分配明细 + */ + @Override + public Boolean insert(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + InventoryAllocationRuleDetail inventoryAllocationRuleDetail = new InventoryAllocationRuleDetail(); + BeanUtils.copyProperties(inventoryAllocationRuleDetailDO,inventoryAllocationRuleDetail); + return this.save(inventoryAllocationRuleDetail); + } + + /** + * 修改库存规则分配明细 + */ + @Override + public Boolean update(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + InventoryAllocationRuleDetail inventoryAllocationRuleDetail = new InventoryAllocationRuleDetail(); + BeanUtils.copyProperties(inventoryAllocationRuleDetailDO,inventoryAllocationRuleDetail); + return this.updateById(inventoryAllocationRuleDetail); + } + + /** + * 批量删除库存规则分配明细 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + InventoryAllocationRuleDetail inventoryAllocationRuleDetail = new InventoryAllocationRuleDetail(); + inventoryAllocationRuleDetail.setId(id); + inventoryAllocationRuleDetail.setDelFlag(2); + list.add(inventoryAllocationRuleDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改库存规则分配明细 + */ + @Override + public InventoryAllocationRuleDetailPO getInfo(Long id) { + InventoryAllocationRuleDetail inventoryAllocationRuleDetail = this.getById(id); + InventoryAllocationRuleDetailPO inventoryAllocationRuleDetailPO = new InventoryAllocationRuleDetailPO(); + BeanUtils.copyProperties(inventoryAllocationRuleDetail,inventoryAllocationRuleDetailPO); + return inventoryAllocationRuleDetailPO; + } + + @Override + public Long[] selectIdsByInventoryAllocationRuleId(Long id) { + return inventoryAllocationRuleDetailMapper.selectIdsByInventoryAllocationRuleId(id); + } + + @Override + public Boolean batchInsert(List inventoryAllocationRuleDetailDOS) { + List inventoryAllocationRuleDetails = inventoryAllocationRuleDetailDOS.stream().map(inventoryAllocationRuleDetailDO -> { + InventoryAllocationRuleDetail inventoryAllocationRuleDetail = new InventoryAllocationRuleDetail(); + BeanUtils.copyProperties(inventoryAllocationRuleDetailDO, inventoryAllocationRuleDetail); + return inventoryAllocationRuleDetail; + }).collect(Collectors.toList()); + return this.saveBatch(inventoryAllocationRuleDetails); + } + + @Override + public List selectListByInventoryAllocationRuleId(Long id) { + return inventoryAllocationRuleDetailMapper.selectListByInventoryAllocationRuleId(id); + } + + @Override + public Long[] selectIdsByInventoryAllocationRuleIds(Long[] ids) { + return inventoryAllocationRuleDetailMapper.selectIdsByInventoryAllocationRuleIds(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/po/InventoryAllocationRuleDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/po/InventoryAllocationRuleDetailPO.java new file mode 100644 index 000000000..e11bd8be9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/po/InventoryAllocationRuleDetailPO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存规则分配明细对象 inventory_allocation_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "库存规则分配明细对象", description = "库存规则分配明细响应对象") +public class InventoryAllocationRuleDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存分配表ID") + @Excel(name = "库存分配表ID") + private Long inventoryAllocationRuleId; + + @ApiModelProperty("库位种类ID") + @Excel(name = "库位种类ID") + private String locationKindId; + + @ApiModelProperty("库位种类") + @Excel(name = "库位种类") + private String locationKind; + + @ApiModelProperty("库位分类ID") + @Excel(name = "库位分类ID") + private String locationTypeId; + + @ApiModelProperty("库位分类") + @Excel(name = "库位分类") + private String locationType; + + @ApiModelProperty("混放策略ID") + @Excel(name = "混放策略ID") + private String mixingSlgId; + + @ApiModelProperty("混放策略") + @Excel(name = "混放策略") + private String mixingSlg; + + @ApiModelProperty("物料状态ID") + @Excel(name = "物料状态ID") + private String materialStatusId; + + @ApiModelProperty("物料状态") + @Excel(name = "物料状态") + private String materialStatus; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/todo/InventoryAllocationRuleDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/todo/InventoryAllocationRuleDetailDO.java new file mode 100644 index 000000000..53a92f9e1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/repository/todo/InventoryAllocationRuleDetailDO.java @@ -0,0 +1,82 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存规则分配明细对象 inventory_allocation_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRuleDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存分配表ID") + @Excel(name = "库存分配表ID") + private Long inventoryAllocationRuleId; + + @ApiModelProperty("库位种类ID") + @Excel(name = "库位种类ID") + private String locationKindId; + + @ApiModelProperty("库位种类") + @Excel(name = "库位种类") + private String locationKind; + + @ApiModelProperty("库位分类ID") + @Excel(name = "库位分类ID") + private String locationTypeId; + + @ApiModelProperty("库位分类") + @Excel(name = "库位分类") + private String locationType; + + @ApiModelProperty("混放策略ID") + @Excel(name = "混放策略ID") + private String mixingSlgId; + + @ApiModelProperty("混放策略") + @Excel(name = "混放策略") + private String mixingSlg; + + @ApiModelProperty("物料状态ID") + @Excel(name = "物料状态ID") + private String materialStatusId; + + @ApiModelProperty("物料状态") + @Excel(name = "物料状态") + private String materialStatus; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/service/InventoryAllocationRuleDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/service/InventoryAllocationRuleDetailDomainService.java new file mode 100644 index 000000000..bd2d94664 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryAllocationRuleDetail/service/InventoryAllocationRuleDetailDomainService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.inventoryAllocationRuleDetail.service; + +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.facade.IInventoryAllocationRuleDetailService; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存规则分配明细 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryAllocationRuleDetailDomainService { + + @Autowired + private IInventoryAllocationRuleDetailService inventoryAllocationRuleDetailService; + + + /** + * 分页查询库存规则分配明细列表 + */ + public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + return inventoryAllocationRuleDetailService.queryList(inventoryAllocationRuleDetailDO); + } + + + /** + * 新增库存规则分配明细 + */ + public Boolean insert(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + + return inventoryAllocationRuleDetailService.insert(inventoryAllocationRuleDetailDO); + } + + /** + * 修改库存规则分配明细 + */ + public Boolean update(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) { + return inventoryAllocationRuleDetailService.update(inventoryAllocationRuleDetailDO); + } + + /** + * 批量删除库存规则分配明细 + */ + public Boolean delete(Long[] ids) { + return inventoryAllocationRuleDetailService.delete(ids); + } + + /** + * 获取库存规则分配明细详细信息 + */ + public InventoryAllocationRuleDetailPO getInfo(Long id) + { + return inventoryAllocationRuleDetailService.getInfo(id); + } + + + public Long[] selectIdsByInventoryAllocationRuleId(Long id) { + return inventoryAllocationRuleDetailService.selectIdsByInventoryAllocationRuleId(id); + } + + public Boolean batchInsert(List inventoryAllocationRuleDetailDOS) { + return inventoryAllocationRuleDetailService.batchInsert(inventoryAllocationRuleDetailDOS); + } + + public List selectListByInventoryAllocationRuleId(Long id) { + return inventoryAllocationRuleDetailService.selectListByInventoryAllocationRuleId(id); + + } + + public Long[] selectIdsByInventoryAllocationRuleIds(Long[] ids) { + return inventoryAllocationRuleDetailService.selectIdsByInventoryAllocationRuleIds(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/entity/InventoryStandingDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/entity/InventoryStandingDetail.java new file mode 100644 index 000000000..93b396f83 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/entity/InventoryStandingDetail.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.inventoryStandingDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存台账追溯详情对象 inventory_standing_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InventoryStandingDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + @TableId(type = IdType.AUTO) + private Long inventoryStandingDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String materialBarCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/facade/IInventoryStandingDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/facade/IInventoryStandingDetailService.java new file mode 100644 index 000000000..0bab5ca44 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/facade/IInventoryStandingDetailService.java @@ -0,0 +1,54 @@ +package com.mhd.wms.domain.inventoryStandingDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryStandingDetail.entity.InventoryStandingDetail; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; + +import java.util.List; + +/** + * 库存台账追溯详情Service接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface IInventoryStandingDetailService extends IService +{ + /** + * 分页查询库存台账追溯详情列表 + */ + public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO); + + /** + * 批量新增库存台账追溯详情 + */ + public Boolean batchInsert(List inventoryStandingDetailDOList); + + /** + * 批量删除库存台账追溯详情 + */ + public Boolean delete(Long[] inventoryStandingDetailIds); + + + /** + * 查询库存台账追溯详情 + */ + public InventoryStandingDetailPO getInfo(Long inventoryStandingDetailId); + + /** + * 分页查询入库日报表列表 + */ + public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO); + /** + * 分页查询出库日报表列表 + */ + public List queryOutboundReportList(WarehousingReportDO warehousingReportDO); + + /** + * 分页查询出进出存合并报表列表 + */ + public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/mapper/InventoryStandingDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/mapper/InventoryStandingDetailMapper.java new file mode 100644 index 000000000..8837d04e6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/mapper/InventoryStandingDetailMapper.java @@ -0,0 +1,38 @@ +package com.mhd.wms.domain.inventoryStandingDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryStandingDetail.entity.InventoryStandingDetail; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; + +import java.util.List; + +/** + * 库存台账追溯详情Mapper接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface InventoryStandingDetailMapper extends BaseMapper +{ + /** + * 查询库存台账追溯详情列表 + */ + public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO); + + + /** + * 分页查询入库日报表列表 + */ + public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO); + + /** + * 分页查询出库日报表列表 + */ + public List queryOutboundReportList(WarehousingReportDO warehousingReportDO);/** + * 分页查询出进出存合并报表列表 + */ + public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/persistence/InventoryStandingDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/persistence/InventoryStandingDetailImpl.java new file mode 100644 index 000000000..1c11aef23 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/persistence/InventoryStandingDetailImpl.java @@ -0,0 +1,109 @@ +package com.mhd.wms.domain.inventoryStandingDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingDetail.entity.InventoryStandingDetail; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.mapper.InventoryStandingDetailMapper; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 库存台账追溯详情Service业务层处理 + * + * @author gen + * @date 2024-07-13 + */ +@Service +public class InventoryStandingDetailImpl extends ServiceImpl implements IInventoryStandingDetailService { + @Autowired + private InventoryStandingDetailMapper inventoryStandingDetailMapper; + + /** + * 查询库存台账追溯详情列表 + */ + @Override + public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO) + { + return inventoryStandingDetailMapper.queryList(inventoryStandingDetailDO); + } + + /** + * 新增库存台账追溯详情 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List inventoryStandingDetailDOList) { + //生成追溯记录 + List inventoryStandingDetailList = new ArrayList<>(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + for (InventoryStandingDetailDO inventoryStandingDetailDO : inventoryStandingDetailDOList){ + InventoryStandingDetail inventoryStandingDetail = new InventoryStandingDetail(); + BeanUtils.copyProperties(inventoryStandingDetailDO, inventoryStandingDetail); + inventoryStandingDetail.setCreateBy(loginUser.getUserid()); + inventoryStandingDetail.setCreateByName(loginUser.getUsername()); + inventoryStandingDetail.setCreateTime(new Date()); + inventoryStandingDetailList.add(inventoryStandingDetail); + } + return saveBatch(inventoryStandingDetailList); + } + + + + /** + * 批量删除库存台账追溯详情 + */ + @Override + public Boolean delete(Long[] inventoryStandingDetailIds ) { + List list = new ArrayList<>(); + for (Long id : inventoryStandingDetailIds) { + InventoryStandingDetail inventoryStandingDetail = new InventoryStandingDetail(); + inventoryStandingDetail.setInventoryStandingDetailId(id); + inventoryStandingDetail.setDelFlag(2); + list.add(inventoryStandingDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改库存台账追溯详情 + */ + @Override + public InventoryStandingDetailPO getInfo(Long inventoryStandingDetailId) { + InventoryStandingDetail inventoryStandingDetail = this.getById(inventoryStandingDetailId); + InventoryStandingDetailPO inventoryStandingDetailPO = new InventoryStandingDetailPO(); + BeanUtils.copyProperties(inventoryStandingDetail,inventoryStandingDetailPO); + return inventoryStandingDetailPO; + } + /** + * 分页查询入库日报表列表 + */ + @Override + public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailMapper.queryWarehousingReportList(warehousingReportDO); + } + + /** + * 分页查询出库日报表列表 + */ + @Override + public List queryOutboundReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailMapper.queryOutboundReportList(warehousingReportDO); + } + + @Override + public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailMapper.queryWarehousingAndOutboundReportList(warehousingReportDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/po/InventoryStandingDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/po/InventoryStandingDetailPO.java new file mode 100644 index 000000000..9dd6f504c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/po/InventoryStandingDetailPO.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.inventoryStandingDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存台账追溯详情对象 inventory_standing_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +@ApiModel(value = "库存台账追溯详情对象", description = "库存台账追溯详情响应对象") +public class InventoryStandingDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String materialBarCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/todo/InventoryStandingDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/todo/InventoryStandingDetailDO.java new file mode 100644 index 000000000..83d3becfe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/repository/todo/InventoryStandingDetailDO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.inventoryStandingDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 库存台账追溯详情对象 inventory_standing_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InventoryStandingDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String materialBarCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/service/InventoryStandingDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/service/InventoryStandingDetailDomainService.java new file mode 100644 index 000000000..59cb3db48 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingDetail/service/InventoryStandingDetailDomainService.java @@ -0,0 +1,68 @@ +package com.mhd.wms.domain.inventoryStandingDetail.service; + +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存台账追溯详情 + * + * @author gen + * @date 2024-07-13 + */ +@Service +@Slf4j +public class InventoryStandingDetailDomainService { + + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + + + /** + * 分页查询库存台账追溯详情列表 + */ + public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO) { + return inventoryStandingDetailService.queryList(inventoryStandingDetailDO); + } + + /** + * 批量删除库存台账追溯详情 + */ + public Boolean delete(Long[] inventoryStandingDetailIds) { + return inventoryStandingDetailService.delete(inventoryStandingDetailIds); + } + + /** + * 获取库存台账追溯详情详细信息 + */ + public InventoryStandingDetailPO getInfo(Long inventoryStandingDetailId) + { + return inventoryStandingDetailService.getInfo(inventoryStandingDetailId); + } + + /** + * 分页查询入库日报表列表 + */ + public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailService.queryWarehousingReportList(warehousingReportDO); + } + /** + * 分页查询出库日报表列表 + */ + public List queryOutboundReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailService.queryOutboundReportList(warehousingReportDO); + } + /** + * 分页查询出进出存合并报表列表 + */ + public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO) { + return inventoryStandingDetailService.queryWarehousingAndOutboundReportList(warehousingReportDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/entity/InventoryStandingReport.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/entity/InventoryStandingReport.java new file mode 100644 index 000000000..de9a4d58a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/entity/InventoryStandingReport.java @@ -0,0 +1,85 @@ +package com.mhd.wms.domain.inventoryStandingReport.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存台账报对象 inventory_standing_report + * + * @author gen + * @date 2024-07-12 + */ + +@Data +public class InventoryStandingReport extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + @TableId(type = IdType.AUTO) + private Long inventoryStandingId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/facade/IInventoryStandingReportService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/facade/IInventoryStandingReportService.java new file mode 100644 index 000000000..7e7350272 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/facade/IInventoryStandingReportService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryStandingReport.entity.InventoryStandingReport; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; + +import java.util.List; + +/** + * 库存台账报Service接口 + * + * @author gen + * @date 2024-07-12 + */ +public interface IInventoryStandingReportService extends IService +{ + /** + * 分页查询库存台账报列表 + */ + public List queryList(InventoryStandingReportDO inventoryStandingReportDO); + + /** + * 新增库存台账报 + */ + public Boolean insert(InventoryStandingReportDO inventoryStandingReportDO); + + /** + * 修改库存台账报 + */ + public Boolean update(InventoryStandingReportDO inventoryStandingReportDO); + + /** + * 批量删除库存台账报 + */ + public Boolean delete(Long[] inventoryStandingIds); + + + /** + * 查询库存台账报 + */ + public InventoryStandingReportPO getInfo(Long inventoryStandingId); + + public InventoryStandingReportPO getInventoryStandingInfo(InventoryStandingReportDO inventoryStandingReportDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/mapper/InventoryStandingReportMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/mapper/InventoryStandingReportMapper.java new file mode 100644 index 000000000..b01597524 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/mapper/InventoryStandingReportMapper.java @@ -0,0 +1,29 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryStandingReport.entity.InventoryStandingReport; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingDetailReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; + +import java.util.List; + +/** + * 库存台账报Mapper接口 + * + * @author gen + * @date 2024-07-12 + */ +public interface InventoryStandingReportMapper extends BaseMapper +{ + /** + * 查询库存台账报列表 + */ + public List queryList(InventoryStandingReportDO inventoryStandingReportDO); + + public List queryListForRealTime(InventoryStandingReportDO inventoryStandingReportDO); + public List getInfoForReceipt(InventoryStandingReportDO inventoryStandingReportDO); + public List getInfoForShelf(InventoryStandingReportDO inventoryStandingReportDO); + public List getInfoForPick(InventoryStandingReportDO inventoryStandingReportDO); + public List getInfoForReCheck(InventoryStandingReportDO inventoryStandingReportDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/persistence/InventoryStandingReportImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/persistence/InventoryStandingReportImpl.java new file mode 100644 index 000000000..86e6b51f2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/persistence/InventoryStandingReportImpl.java @@ -0,0 +1,147 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingReport.entity.InventoryStandingReport; +import com.mhd.wms.domain.inventoryStandingReport.repository.facade.IInventoryStandingReportService; +import com.mhd.wms.domain.inventoryStandingReport.repository.mapper.InventoryStandingReportMapper; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingDetailReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.mapper.ReceiptMaterialDetailMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 库存台账报Service业务层处理 + * + * @author gen + * @date 2024-07-12 + */ +@Service +public class InventoryStandingReportImpl extends ServiceImpl implements IInventoryStandingReportService{ + @Autowired + private InventoryStandingReportMapper inventoryStandingReportMapper; +// @Autowired +// private InventoryStandingDetailMapper inventoryStandingDetailMapper; + @Autowired + private ReceiptMaterialDetailMapper receiptMaterialDetailMapper; + + /** + * 查询库存台账报列表 + */ + @Override + public List queryList(InventoryStandingReportDO inventoryStandingReportDO) + { + return inventoryStandingReportMapper.queryListForRealTime(inventoryStandingReportDO); + } + + /** + * 新增库存台账报 + */ + @Override + public Boolean insert(InventoryStandingReportDO inventoryStandingReportDO) { + boolean flag = true; + LoginUser loginUser = SecurityUtils.getLoginUser(); + + InventoryStandingReport inventoryStandingReport = inventoryStandingReportMapper.selectOne(new QueryWrapper().lambda() + .eq(InventoryStandingReport::getMaterialCode,inventoryStandingReportDO.getMaterialCode()) + .eq(InventoryStandingReport::getShipperId,inventoryStandingReportDO.getShipperId()) + .eq(InventoryStandingReport::getWarehouseId,inventoryStandingReportDO.getWarehouseId()) + .eq(InventoryStandingReport::getNodeStatus,inventoryStandingReportDO.getNodeStatus()) + .eq(BaseVOEntity::getDelFlag,1)); + if (inventoryStandingReport == null) { + inventoryStandingReport = new InventoryStandingReport(); + BeanUtils.copyProperties(inventoryStandingReportDO,inventoryStandingReport); + inventoryStandingReport.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inventoryStandingReport.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inventoryStandingReport.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inventoryStandingReport.setCreateBy(loginUser.getUserid()); + inventoryStandingReport.setCreateByName(loginUser.getUsername()); + inventoryStandingReport.setCreateTime(new Date()); + flag = this.save(inventoryStandingReport); + } else { + inventoryStandingReport.setMaterialQuantity(inventoryStandingReport.getMaterialQuantity().add(inventoryStandingReportDO.getMaterialQuantity())); + flag = this.updateById(inventoryStandingReport); + } +// //保存追溯明细信息 +// InventoryStandingDetail inventoryStandingDetail = new InventoryStandingDetail(); +// BeanUtils.copyProperties(inventoryStandingReportDO,inventoryStandingDetail); +// inventoryStandingDetail.setTrackingNumber(inventoryStandingReport.getInventoryStandingId()); +// inventoryStandingDetailMapper.insert(inventoryStandingDetail); + return flag; + } + + /** + * 修改库存台账报 + */ + @Override + public Boolean update(InventoryStandingReportDO inventoryStandingReportDO) { + InventoryStandingReport inventoryStandingReport = new InventoryStandingReport(); + BeanUtils.copyProperties(inventoryStandingReportDO,inventoryStandingReport); + return this.updateById(inventoryStandingReport); + } + + /** + * 批量删除库存台账报 + */ + @Override + public Boolean delete(Long[] inventoryStandingIds ) { + List list = new ArrayList<>(); + for (Long id : inventoryStandingIds) { + InventoryStandingReport inventoryStandingReport = new InventoryStandingReport(); + inventoryStandingReport.setInventoryStandingId(id); + inventoryStandingReport.setDelFlag(2); + list.add(inventoryStandingReport); + } + return this.updateBatchById(list); + } + + /** + * 修改库存台账报 + */ + @Override + public InventoryStandingReportPO getInfo(Long inventoryStandingId) { + InventoryStandingReport inventoryStandingReport = this.getById(inventoryStandingId); + InventoryStandingReportPO inventoryStandingReportPO = new InventoryStandingReportPO(); + BeanUtils.copyProperties(inventoryStandingReport,inventoryStandingReportPO); + return inventoryStandingReportPO; + } + + @Override + public InventoryStandingReportPO getInventoryStandingInfo(InventoryStandingReportDO inventoryStandingReportDO) { + InventoryStandingReportPO inventoryStandingReportPO = new InventoryStandingReportPO(); + BeanUtils.copyProperties(inventoryStandingReportDO,inventoryStandingReportPO); + List inventoryStandingDetailReportPOs = new ArrayList<>(); + switch (inventoryStandingReportDO.getNodeStatus()) { + case 1: + inventoryStandingDetailReportPOs = inventoryStandingReportMapper.getInfoForReceipt(inventoryStandingReportDO); + break; + case 2: + // 上架操作 + inventoryStandingDetailReportPOs = inventoryStandingReportMapper.getInfoForShelf(inventoryStandingReportDO); + break; + case 3: + // 拣货 + inventoryStandingDetailReportPOs = inventoryStandingReportMapper.getInfoForPick(inventoryStandingReportDO); + break; + case 4: + // 复核 + inventoryStandingDetailReportPOs = inventoryStandingReportMapper.getInfoForReCheck(inventoryStandingReportDO); + break; + default: + // 当节点状态不是我们关心的状态时,设置标志变量为 false 来结束循环 + throw new RuntimeException("节点状态不正确"); + } + inventoryStandingReportPO.setInventoryStandingDetailReportPOs(inventoryStandingDetailReportPOs); + return inventoryStandingReportPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingDetailReportPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingDetailReportPO.java new file mode 100644 index 000000000..ec7110ca8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingDetailReportPO.java @@ -0,0 +1,37 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "库存台账报表明细汇总", description = "库存台账报表明细汇总") +public class InventoryStandingDetailReportPO extends BaseVOEntity +{ + + @ApiModelProperty("业务单号") + @Excel(name = "业务单号") + private String businessNo; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal quantity; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String sourceNo; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal workQuantity; + + @ApiModelProperty("是否异常") + @Excel(name = "是否异常") + private String abnormal; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingReportPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingReportPO.java new file mode 100644 index 000000000..f2c3b3378 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/po/InventoryStandingReportPO.java @@ -0,0 +1,80 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 库存台账报对象 inventory_standing_report + * + * @author gen + * @date 2024-07-12 + */ + +@Data +@ApiModel(value = "库存台账报对象", description = "库存台账报响应对象") +public class InventoryStandingReportPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + + @ApiModelProperty(name = "明细集合") + private List inventoryStandingDetailReportPOs; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/todo/InventoryStandingReportDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/todo/InventoryStandingReportDO.java new file mode 100644 index 000000000..15d4694c5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/repository/todo/InventoryStandingReportDO.java @@ -0,0 +1,87 @@ +package com.mhd.wms.domain.inventoryStandingReport.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 库存台账报对象 inventory_standing_report + * + * @author gen + * @date 2024-07-12 + */ + +@Data +public class InventoryStandingReportDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/service/InventoryStandingReportDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/service/InventoryStandingReportDomainService.java new file mode 100644 index 000000000..d6fd07d18 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryStandingReport/service/InventoryStandingReportDomainService.java @@ -0,0 +1,69 @@ +package com.mhd.wms.domain.inventoryStandingReport.service; + +import com.mhd.wms.domain.inventoryStandingReport.repository.facade.IInventoryStandingReportService; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存台账报 + * + * @author gen + * @date 2024-07-12 + */ +@Service +@Slf4j +public class InventoryStandingReportDomainService { + + @Autowired + private IInventoryStandingReportService inventoryStandingReportService; + + + /** + * 分页查询库存台账报列表 + */ + public List queryList(InventoryStandingReportDO inventoryStandingReportDO) { + return inventoryStandingReportService.queryList(inventoryStandingReportDO); + } + + + /** + * 新增库存台账报 + */ + public Boolean insert(InventoryStandingReportDO inventoryStandingReportDO) { + + return inventoryStandingReportService.insert(inventoryStandingReportDO); + } + + /** + * 修改库存台账报 + */ + public Boolean update(InventoryStandingReportDO inventoryStandingReportDO) { + return inventoryStandingReportService.update(inventoryStandingReportDO); + } + + /** + * 批量删除库存台账报 + */ + public Boolean delete(Long[] inventoryStandingIds) { + return inventoryStandingReportService.delete(inventoryStandingIds); + } + + /** + * 获取库存台账报详细信息 + */ + public InventoryStandingReportPO getInfo(Long inventoryStandingId) + { + return inventoryStandingReportService.getInfo(inventoryStandingId); + } + + public InventoryStandingReportPO getInventoryStandingInfo(InventoryStandingReportDO inventoryStandingReportDO) + { + return inventoryStandingReportService.getInventoryStandingInfo(inventoryStandingReportDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/entity/InventoryTurnoverRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/entity/InventoryTurnoverRule.java new file mode 100644 index 000000000..0e6adb9d1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/entity/InventoryTurnoverRule.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存周转规则对象 inventory_turnover_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/facade/IInventoryTurnoverRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/facade/IInventoryTurnoverRuleService.java new file mode 100644 index 000000000..3e97ce093 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/facade/IInventoryTurnoverRuleService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryTurnoverRule.entity.InventoryTurnoverRule; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; + +import java.util.List; + +/** + * 库存周转规则Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IInventoryTurnoverRuleService extends IService +{ + /** + * 分页查询库存周转规则列表 + */ + public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO); + + /** + * 新增库存周转规则 + */ + public Boolean insert(InventoryTurnoverRuleDO inventoryTurnoverRuleDO); + + /** + * 修改库存周转规则 + */ + public Boolean update(InventoryTurnoverRuleDO inventoryTurnoverRuleDO); + + /** + * 批量删除库存周转规则 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询库存周转规则 + */ + public InventoryTurnoverRulePO getInfo(Long id); + + Long insertData(InventoryTurnoverRuleDO inventoryTurnoverRuleDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/mapper/InventoryTurnoverRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/mapper/InventoryTurnoverRuleMapper.java new file mode 100644 index 000000000..d06c87161 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/mapper/InventoryTurnoverRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryTurnoverRule.entity.InventoryTurnoverRule; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; + +import java.util.List; + +/** + * 库存周转规则Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface InventoryTurnoverRuleMapper extends BaseMapper +{ + /** + * 查询库存周转规则列表 + */ + public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/persistence/InventoryTurnoverRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/persistence/InventoryTurnoverRuleImpl.java new file mode 100644 index 000000000..34c306f55 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/persistence/InventoryTurnoverRuleImpl.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryTurnoverRule.entity.InventoryTurnoverRule; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.facade.IInventoryTurnoverRuleService; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.mapper.InventoryTurnoverRuleMapper; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存周转规则Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class InventoryTurnoverRuleImpl extends ServiceImpl implements IInventoryTurnoverRuleService { + @Autowired + private InventoryTurnoverRuleMapper inventoryTurnoverRuleMapper; + + /** + * 查询库存周转规则列表 + */ + @Override + public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) + { + return inventoryTurnoverRuleMapper.queryList(inventoryTurnoverRuleDO); + } + + /** + * 新增库存周转规则 + */ + @Override + public Boolean insert(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + InventoryTurnoverRule inventoryTurnoverRule = new InventoryTurnoverRule(); + BeanUtils.copyProperties(inventoryTurnoverRuleDO,inventoryTurnoverRule); + return this.save(inventoryTurnoverRule); + } + + /** + * 修改库存周转规则 + */ + @Override + public Boolean update(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + InventoryTurnoverRule inventoryTurnoverRule = new InventoryTurnoverRule(); + BeanUtils.copyProperties(inventoryTurnoverRuleDO,inventoryTurnoverRule); + return this.updateById(inventoryTurnoverRule); + } + + /** + * 批量删除库存周转规则 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + InventoryTurnoverRule inventoryTurnoverRule = new InventoryTurnoverRule(); + inventoryTurnoverRule.setId(id); + inventoryTurnoverRule.setDelFlag(2); + list.add(inventoryTurnoverRule); + } + return this.updateBatchById(list); + } + + /** + * 修改库存周转规则 + */ + @Override + public InventoryTurnoverRulePO getInfo(Long id) { + InventoryTurnoverRule inventoryTurnoverRule = this.getById(id); + InventoryTurnoverRulePO inventoryTurnoverRulePO = new InventoryTurnoverRulePO(); + BeanUtils.copyProperties(inventoryTurnoverRule,inventoryTurnoverRulePO); + return inventoryTurnoverRulePO; + } + + @Override + public Long insertData(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + InventoryTurnoverRule inventoryTurnoverRule = new InventoryTurnoverRule(); + BeanUtils.copyProperties(inventoryTurnoverRuleDO,inventoryTurnoverRule); + this.save(inventoryTurnoverRule); + return inventoryTurnoverRule.getId(); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/po/InventoryTurnoverRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/po/InventoryTurnoverRulePO.java new file mode 100644 index 000000000..1374ee1fd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/po/InventoryTurnoverRulePO.java @@ -0,0 +1,61 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存周转规则对象 inventory_turnover_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "库存周转规则对象", description = "库存周转规则响应对象") +public class InventoryTurnoverRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("周转规则明细") + private List inventoryTurnoverRuleDetailList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/todo/InventoryTurnoverRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/todo/InventoryTurnoverRuleDO.java new file mode 100644 index 000000000..973799310 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/repository/todo/InventoryTurnoverRuleDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存周转规则对象 inventory_turnover_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "库存周转规则明细") + private List inventoryTurnoverRuleDetailDOS; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/service/InventoryTurnoverRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/service/InventoryTurnoverRuleDomainService.java new file mode 100644 index 000000000..960cd831a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRule/service/InventoryTurnoverRuleDomainService.java @@ -0,0 +1,68 @@ +package com.mhd.wms.domain.inventoryTurnoverRule.service; + +import com.mhd.wms.domain.inventoryTurnoverRule.repository.facade.IInventoryTurnoverRuleService; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存周转规则 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryTurnoverRuleDomainService { + + @Autowired + private IInventoryTurnoverRuleService inventoryTurnoverRuleService; + + + /** + * 分页查询库存周转规则列表 + */ + public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + return inventoryTurnoverRuleService.queryList(inventoryTurnoverRuleDO); + } + + + /** + * 新增库存周转规则 + */ + public Boolean insert(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + + return inventoryTurnoverRuleService.insert(inventoryTurnoverRuleDO); + } + + /** + * 修改库存周转规则 + */ + public Boolean update(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + return inventoryTurnoverRuleService.update(inventoryTurnoverRuleDO); + } + + /** + * 批量删除库存周转规则 + */ + public Boolean delete(Long[] ids) { + return inventoryTurnoverRuleService.delete(ids); + } + + /** + * 获取库存周转规则详细信息 + */ + public InventoryTurnoverRulePO getInfo(Long id) + { + return inventoryTurnoverRuleService.getInfo(id); + } + + + public Long insertData(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) { + return inventoryTurnoverRuleService.insertData(inventoryTurnoverRuleDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/entity/InventoryTurnoverRuleDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/entity/InventoryTurnoverRuleDetail.java new file mode 100644 index 000000000..19957124d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/entity/InventoryTurnoverRuleDetail.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存周转规则明细对象 inventory_turnover_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRuleDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存周转规则ID") + @Excel(name = "库存周转规则ID") + private Long inventoryTurnoverRuleId; + + @ApiModelProperty("批次属性ID") + @Excel(name = "批次属性ID") + private String batchAttributeId; + + @ApiModelProperty("批次属性") + @Excel(name = "批次属性") + private String batchAttribute; + + @ApiModelProperty("排序方式ID;0升序1降序") + @Excel(name = "排序方式ID;0升序1降序") + private Integer sortord; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/facade/IInventoryTurnoverRuleDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/facade/IInventoryTurnoverRuleDetailService.java new file mode 100644 index 000000000..d871cfce2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/facade/IInventoryTurnoverRuleDetailService.java @@ -0,0 +1,51 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.entity.InventoryTurnoverRuleDetail; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; + +import java.util.List; + +/** + * 库存周转规则明细Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IInventoryTurnoverRuleDetailService extends IService +{ + /** + * 分页查询库存周转规则明细列表 + */ + public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO); + + /** + * 新增库存周转规则明细 + */ + public Boolean insert(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO); + + /** + * 修改库存周转规则明细 + */ + public Boolean update(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO); + + /** + * 批量删除库存周转规则明细 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询库存周转规则明细 + */ + public InventoryTurnoverRuleDetailPO getInfo(Long id); + + Long[] selectIdsByInventoryTurnoverRuleId(Long inventoryTurnoverRuleId); + + Boolean batchInsert(List inventoryTurnoverRuleDetailDOS); + + List selectListByInventoryTurnoverRuleId(Long id); + + Long[] selectListByInventoryTurnoverRuleIds(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/mapper/InventoryTurnoverRuleDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/mapper/InventoryTurnoverRuleDetailMapper.java new file mode 100644 index 000000000..24997f28b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/mapper/InventoryTurnoverRuleDetailMapper.java @@ -0,0 +1,28 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.entity.InventoryTurnoverRuleDetail; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; + +import java.util.List; + +/** + * 库存周转规则明细Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface InventoryTurnoverRuleDetailMapper extends BaseMapper +{ + /** + * 查询库存周转规则明细列表 + */ + public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO); + + Long[] selectIdsByInventoryTurnoverRuleId(Long inventoryTurnoverRuleId); + + List selectListByInventoryTurnoverRuleId(Long id); + + Long[] selectListByInventoryTurnoverRuleIds(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/persistence/InventoryTurnoverRuleDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/persistence/InventoryTurnoverRuleDetailImpl.java new file mode 100644 index 000000000..079cc4335 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/persistence/InventoryTurnoverRuleDetailImpl.java @@ -0,0 +1,109 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.entity.InventoryTurnoverRuleDetail; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.facade.IInventoryTurnoverRuleDetailService; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.mapper.InventoryTurnoverRuleDetailMapper; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 库存周转规则明细Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class InventoryTurnoverRuleDetailImpl extends ServiceImpl implements IInventoryTurnoverRuleDetailService { + @Autowired + private InventoryTurnoverRuleDetailMapper inventoryTurnoverRuleDetailMapper; + + /** + * 查询库存周转规则明细列表 + */ + @Override + public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) + { + return inventoryTurnoverRuleDetailMapper.queryList(inventoryTurnoverRuleDetailDO); + } + + /** + * 新增库存周转规则明细 + */ + @Override + public Boolean insert(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + InventoryTurnoverRuleDetail inventoryTurnoverRuleDetail = new InventoryTurnoverRuleDetail(); + BeanUtils.copyProperties(inventoryTurnoverRuleDetailDO,inventoryTurnoverRuleDetail); + return this.save(inventoryTurnoverRuleDetail); + } + + /** + * 修改库存周转规则明细 + */ + @Override + public Boolean update(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + InventoryTurnoverRuleDetail inventoryTurnoverRuleDetail = new InventoryTurnoverRuleDetail(); + BeanUtils.copyProperties(inventoryTurnoverRuleDetailDO,inventoryTurnoverRuleDetail); + return this.updateById(inventoryTurnoverRuleDetail); + } + + /** + * 批量删除库存周转规则明细 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + InventoryTurnoverRuleDetail inventoryTurnoverRuleDetail = new InventoryTurnoverRuleDetail(); + inventoryTurnoverRuleDetail.setId(id); + inventoryTurnoverRuleDetail.setDelFlag(2); + list.add(inventoryTurnoverRuleDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改库存周转规则明细 + */ + @Override + public InventoryTurnoverRuleDetailPO getInfo(Long id) { + InventoryTurnoverRuleDetail inventoryTurnoverRuleDetail = this.getById(id); + InventoryTurnoverRuleDetailPO inventoryTurnoverRuleDetailPO = new InventoryTurnoverRuleDetailPO(); + BeanUtils.copyProperties(inventoryTurnoverRuleDetail,inventoryTurnoverRuleDetailPO); + return inventoryTurnoverRuleDetailPO; + } + + @Override + public Long[] selectIdsByInventoryTurnoverRuleId(Long inventoryTurnoverRuleId) { + return inventoryTurnoverRuleDetailMapper.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleId); + } + + @Override + public Boolean batchInsert(List inventoryTurnoverRuleDetailDOS) { + + List inventoryTurnoverRuleDetails = inventoryTurnoverRuleDetailDOS.stream().map(inventoryTurnoverRuleDetailDO -> { + InventoryTurnoverRuleDetail inventoryTurnoverRuleDetail = new InventoryTurnoverRuleDetail(); + BeanUtils.copyProperties(inventoryTurnoverRuleDetailDO, inventoryTurnoverRuleDetail); + return inventoryTurnoverRuleDetail; + }).collect(Collectors.toList()); + + return this.saveBatch(inventoryTurnoverRuleDetails); + } + + @Override + public List selectListByInventoryTurnoverRuleId(Long id) { + return inventoryTurnoverRuleDetailMapper.selectListByInventoryTurnoverRuleId(id); + } + + @Override + public Long[] selectListByInventoryTurnoverRuleIds(Long[] ids) { + return inventoryTurnoverRuleDetailMapper.selectListByInventoryTurnoverRuleIds(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/po/InventoryTurnoverRuleDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/po/InventoryTurnoverRuleDetailPO.java new file mode 100644 index 000000000..3ae4cfcae --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/po/InventoryTurnoverRuleDetailPO.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 库存周转规则明细对象 inventory_turnover_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "库存周转规则明细对象", description = "库存周转规则明细响应对象") +public class InventoryTurnoverRuleDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存周转规则ID") + @Excel(name = "库存周转规则ID") + private Long inventoryTurnoverRuleId; + + @ApiModelProperty("批次属性ID") + @Excel(name = "批次属性ID") + private String batchAttributeId; + + @ApiModelProperty("批次属性") + @Excel(name = "批次属性") + private String batchAttribute; + + @ApiModelProperty("排序方式ID;0升序1降序") + @Excel(name = "排序方式ID;0升序1降序") + private Integer sortord; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/todo/InventoryTurnoverRuleDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/todo/InventoryTurnoverRuleDetailDO.java new file mode 100644 index 000000000..6ebe50871 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/repository/todo/InventoryTurnoverRuleDetailDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 库存周转规则明细对象 inventory_turnover_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRuleDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存周转规则ID") + @Excel(name = "库存周转规则ID") + private Long inventoryTurnoverRuleId; + + @ApiModelProperty("批次属性ID") + @Excel(name = "批次属性ID") + private String batchAttributeId; + + @ApiModelProperty("批次属性") + @Excel(name = "批次属性") + private String batchAttribute; + + @ApiModelProperty("排序方式ID;0升序1降序") + @Excel(name = "排序方式ID;0升序1降序") + private Integer sortord; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/service/InventoryTurnoverRuleDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/service/InventoryTurnoverRuleDetailDomainService.java new file mode 100644 index 000000000..32f4736e6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryTurnoverRuleDetail/service/InventoryTurnoverRuleDetailDomainService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.inventoryTurnoverRuleDetail.service; + +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.facade.IInventoryTurnoverRuleDetailService; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存周转规则明细 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class InventoryTurnoverRuleDetailDomainService { + + @Autowired + private IInventoryTurnoverRuleDetailService inventoryTurnoverRuleDetailService; + + + /** + * 分页查询库存周转规则明细列表 + */ + public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + return inventoryTurnoverRuleDetailService.queryList(inventoryTurnoverRuleDetailDO); + } + + + /** + * 新增库存周转规则明细 + */ + public Boolean insert(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + + return inventoryTurnoverRuleDetailService.insert(inventoryTurnoverRuleDetailDO); + } + + /** + * 修改库存周转规则明细 + */ + public Boolean update(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) { + return inventoryTurnoverRuleDetailService.update(inventoryTurnoverRuleDetailDO); + } + + /** + * 批量删除库存周转规则明细 + */ + public Boolean delete(Long[] ids) { + return inventoryTurnoverRuleDetailService.delete(ids); + } + + /** + * 获取库存周转规则明细详细信息 + */ + public InventoryTurnoverRuleDetailPO getInfo(Long id) + { + return inventoryTurnoverRuleDetailService.getInfo(id); + } + + + public Long[] selectIdsByInventoryTurnoverRuleId(Long inventoryTurnoverRuleId) { + return inventoryTurnoverRuleDetailService.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleId); + } + + public Boolean batchInsert(List inventoryTurnoverRuleDetailDOS) { + + return inventoryTurnoverRuleDetailService.batchInsert(inventoryTurnoverRuleDetailDOS); + } + + public List selectListByInventoryTurnoverRuleId(Long id) { + return inventoryTurnoverRuleDetailService.selectListByInventoryTurnoverRuleId(id); + } + + public Long[] selectIdsByInventoryTurnoverRuleIds(Long[] ids) { + return inventoryTurnoverRuleDetailService.selectListByInventoryTurnoverRuleIds(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/entity/InventoryWarningAnalyze.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/entity/InventoryWarningAnalyze.java new file mode 100644 index 000000000..f98f4fb2b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/entity/InventoryWarningAnalyze.java @@ -0,0 +1,160 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 库存预警分析对象 inventory_warning_analyze + * + * @author gen + * @date 2024-07-24 + */ + +@Data +public class InventoryWarningAnalyze extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存预警分析id") + @TableId(type = IdType.AUTO) + private Long inventoryWarningAnalyzeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitQuantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("预警单号") + @Excel(name = "预警单号") + private String warningAnalyzeNumber; + + @ApiModelProperty("预警类型(1:库存不足 2:库存超限)") + @Excel(name = "预警类型(1:库存不足 2:库存超限)") + private Integer warningAnalyzeType; + + @ApiModelProperty("库存标准预警数") + @Excel(name = "库存标准预警数") + private BigDecimal warningStandardQuantity; + + @ApiModelProperty("预警时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "预警时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date warningTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/facade/IInventoryWarningAnalyzeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/facade/IInventoryWarningAnalyzeService.java new file mode 100644 index 000000000..d6160ae9c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/facade/IInventoryWarningAnalyzeService.java @@ -0,0 +1,42 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; + +import java.util.List; + +/** + * 库存预警分析Service接口 + * + * @author gen + * @date 2024-07-24 + */ +public interface IInventoryWarningAnalyzeService extends IService { + /** + * 分页查询库存预警分析列表 + */ + public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO); + + /** + * 新增库存预警分析 + */ + public Boolean insert(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO); + + /** + * 修改库存预警分析 + */ + public Boolean update(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO); + + /** + * 批量删除库存预警分析 + */ + public Boolean delete(Long[] inventoryWarningAnalyzeIds); + + + /** + * 查询库存预警分析 + */ + public InventoryWarningAnalyzePO getInfo(Long inventoryWarningAnalyzeId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/mapper/InventoryWarningAnalyzeMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/mapper/InventoryWarningAnalyzeMapper.java new file mode 100644 index 000000000..6112600bd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/mapper/InventoryWarningAnalyzeMapper.java @@ -0,0 +1,22 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; + +import java.util.List; + +/** + * 库存预警分析Mapper接口 + * + * @author gen + * @date 2024-07-24 + */ +public interface InventoryWarningAnalyzeMapper extends BaseMapper { + /** + * 查询库存预警分析列表 + */ + public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/persistence/InventoryWarningAnalyzeImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/persistence/InventoryWarningAnalyzeImpl.java new file mode 100644 index 000000000..d477db835 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/persistence/InventoryWarningAnalyzeImpl.java @@ -0,0 +1,80 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.facade.IInventoryWarningAnalyzeService; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.mapper.InventoryWarningAnalyzeMapper; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存预警分析Service业务层处理 + * + * @author gen + * @date 2024-07-24 + */ +@Service +public class InventoryWarningAnalyzeImpl extends ServiceImpl implements IInventoryWarningAnalyzeService { + @Autowired + private InventoryWarningAnalyzeMapper inventoryWarningAnalyzeMapper; + + /** + * 查询库存预警分析列表 + */ + @Override + public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + return inventoryWarningAnalyzeMapper.queryList(inventoryWarningAnalyzeDO); + } + + /** + * 新增库存预警分析 + */ + @Override + public Boolean insert(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + InventoryWarningAnalyze inventoryWarningAnalyze = new InventoryWarningAnalyze(); + BeanUtils.copyProperties(inventoryWarningAnalyzeDO, inventoryWarningAnalyze); + return this.save(inventoryWarningAnalyze); + } + + /** + * 修改库存预警分析 + */ + @Override + public Boolean update(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + InventoryWarningAnalyze inventoryWarningAnalyze = new InventoryWarningAnalyze(); + BeanUtils.copyProperties(inventoryWarningAnalyzeDO, inventoryWarningAnalyze); + return this.updateById(inventoryWarningAnalyze); + } + + /** + * 批量删除库存预警分析 + */ + @Override + public Boolean delete(Long[] inventoryWarningAnalyzeIds) { + List list = new ArrayList<>(); + for (Long id : inventoryWarningAnalyzeIds) { + InventoryWarningAnalyze inventoryWarningAnalyze = new InventoryWarningAnalyze(); + inventoryWarningAnalyze.setInventoryWarningAnalyzeId(id); + inventoryWarningAnalyze.setDelFlag(2); + list.add(inventoryWarningAnalyze); + } + return this.updateBatchById(list); + } + + /** + * 修改库存预警分析 + */ + @Override + public InventoryWarningAnalyzePO getInfo(Long inventoryWarningAnalyzeId) { + InventoryWarningAnalyze inventoryWarningAnalyze = this.getById(inventoryWarningAnalyzeId); + InventoryWarningAnalyzePO inventoryWarningAnalyzePO = new InventoryWarningAnalyzePO(); + BeanUtils.copyProperties(inventoryWarningAnalyze, inventoryWarningAnalyzePO); + return inventoryWarningAnalyzePO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/po/InventoryWarningAnalyzePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/po/InventoryWarningAnalyzePO.java new file mode 100644 index 000000000..1846ca73f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/po/InventoryWarningAnalyzePO.java @@ -0,0 +1,162 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 库存预警分析对象 inventory_warning_analyze + * + * @author gen + * @date 2024-07-24 + */ + +@Data +@ApiModel(value = "库存预警分析对象", description = "库存预警分析响应对象") +public class InventoryWarningAnalyzePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存预警分析id") + private Long inventoryWarningAnalyzeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitQuantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("预警单号") + @Excel(name = "预警单号") + private String warningAnalyzeNumber; + + @ApiModelProperty("预警类型(1:库存不足 2:库存超限)") + @Excel(name = "预警类型(1:库存不足 2:库存超限)") + private Integer warningAnalyzeType; + + @ApiModelProperty("库存标准预警数") + @Excel(name = "库存标准预警数") + private BigDecimal warningStandardQuantity; + + @ApiModelProperty("预警时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "预警时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date warningTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("预警位置") + @Excel(name = "预警位置") + private String earlyWarningPosition; + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/todo/InventoryWarningAnalyzeDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/todo/InventoryWarningAnalyzeDO.java new file mode 100644 index 000000000..4665cecd6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/repository/todo/InventoryWarningAnalyzeDO.java @@ -0,0 +1,162 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 库存预警分析对象 inventory_warning_analyze + * + * @author gen + * @date 2024-07-24 + */ + +@Data +public class InventoryWarningAnalyzeDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存预警分析id") + private Long inventoryWarningAnalyzeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitQuantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("预警单号") + @Excel(name = "预警单号") + private String warningAnalyzeNumber; + + @ApiModelProperty("预警类型(1:库存不足 2:库存超限)") + @Excel(name = "预警类型(1:库存不足 2:库存超限)") + private Integer warningAnalyzeType; + + @ApiModelProperty("库存标准预警数") + @Excel(name = "库存标准预警数") + private BigDecimal warningStandardQuantity; + + @ApiModelProperty("预警时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "预警时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date warningTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/service/InventoryWarningAnalyzeDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/service/InventoryWarningAnalyzeDomainService.java new file mode 100644 index 000000000..a6a1f1eed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inventoryWarningAnalyze/service/InventoryWarningAnalyzeDomainService.java @@ -0,0 +1,78 @@ +package com.mhd.wms.domain.inventoryWarningAnalyze.service; + +import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.facade.IInventoryWarningAnalyzeService; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; +import com.mhd.wms.domain.materialInventoryWarning.entity.MaterialInventoryWarning; +import com.mhd.wms.domain.materialInventoryWarning.repository.facade.IMaterialInventoryWarningService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 库存预警分析 + * + * @author gen + * @date 2024-07-24 + */ +@Service +@Slf4j +public class InventoryWarningAnalyzeDomainService { + + @Autowired + private IInventoryWarningAnalyzeService inventoryWarningAnalyzeService; + + private IMaterialInventoryWarningService iMaterialInventoryWarningService; + + + /** + * 分页查询库存预警分析列表 + */ + public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + return inventoryWarningAnalyzeService.queryList(inventoryWarningAnalyzeDO); + } + + + /** + * 新增库存预警分析 + */ + public Boolean insert(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + List list = iMaterialInventoryWarningService.list(); + return inventoryWarningAnalyzeService.insert(inventoryWarningAnalyzeDO); + } + + /** + * 修改库存预警分析 + */ + public Boolean update(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) { + return inventoryWarningAnalyzeService.update(inventoryWarningAnalyzeDO); + } + + /** + * 批量删除库存预警分析 + */ + public Boolean delete(Long[] inventoryWarningAnalyzeIds) { + return inventoryWarningAnalyzeService.delete(inventoryWarningAnalyzeIds); + } + + /** + * 获取库存预警分析详细信息 + */ + public InventoryWarningAnalyzePO getInfo(Long inventoryWarningAnalyzeId) { + return inventoryWarningAnalyzeService.getInfo(inventoryWarningAnalyzeId); + } + + public void batchInsert(List analyzeList) { + inventoryWarningAnalyzeService.saveBatch(analyzeList); + } + + /** + * 查找库存预警信息 + */ + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/entity/InvestigationManage.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/entity/InvestigationManage.java new file mode 100644 index 000000000..88df50f63 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/entity/InvestigationManage.java @@ -0,0 +1,145 @@ +package com.mhd.wms.domain.investigationManage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + + +/** + * 盘点管理对象 investigation_manage + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigationManage extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点管理id") + @TableId(type = IdType.AUTO) + private Long investigationManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("上次盘点单号") + @Excel(name = "上次盘点单号") + private String oldInvestigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long investigationManBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String investigationManName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("盘点审核备注") + @Excel(name = "盘点审核备注") + private String auditRemark; + + @ApiModelProperty("盘点审核人") + @Excel(name = "盘点审核人") + private Long auditBy; + + @ApiModelProperty("盘点审核人姓名") + @Excel(name = "盘点审核人姓名") + private String auditByName; + + @ApiModelProperty("盘点审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "盘点审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/facade/IInvestigationManageService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/facade/IInvestigationManageService.java new file mode 100644 index 000000000..83f4d7eec --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/facade/IInvestigationManageService.java @@ -0,0 +1,69 @@ +package com.mhd.wms.domain.investigationManage.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.investigationManage.entity.InvestigationManage; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; + +import java.util.List; + +/** + * 盘点管理Service接口 + * + * @author gen + * @date 2024-07-10 + */ +public interface IInvestigationManageService extends IService { + /** + * 分页查询盘点管理列表 + */ + public List queryList(InvestigationManageDO investigationManageDO); + + /** + * 新增盘点管理 + */ + public Boolean insert(InvestigationManageDO investigationManageDO); + + /** + * 修改盘点管理 + */ + public Boolean update(InvestigationManageDO investigationManageDO); + + /** + * 批量删除盘点管理 + */ + public Boolean delete(Long[] investigationManageIds); + + /** + * @description 根据id获取盘点单详情 + * @author ZhouGY + * @date 2024/7/20 14:29 + * @param investigationManageId + * @return InvestigationManagePO + */ + public InvestigationManagePO getInfoByInvestigationManageId(Long investigationManageId); + + + /** + * 查询盘点管理 + */ + public InvestigationManagePO getInfo(Long investigationManageId); + + /** + * 审核 + */ + public Boolean auditState(InvestigationManageDO investigationManageDO); + + public Boolean taskDistribution(InvestigationManageDO investigationManageDO); + + /** + * 盘点 + */ + public Boolean investigationCount(InvestigationManageDO investigationManageDO); + + /** + * 完成盘点 + */ + public Boolean finishInvestigation(Long investigationManageId); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/mapper/InvestigationManageMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/mapper/InvestigationManageMapper.java new file mode 100644 index 000000000..043455642 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/mapper/InvestigationManageMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.investigationManage.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.investigationManage.entity.InvestigationManage; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; + +import java.util.List; + +/** + * 盘点管理Mapper接口 + * + * @author gen + * @date 2024-07-10 + */ +public interface InvestigationManageMapper extends BaseMapper +{ + /** + * 查询盘点管理列表 + */ + public List queryList(InvestigationManageDO investigationManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java new file mode 100644 index 000000000..d2e5f66e5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/persistence/InvestigationManageImpl.java @@ -0,0 +1,452 @@ +package com.mhd.wms.domain.investigationManage.repository.persistence; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.UserServiceFeign; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.investigationManage.entity.InvestigationManage; +import com.mhd.wms.domain.investigationManage.repository.facade.IInvestigationManageService; +import com.mhd.wms.domain.investigationManage.repository.mapper.InvestigationManageMapper; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import com.mhd.wms.domain.investigetionManageDetail.repository.facade.IInvestigetionManageDetailService; +import com.mhd.wms.domain.investigetionManageDetail.repository.mapper.InvestigetionManageDetailMapper; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 盘点管理Service业务层处理 + * + * @author gen + * @date 2024-07-10 + */ +@Service +public class InvestigationManageImpl extends ServiceImpl implements IInvestigationManageService, IDeliveTaskTypeService { + @Autowired + private InvestigationManageMapper investigationManageMapper; + + @Autowired + private InvestigetionManageDetailMapper investigetionManageDetailMapper; + + @Autowired + private IInvestigetionManageDetailService investigetionManageDetailService; + + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + + @Autowired + private IDifferentManageService iDifferentManageService; + + @Resource + private UserServiceFeign userServiceFeign; + + @Resource + private SystemServiceFeign systemServiceFeign; + + /** + * 查询盘点管理列表 + */ + @Override + public List queryList(InvestigationManageDO investigationManageDO) { + return investigationManageMapper.queryList(investigationManageDO); + } + + /** + * 新增盘点管理 + */ + @Override + public Boolean insert(InvestigationManageDO investigationManageDO) { + InvestigationManage investigationManage = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManageDO), InvestigationManage.class); + investigationManage.setInvestigationNumber(panDian()); + investigationManage.setInvestigationFrequency(1); + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + List investigetionManageDetailList = investigationManage.getInvestigetionManageDetailList(); + if(CollectionUtil.isEmpty(investigetionManageDetailList)){ + throw new ServiceException("请选择盘点物料"); + } + //从盘点物料列表获取仓库编码 + String warehouseCode = investigetionManageDetailList.get(0).getWarehouseCode(); + String warehouseName = investigetionManageDetailList.get(0).getWarehouseName(); + investigationManageDO.setWarehouseCode(warehouseCode); + investigationManageDO.setWarehouseName(warehouseName); + investigetionManageDetailList.forEach(e -> { + e.setWarehouseCode(e.getWarehouseCode()); + e.setWarehouseId(e.getWarehouseId()); + e.setWarehouseName(e.getWarehouseName()); + e.setOrganizationId(userPo.getOrganizationId()); + e.setOrganizationName(userPo.getOrganizationName()); + e.setTopOrganizationId(userPo.getTopOrganizationId()); + e.setCreateByName(loginUser.getUsername()); + e.setCreateBy(loginUser.getUserid()); + e.setCreateTime(new Date()); + e.setUpdateByName(loginUser.getUsername()); + e.setUpdateBy(loginUser.getUserid()); + e.setUpdateTime(new Date()); + e.setInvestigationNumber(investigationManage.getInvestigationNumber()); + e.setInvestigationFrequency(1); + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + BeanUtils.copyProperties(e, investigetionManageDetailDO); + investigetionManageDetailService.insert(investigetionManageDetailDO); + }); + return this.save(investigationManage); + } + + /** + * 修改盘点管理 + */ + @Override + public Boolean update(InvestigationManageDO investigationManageDO) { + InvestigationManage investigationManage = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManageDO), InvestigationManage.class); + List investigetionManageDetailList = investigationManage.getInvestigetionManageDetailList(); + Long[] ids = new Long[investigetionManageDetailList.size()]; + for (int i = 0; i < investigetionManageDetailList.size(); i++) { + ids[i] = investigetionManageDetailList.get(i).getInvestigationManageDetailId(); + } + investigetionManageDetailService.delete(ids); + return this.updateById(investigationManage); + } + + /** + * 批量删除盘点管理 + */ + @Override + public Boolean delete(Long[] investigationManageIds) { + List list = new ArrayList<>(); + for (Long id : investigationManageIds) { + InvestigationManage investigationManage = new InvestigationManage(); + investigationManage.setInvestigationManageId(id); + investigationManage.setDelFlag(2); + list.add(investigationManage); + InvestigationManage investigationManage1 = investigationManageMapper.selectById(id); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(InvestigetionManageDetail::getInvestigationNumber, investigationManage1.getInvestigationNumber()); + List investigetionManageDetails = investigetionManageDetailMapper.selectList(lqw); + Long[] ids = new Long[investigetionManageDetails.size()]; + for (int i = 0; i < investigetionManageDetails.size(); i++) { + ids[i] = investigetionManageDetails.get(i).getInvestigationManageDetailId(); + } + investigetionManageDetailService.delete(ids); + } + return this.updateBatchById(list); + } + + /** + * @description 根据id获取盘点单详情 + * @author ZhouGY + * @date 2024/7/20 14:29 + * @param investigationManageId + * @return InvestigationManagePO + */ + @Override + public InvestigationManagePO getInfoByInvestigationManageId(Long investigationManageId) { + InvestigationManage investigationManage = this.getById(investigationManageId); + InvestigationManagePO investigationManagePO = new InvestigationManagePO(); + BeanUtils.copyProperties(investigationManage, investigationManagePO); + return investigationManagePO; + } + + /** + * 修改盘点管理 + */ + @Override + public InvestigationManagePO getInfo(Long investigationManageId) { + InvestigationManage investigationManage = this.getById(investigationManageId); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(InvestigetionManageDetail::getInvestigationNumber, investigationManage.getInvestigationNumber()); + List investigetionManageDetails = investigetionManageDetailMapper.selectList(lqw); + investigationManage.setInvestigetionManageDetailList(investigetionManageDetails); + InvestigationManagePO investigationManagePO = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManage), InvestigationManagePO.class); + return investigationManagePO; + } + + @Override + public Boolean auditState(InvestigationManageDO investigationManageDO) { + if (investigationManageDO.getAuditStatus() == 2) { + return false; + } + InvestigationManage investigationManage1 = investigationManageMapper.selectById(investigationManageDO.getInvestigationManageId()); + InvestigationManageDO investigationManageDO1 = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManage1), InvestigationManageDO.class); + investigationManageDO1.setAuditStatus(investigationManageDO.getAuditStatus()); + investigationManageDO1.setInvestigationStatus(2); + investigetionManageDetailMapper.updateCheck(investigationManageDO1); + investigetionManageDetailMapper.updateCheckDetail(investigationManageDO1); + LoginUser loginUser = SecurityUtils.getLoginUser(); + investigationManage1.setAuditStatus(investigationManageDO.getAuditStatus()); + investigationManageDO1.setAuditBy(loginUser.getUserid()); + investigationManageDO1.setAuditByName(loginUser.getUsername()); + investigationManageDO1.setAuditTime(new Date()); + InvestigationManage investigationManage = new InvestigationManage(); + BeanUtils.copyProperties(investigationManageDO1, investigationManage); + int i = investigationManageMapper.updateById(investigationManage); + return i > 0; + } + + @Override + public Boolean taskDistribution(InvestigationManageDO investigationManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + InvestigationManage investigationManage = new InvestigationManage(); + investigationManage.setTaskDistribution(1); + investigationManage.setTaskDistributionTime(new Date()); + investigationManage.setUpdateBy(loginUser.getUserid()); + investigationManage.setUpdateByName(loginUser.getUsername()); + investigationManage.setUpdateTime(new Date()); + int i = investigationManageMapper.update(investigationManage, new QueryWrapper().lambda() + .in(InvestigationManage::getInvestigationManageId, investigationManageDO.getInvestigationManageIds())); + return i > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean investigationCount(InvestigationManageDO investigationManageDO) { + InvestigationManage investigationManage = investigationManageMapper.selectById(investigationManageDO.getInvestigationManageId()); + if (investigationManage == null){ + throw new ServiceException("盘点单不存在"); + } + investigationManage.setInvestigationStatus(3); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List investigetionManageDetailList = investigetionManageDetailService.list(new QueryWrapper().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationManage.getInvestigationNumber())); + Map investigetionManageDetailMap = investigetionManageDetailList.stream().collect(Collectors.toMap(InvestigetionManageDetail::getInvestigationManageDetailId, Function.identity())); + List investigetionManageDetailListUpdate = new ArrayList<>(); + for (InvestigetionManageDetailDO investigetionManageDetailDO : investigationManageDO.getInvestigetionManageDetailList()) { + // 未盘点 跳过 + if (ObjectUtil.isNull(investigetionManageDetailDO.getInvestigationQuantity())) { + continue; + } + InvestigetionManageDetail investigetionManageDetailDb = investigetionManageDetailMap.get(investigetionManageDetailDO.getInvestigationManageDetailId()); + if (investigetionManageDetailDb == null){ + throw new ServiceException("盘点单物料明细不存在"); + } + BigDecimal investigationQuantity = investigetionManageDetailDO.getInvestigationQuantity(); + InvestigetionManageDetail investigetionManageDetailUpdate = new InvestigetionManageDetail(); + investigetionManageDetailUpdate.setInvestigationManageDetailId(investigetionManageDetailDb.getInvestigationManageDetailId()); + investigetionManageDetailUpdate.setInvestigationQuantity(investigationQuantity); + if (investigationQuantity.compareTo(investigetionManageDetailDb.getInventoryQuantity()) > 0) { + // 盘点数量 > 库存数量 : 1:盘盈 + investigetionManageDetailUpdate.setInvestigationResult(1); + investigetionManageDetailUpdate.setInvestigationStatus(3); + } else if (investigationQuantity.compareTo(investigetionManageDetailDb.getInventoryQuantity()) < 0) { + // 盘点数量 < 库存数量 : 2:盘亏 + investigetionManageDetailUpdate.setInvestigationResult(2); + investigetionManageDetailUpdate.setInvestigationStatus(3); + } else { + // 盘点数量 = 库存数量 : 3:正常 产生差异单 + investigetionManageDetailUpdate.setInvestigationResult(3); + investigetionManageDetailUpdate.setInvestigationStatus(4); + } + //取绝对值 + BigDecimal differentQuantity = investigetionManageDetailDb.getInventoryQuantity().subtract(investigationQuantity).abs(); + investigetionManageDetailUpdate.setDifferentQuantity(differentQuantity); + investigetionManageDetailUpdate.setUpdateBy(loginUser.getUserid()); + investigetionManageDetailUpdate.setUpdateByName(loginUser.getUsername()); + investigetionManageDetailUpdate.setUpdateTime(new Date()); + investigetionManageDetailListUpdate.add(investigetionManageDetailUpdate); + } + investigetionManageDetailService.updateBatchById(investigetionManageDetailListUpdate); + InvestigationManage investigationManageUpdate = new InvestigationManage(); + investigationManageUpdate.setInvestigationManageId(investigationManage.getInvestigationManageId()); + investigationManageUpdate.setInvestigationStatus(3); // 盘点中 + investigationManageUpdate.setUpdateBy(loginUser.getUserid()); + investigationManageUpdate.setUpdateByName(loginUser.getUsername()); + investigationManageUpdate.setUpdateTime(new Date()); + return updateById(investigationManage); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean finishInvestigation(Long investigationManageId) { + InvestigationManage investigationManage = this.getById(investigationManageId); + if (investigationManage == null){ + throw new ServiceException("盘点单不存在"); + } + if(4 == investigationManage.getInvestigationStatus()){ + throw new ServiceException("盘点单已完成盘点,请勿重复操作"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + //判断是否存在差异 + int count = investigetionManageDetailMapper.selectCount(new QueryWrapper().lambda() + .eq(InvestigetionManageDetail::getInvestigationNumber, investigationManage.getInvestigationNumber()) + .eq(InvestigetionManageDetail::getDelFlag, 1) + .ne(InvestigetionManageDetail::getInvestigationResult, 4)); + String differentNumber = null; + if (count > 0){ + //存在差异 生成差异单 + DifferentManageDO differentManage = new DifferentManageDO(); + differentManage.setOrganizationId(userPo.getOrganizationId()); + differentManage.setOperatorsName(userPo.getOrganizationName()); + differentManage.setTopOrganizationId(userPo.getTopOrganizationId()); + differentManage.setWarehouseId(investigationManage.getWarehouseId()); + differentManage.setWarehouseCode(investigationManage.getWarehouseCode()); + differentManage.setWarehouseName(investigationManage.getWarehouseName()); + differentNumber = chaYi(); + differentManage.setDifferentNumber(differentNumber); + differentManage.setInvestigationNumber(investigationManage.getInvestigationNumber()); + differentManage.setInvestigationStatus(2); + differentManage.setInvestigationRange(investigationManage.getInvestigationRange()); + differentManage.setInvestigationType(investigationManage.getInvestigationType()); + differentManage.setInvestigationMethod(investigationManage.getInvestigationMethod()); + differentManage.setInvestigationFrequency(2); + if (ObjectUtil.isNotNull(investigationManage.getInvestigationManBy())){ + investigationManParam(differentManage); + } + /*differentManage.setInvestigationManBy(); + differentManage.setInvestigationManName(investigationManage.getInvestigationManName());*/ + differentManage.setOperatorsBy(investigationManage.getOperatorsBy()); + differentManage.setOperatorsName(investigationManage.getOperatorsName()); + // 设置仓库信息 + if (ObjectUtil.isNotNull(investigationManage.getWarehouseId())){ + setWarehouseInfo(differentManage); + } + // 基础信息 + differentManage.setTopOrganizationId(userPo.getTopOrganizationId()); + differentManage.setOrganizationId(userPo.getOrganizationId()); + differentManage.setOrganizationName(userPo.getOrganizationName()); + differentManage.setCreateBy(loginUser.getUserid()); + differentManage.setCreateTime(new Date()); + differentManage.setCreateByName(loginUser.getUsername()); + differentManage.setUpdateBy(loginUser.getUserid()); + differentManage.setUpdateTime(new Date()); + differentManage.setUpdateByName(loginUser.getUsername()); + iDifferentManageService.insert(differentManage); + } + //生成盘点追溯记录 + genInventoryStandingDetail(investigationManage); + InvestigationManage investigationManageUpdate = new InvestigationManage(); + investigationManageUpdate.setInvestigationManageId(investigationManageId); + investigationManageUpdate.setInvestigationStatus(4); // 盘点完成 + investigationManageUpdate.setUpdateBy(loginUser.getUserid()); + investigationManageUpdate.setUpdateTime(new Date()); + investigationManageUpdate.setUpdateByName(loginUser.getUsername()); + investigationManageUpdate.setDifferentNumber(differentNumber); + return this.updateById(investigationManageUpdate); + } + + /** + * @description 生成盘点追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param investigationManage + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(InvestigationManage investigationManage){ + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + investigetionManageDetailDO.setInvestigationNumber(investigationManage.getInvestigationNumber()); + List investigetionManageDetailPOList = investigetionManageDetailService.queryList(investigetionManageDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + for (InvestigetionManageDetailPO investigetionManageDetailPO : investigetionManageDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(investigationManage.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(investigationManage.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(investigationManage.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(investigetionManageDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(investigetionManageDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(investigetionManageDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(investigetionManageDetailPO.getInvestigationNumber()); + inventoryStandingDetailDO.setWarehouseId(investigationManage.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(investigationManage.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(investigationManage.getWarehouseName()); + if (investigetionManageDetailPO.getInvestigationResult() == 1){ + inventoryStandingDetailDO.setNodeStatus(7); + }else if (investigetionManageDetailPO.getInvestigationResult() == 2){ + inventoryStandingDetailDO.setNodeStatus(8); + }else { + inventoryStandingDetailDO.setNodeStatus(9); + } + inventoryStandingDetailDO.setMaterialQuantity(investigetionManageDetailPO.getInvestigationQuantity()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + private void investigationManParam(DifferentManageDO differentManage){ + AjaxResult ajaxResult = userServiceFeign.getInfo(differentManage.getInvestigationManBy()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取监盘人员信息失败"); + } + UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + differentManage.setInvestigationManName(userPo.getUserName()); + } + + private void setWarehouseInfo(DifferentManageDO differentManage) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(differentManage.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + differentManage.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + differentManage.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + // 盘点单号生成规则 DB+时间(年月日)+几位数 + public String panDian() { + String panDian = "PD"; + LocalDateTime loc = LocalDateTime.now(); + panDian += loc.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + return panDian; + } + + // 盘点单号生成规则 CY+时间(年月日)+几位数 + public String chaYi() { + String chaYi = "CY"; + LocalDateTime loc = LocalDateTime.now(); + chaYi += loc.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + return chaYi; + } + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/8/1 14:03 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //标记收货单任务已下发 + return update(null, new UpdateWrapper().lambda() + .set(InvestigationManage::getOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(InvestigationManage::getOperatorsName, deliveTaskDO.getOperatorsName()) + .set(InvestigationManage::getUpdateBy, loginUser.getUserid()) + .set(InvestigationManage::getUpdateByName, loginUser.getUsername()) + .set(InvestigationManage::getUpdateTime, new Date()) + .eq(InvestigationManage::getInvestigationNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigationManagePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigationManagePO.java new file mode 100644 index 000000000..243b4274d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigationManagePO.java @@ -0,0 +1,158 @@ +package com.mhd.wms.domain.investigationManage.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + + +/** + * 盘点管理对象 investigation_manage + * + * @author gen + * @date 2024-07-10 + */ + +@Data +@ApiModel(value = "盘点管理对象", description = "盘点管理响应对象") +public class InvestigationManagePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点管理id") + private Long investigationManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("上次盘点单号") + @Excel(name = "上次盘点单号") + private String oldInvestigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long investigationManBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String investigationManName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("盘点审核备注") + @Excel(name = "盘点审核备注") + private String auditRemark; + + @ApiModelProperty("盘点审核人") + @Excel(name = "盘点审核人") + private Long auditBy; + + @ApiModelProperty("盘点审核人姓名") + @Excel(name = "盘点审核人姓名") + private String auditByName; + + @ApiModelProperty("盘点审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "盘点审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("已盘点物料种数") + @Excel(name = "已盘点物料种数") + private Integer investigationMaterialQuantity; + + @ApiModelProperty("按库位盘点详情") + private List investigetionStorageList; + + @ApiModelProperty("按物料盘点详情") + private List investigetionMaterialList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionMaterialPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionMaterialPO.java new file mode 100644 index 000000000..3aea9b528 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionMaterialPO.java @@ -0,0 +1,71 @@ +package com.mhd.wms.domain.investigationManage.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionMaterialPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("盈亏数量") + @Excel(name = "盈亏数量") + private BigDecimal profitLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + @Excel(name = "盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionStoragePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionStoragePO.java new file mode 100644 index 000000000..b2b4187fc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/po/InvestigetionStoragePO.java @@ -0,0 +1,83 @@ +package com.mhd.wms.domain.investigationManage.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionStoragePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("盘盈数量") + @Excel(name = "盘盈数量") + private BigDecimal investigationProfitQuantity; + + @ApiModelProperty("盘亏数量") + @Excel(name = "盘亏数量") + private BigDecimal investigationLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-已盘点") + @Excel(name = "盘点状态: 1-待盘点 2-已盘点") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigationManageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigationManageDO.java new file mode 100644 index 000000000..18a55e9c3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigationManageDO.java @@ -0,0 +1,176 @@ +package com.mhd.wms.domain.investigationManage.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + + +/** + * 盘点管理对象 investigation_manage + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigationManageDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点管理id") + private Long investigationManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("上次盘点单号") + @Excel(name = "上次盘点单号") + private String oldInvestigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long investigationManBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String investigationManName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("盘点审核备注") + @Excel(name = "盘点审核备注") + private String auditRemark; + + @ApiModelProperty("盘点审核人") + @Excel(name = "盘点审核人") + private Long auditBy; + + @ApiModelProperty("盘点审核人姓名") + @Excel(name = "盘点审核人姓名") + private String auditByName; + + @ApiModelProperty("盘点审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "盘点审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点管理id集合") + private List investigationManageIds; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; + + @ApiModelProperty("库位分组") + private List investigetionStorageList; + + @ApiModelProperty("物料分组") + private List investigetionMaterialList; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionMaterialDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionMaterialDO.java new file mode 100644 index 000000000..a3c35e4d0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionMaterialDO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.domain.investigationManage.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionMaterialDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盈亏数量") + @Excel(name = "盈亏数量") + private BigDecimal profitLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + @Excel(name = "盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionStorageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionStorageDO.java new file mode 100644 index 000000000..d4bb29f41 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/repository/todo/InvestigetionStorageDO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.investigationManage.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionStorageDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盘盈数量") + @Excel(name = "盘盈数量") + private BigDecimal investigationProfitQuantity; + + @ApiModelProperty("盘亏数量") + @Excel(name = "盘亏数量") + private BigDecimal investigationLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-已盘点") + @Excel(name = "盘点状态: 1-待盘点 2-已盘点") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/service/InvestigationManageDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/service/InvestigationManageDomainService.java new file mode 100644 index 000000000..dab64fe25 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigationManage/service/InvestigationManageDomainService.java @@ -0,0 +1,341 @@ +package com.mhd.wms.domain.investigationManage.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.investigationManage.repository.facade.IInvestigationManageService; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigetionMaterialPO; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigetionStoragePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.domain.investigetionManageDetail.repository.facade.IInvestigetionManageDetailService; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 盘点管理 + * + * @author gen + * @date 2024-07-10 + */ +@Service +@Slf4j +public class InvestigationManageDomainService { + + @Autowired + private IInvestigationManageService investigationManageService; + @Autowired + private IInvestigetionManageDetailService iInvestigetionManageDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + + + /** + * 分页查询盘点管理列表 + */ + public List queryList(InvestigationManageDO investigationManageDO) { + return investigationManageService.queryList(investigationManageDO); + } + + + /** + * 新增盘点管理 + */ + public Boolean insert(InvestigationManageDO investigationManageDO) { + return investigationManageService.insert(investigationManageDO); + } + + /** + * 修改盘点管理 + */ + public Boolean update(InvestigationManageDO investigationManageDO) { + return investigationManageService.update(investigationManageDO); + } + + /** + * 批量删除盘点管理 + */ + public Boolean delete(Long[] investigationManageIds) { + return investigationManageService.delete(investigationManageIds); + } + + /** + * 获取盘点管理详细信息 + */ + public InvestigationManagePO getInfo(Long investigationManageId) { + return investigationManageService.getInfo(investigationManageId); + } + + /** + * 审核 + */ + public Boolean auditState(InvestigationManageDO investigationManageDO) { + List ids = investigationManageDO.getInvestigationManageIds(); + InvestigationManagePO investigationManagePO = new InvestigationManagePO(); + Boolean b = false; + for (Long id : ids) { + investigationManagePO = investigationManageService.getInfo(id); + InvestigationManageDO bean = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManagePO), InvestigationManageDO.class); + bean.setAuditStatus(investigationManageDO.getAuditStatus()); + b = investigationManageService.auditState(bean); + } + return b; + } + + @Transactional(rollbackFor = Exception.class) + public Boolean taskDistribution(InvestigationManageDO investigationManageDO) { + InvestigationManageDO investigationManageDOQuery = new InvestigationManageDO(); + investigationManageDOQuery.setTaskDistribution(2); + investigationManageDOQuery.setInvestigationManageIds(investigationManageDO.getInvestigationManageIds()); + List investigationManagePOList = investigationManageService.queryList(investigationManageDOQuery); + if (CollectionUtils.isEmpty(investigationManagePOList)) { + throw new ServiceException("盘点单不存在或已下发,请重新选择"); + } + //盘点生成下发任务 + genDeliveTask(investigationManagePOList, investigationManageDO); + return investigationManageService.taskDistribution(investigationManageDO); + } + + public Boolean investigationCount(InvestigationManageDO investigationManageDO) { + return investigationManageService.investigationCount(investigationManageDO); + } + + /** + * 完成盘点 + */ + public Boolean finishInvestigation(Long investigationManageId) { + return investigationManageService.finishInvestigation(investigationManageId); + } + + /** + * 按库位盘点 获取盘点单详细信息 + */ + public InvestigationManagePO getInfoByStorageLocation(Long investigationManageId) { + InvestigationManagePO investigationManagePO = investigationManageService.getInfoByInvestigationManageId(investigationManageId); + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + investigetionManageDetailDO.setInvestigationNumber(investigationManagePO.getInvestigationNumber()); + List investigetionManageDetailPOList = iInvestigetionManageDetailService.queryList(investigetionManageDetailDO); + Map> investigetionManageDetailPOMap = investigetionManageDetailPOList.stream().collect(Collectors.groupingBy(InvestigetionManageDetailPO::getStorageLocationId)); + int totalInvestigetionMaterialQuantity = 0;//拣货单按库位分组 统计已拣货进度 + List investigetionStorageList = new ArrayList<>(); + for (Map.Entry> map : investigetionManageDetailPOMap.entrySet()) { + List investigationManageDetailPOListByMaterial = map.getValue(); + if (CollectionUtil.isEmpty(investigationManageDetailPOListByMaterial)) { + continue; + } + InvestigetionStoragePO investigetionStoragePO = new InvestigetionStoragePO(); + BeanUtils.copyProperties(investigationManageDetailPOListByMaterial.get(0), investigetionStoragePO); + BigDecimal inventoryQuantity = BigDecimal.ZERO;//库存数量 + BigDecimal investigationQuantity = BigDecimal.ZERO;//盘点数量 + BigDecimal investigationProfitQuantity = BigDecimal.ZERO;//盘盈数量 + BigDecimal investigationLossQuantity = BigDecimal.ZERO;//盘亏数量 + for (InvestigetionManageDetailPO investigetionManageDetailPO : investigationManageDetailPOListByMaterial) { + inventoryQuantity = inventoryQuantity.add(investigetionManageDetailPO.getInventoryQuantity()); + investigationQuantity = investigationQuantity.add(investigetionManageDetailPO.getInvestigationQuantity()); + if (1 == investigetionManageDetailPO.getInvestigationResult()) { + //盘盈 + investigationProfitQuantity = investigationProfitQuantity.add(investigetionManageDetailPO.getDifferentQuantity()); + } else if (2 == investigetionManageDetailPO.getInvestigationResult()) { + //盘亏 + investigationLossQuantity = investigationLossQuantity.add(investigetionManageDetailPO.getDifferentQuantity()); + } + } + investigetionStoragePO.setInventoryQuantity(inventoryQuantity); + investigetionStoragePO.setInvestigationQuantity(investigationQuantity); + investigetionStoragePO.setInvestigationProfitQuantity(investigationProfitQuantity); + investigetionStoragePO.setInvestigationLossQuantity(investigationLossQuantity); + //判断盘点数量是否大于0 + Integer investigationStatus = judgeInvestigationQuantityByStorageLocation(investigationQuantity); + investigetionStoragePO.setInvestigationStatus(investigationStatus); + investigetionStoragePO.setInvestigetionManageDetailList(investigationManageDetailPOListByMaterial); + investigetionStorageList.add(investigetionStoragePO); + if (investigationStatus > 1) { + totalInvestigetionMaterialQuantity += 1; + } + } + investigationManagePO.setInvestigationMaterialQuantity(totalInvestigetionMaterialQuantity); + investigationManagePO.setMaterialQuantity(investigetionStorageList.size()); + investigationManagePO.setInvestigetionStorageList(investigetionStorageList); + return investigationManagePO; + } + + /** + * 按物料盘点 获取盘点单详细信息 + */ + public InvestigationManagePO getInfoByMaterial(Long investigationManageId) { + InvestigationManagePO investigationManagePO = investigationManageService.getInfoByInvestigationManageId(investigationManageId); + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + investigetionManageDetailDO.setInvestigationNumber(investigationManagePO.getInvestigationNumber()); + List investigetionManageDetailPOList = iInvestigetionManageDetailService.queryList(investigetionManageDetailDO); + Map> investigetionManageDetailPOMap = investigetionManageDetailPOList.stream().collect(Collectors.groupingBy(InvestigetionManageDetailPO::getStorageLocationId)); + int totalInvestigetionMaterialQuantity = 0;//盘点单按物料分组 统计已拣货进度 + List investigetionMaterialList = new ArrayList<>(); + for (Map.Entry> map : investigetionManageDetailPOMap.entrySet()) { + List investigationManageDetailPOListByMaterial = map.getValue(); + if (CollectionUtil.isEmpty(investigationManageDetailPOListByMaterial)) { + continue; + } + InvestigetionMaterialPO investigetionMaterialPO = new InvestigetionMaterialPO(); + BeanUtils.copyProperties(investigationManageDetailPOListByMaterial.get(0), investigetionMaterialPO); + BigDecimal inventoryQuantity = BigDecimal.ZERO;//库存数量 + BigDecimal investigationQuantity = BigDecimal.ZERO;//盘点数量 + BigDecimal investigationProfitQuantity = BigDecimal.ZERO;//盘盈数量 + BigDecimal investigationLossQuantity = BigDecimal.ZERO;//盘亏数量 + for (InvestigetionManageDetailPO investigetionManageDetailPO : investigationManageDetailPOListByMaterial) { + inventoryQuantity = inventoryQuantity.add(investigetionManageDetailPO.getInventoryQuantity()); + investigationQuantity = investigationQuantity.add(investigetionManageDetailPO.getInvestigationQuantity()); + if (1 == investigetionManageDetailPO.getInvestigationResult()) { + //盘盈 + investigationProfitQuantity = investigationProfitQuantity.add(investigetionManageDetailPO.getDifferentQuantity()); + } else if (2 == investigetionManageDetailPO.getInvestigationResult()) { + //盘亏 + investigationLossQuantity = investigationLossQuantity.add(investigetionManageDetailPO.getDifferentQuantity()); + } + } + investigetionMaterialPO.setInventoryQuantity(inventoryQuantity); + investigetionMaterialPO.setInvestigationQuantity(investigationQuantity); + //判断盘点数量和计划数量的差异 确定盘点状态 1-待盘点 2-盘亏 3-正常 4-盘盈 + int investigationStatus = judgeInvestigationQuantityByMaterial(investigationQuantity, inventoryQuantity); + investigetionMaterialPO.setInvestigationStatus(investigationStatus); + if (investigationStatus == 2) { + investigetionMaterialPO.setProfitLossQuantity(investigationLossQuantity.subtract(investigationProfitQuantity)); + } else if (investigationStatus == 4) { + investigetionMaterialPO.setProfitLossQuantity(investigationProfitQuantity.subtract(investigationProfitQuantity)); + } else { + investigetionMaterialPO.setProfitLossQuantity(BigDecimal.ZERO); + } + investigetionMaterialPO.setInvestigetionManageDetailList(investigationManageDetailPOListByMaterial); + investigetionMaterialList.add(investigetionMaterialPO); + if (investigationStatus > 1) { + totalInvestigetionMaterialQuantity += 1; + } + } + investigationManagePO.setInvestigationMaterialQuantity(totalInvestigetionMaterialQuantity); + investigationManagePO.setMaterialQuantity(investigetionMaterialList.size()); + investigationManagePO.setInvestigetionMaterialList(investigetionMaterialList); + return investigationManagePO; + } + + /** + * @param investigationManageDO + * @return Boolean + * @description 按物料分组 盘点 + * @author ZhouGY + * @date 2024/7/20 15:11 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean investigationPickingByMaterial(InvestigationManageDO investigationManageDO) { + if (ObjectUtil.isNull(investigationManageDO.getUpdateTime())) { + throw new ServiceException("盘点单修改时间不能为空"); + } + InvestigationManagePO investigationManageDOPODb = investigationManageService.getInfoByInvestigationManageId(investigationManageDO.getInvestigationManageId()); + if (investigationManageDOPODb == null) { + throw new ServiceException("盘点单不存在"); + } + if (investigationManageDOPODb.getInvestigationStatus() > 3) { + throw new ServiceException("盘点单已完成拣货"); + } + if (investigationManageDOPODb.getUpdateTime().compareTo(investigationManageDO.getUpdateTime()) != 0) { + throw new ServiceException("盘点单【" + investigationManageDOPODb.getInvestigationNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + return investigationCount(investigationManageDO); + } + + /** + * @description 盘点生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param investigationManagePOList + * @param investigationManageDO + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(List investigationManagePOList, InvestigationManageDO investigationManageDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (InvestigationManagePO investigationManagePO : investigationManagePOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(investigationManagePO.getInvestigationNumber()); + deliveTaskDO.setWarehouseId(investigationManagePO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(investigationManagePO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(investigationManagePO.getWarehouseName()); + deliveTaskDO.setTaskType(6); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(investigationManageDO.getOperatorsBy()); + deliveTaskDO.setOperatorsName(investigationManageDO.getOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } + + /** + * @param investigationQuantity + * @return Integer + * @description 库位分组 根据盘点数量判断是否盘点 + * @author ZhouGY + * @date 2024/7/20 10:13 + */ + private Integer judgeInvestigationQuantityByStorageLocation(BigDecimal investigationQuantity) { + if (investigationQuantity.compareTo(BigDecimal.ZERO) == 0) { + //未盘点 + return 1; + } else { + //已盘点 + return 2; + } + } + + /** + * @param investigationQuantity + * @param quantity + * @return Integer + * @description 物料分组 根据盘点数量判断盘点状态 + * @author ZhouGY + * @date 2024/7/20 10:13 + */ + private Integer judgeInvestigationQuantityByMaterial(BigDecimal investigationQuantity, BigDecimal quantity) { + //1-待盘点 2-盘亏 3-正常 4-盘盈 + if (investigationQuantity.compareTo(BigDecimal.ZERO) == 0) { + //待盘点 + return 1; + } else if (investigationQuantity.compareTo(quantity) < 0) { + //盘亏 + return 2; + } else if (investigationQuantity.compareTo(quantity) == 0) { + //正常 + return 3; + } else { + //盘盈 + return 4; + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/entity/InvestigetionManageDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/entity/InvestigetionManageDetail.java new file mode 100644 index 000000000..93d2a97d8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/entity/InvestigetionManageDetail.java @@ -0,0 +1,210 @@ +package com.mhd.wms.domain.investigetionManageDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.util.FillableEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 盘点详情管理对象 investigetion_manage_detail + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigetionManageDetail extends BaseVOEntity implements FillableEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点详情id") + @TableId(type = IdType.AUTO) + private Long investigationManageDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("差异数量") + @Excel(name = "差异数量") + private BigDecimal differentQuantity; + + @ApiModelProperty("盘点结果:1.盘盈 2.盘亏 3.正常") + @Excel(name = "盘点结果:1.盘盈 2.盘亏 3.正常") + private Integer investigationResult; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/facade/IInvestigetionManageDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/facade/IInvestigetionManageDetailService.java new file mode 100644 index 000000000..68c2bc3bf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/facade/IInvestigetionManageDetailService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.investigetionManageDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; + +import java.util.List; + +/** + * 盘点详情管理Service接口 + * + * @author gen + * @date 2024-07-10 + */ +public interface IInvestigetionManageDetailService extends IService +{ + /** + * 分页查询盘点详情管理列表 + */ + public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO); + + /** + * 新增盘点详情管理 + */ + public Boolean insert(InvestigetionManageDetailDO investigetionManageDetailDO); + + /** + * 修改盘点详情管理 + */ + public Boolean update(InvestigetionManageDetailDO investigetionManageDetailDO); + + /** + * 批量删除盘点详情管理 + */ + public Boolean delete(Long[] investigationManageDetailIds); + + + /** + * 查询盘点详情管理 + */ + public InvestigetionManageDetailPO getInfo(Long investigationManageDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/mapper/InvestigetionManageDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/mapper/InvestigetionManageDetailMapper.java new file mode 100644 index 000000000..8abda8e8c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/mapper/InvestigetionManageDetailMapper.java @@ -0,0 +1,32 @@ +package com.mhd.wms.domain.investigetionManageDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; + +import java.util.List; + +/** + * 盘点详情管理Mapper接口 + * + * @author gen + * @date 2024-07-10 + */ +public interface InvestigetionManageDetailMapper extends BaseMapper +{ + /** + * 查询盘点详情管理列表 + */ + public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO); + + + /** + * 改变状态 + */ + public int updateCheck(InvestigationManageDO investigationManageDO); + + public int updateCheckDetail(InvestigationManageDO investigationManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/persistence/InvestigetionManageDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/persistence/InvestigetionManageDetailImpl.java new file mode 100644 index 000000000..dada40ee1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/persistence/InvestigetionManageDetailImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.investigetionManageDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail; +import com.mhd.wms.domain.investigetionManageDetail.repository.facade.IInvestigetionManageDetailService; +import com.mhd.wms.domain.investigetionManageDetail.repository.mapper.InvestigetionManageDetailMapper; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 盘点详情管理Service业务层处理 + * + * @author gen + * @date 2024-07-10 + */ +@Service +public class InvestigetionManageDetailImpl extends ServiceImpl implements IInvestigetionManageDetailService { + @Autowired + private InvestigetionManageDetailMapper investigetionManageDetailMapper; + + /** + * 查询盘点详情管理列表 + */ + @Override + public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO) + { + return investigetionManageDetailMapper.queryList(investigetionManageDetailDO); + } + + /** + * 新增盘点详情管理 + */ + @Override + public Boolean insert(InvestigetionManageDetailDO investigetionManageDetailDO) { + InvestigetionManageDetail investigetionManageDetail = new InvestigetionManageDetail(); + BeanUtils.copyProperties(investigetionManageDetailDO,investigetionManageDetail); + return this.save(investigetionManageDetail); + } + + /** + * 修改盘点详情管理 + */ + @Override + public Boolean update(InvestigetionManageDetailDO investigetionManageDetailDO) { + InvestigetionManageDetail investigetionManageDetail = new InvestigetionManageDetail(); + BeanUtils.copyProperties(investigetionManageDetailDO,investigetionManageDetail); + return this.updateById(investigetionManageDetail); + } + + /** + * 批量删除盘点详情管理 + */ + @Override + public Boolean delete(Long[] investigationManageDetailIds ) { + List list = new ArrayList<>(); + for (Long id : investigationManageDetailIds) { + InvestigetionManageDetail investigetionManageDetail = new InvestigetionManageDetail(); + investigetionManageDetail.setInvestigationManageDetailId(id); + investigetionManageDetail.setDelFlag(2); + list.add(investigetionManageDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改盘点详情管理 + */ + @Override + public InvestigetionManageDetailPO getInfo(Long investigationManageDetailId) { + InvestigetionManageDetail investigetionManageDetail = this.getById(investigationManageDetailId); + InvestigetionManageDetailPO investigetionManageDetailPO = new InvestigetionManageDetailPO(); + BeanUtils.copyProperties(investigetionManageDetail,investigetionManageDetailPO); + return investigetionManageDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/po/InvestigetionManageDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/po/InvestigetionManageDetailPO.java new file mode 100644 index 000000000..ccae1e974 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/po/InvestigetionManageDetailPO.java @@ -0,0 +1,208 @@ +package com.mhd.wms.domain.investigetionManageDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 盘点详情管理对象 investigetion_manage_detail + * + * @author gen + * @date 2024-07-10 + */ + +@Data +@ApiModel(value = "盘点详情管理对象", description = "盘点详情管理响应对象") +public class InvestigetionManageDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点详情id") + private Long investigationManageDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("差异数量") + @Excel(name = "差异数量") + private BigDecimal differentQuantity; + + @ApiModelProperty("盘点结果:1.盘盈 2.盘亏 3.正常") + @Excel(name = "盘点结果:1.盘盈 2.盘亏 3.正常") + private Integer investigationResult; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/todo/InvestigetionManageDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/todo/InvestigetionManageDetailDO.java new file mode 100644 index 000000000..8413447fe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/repository/todo/InvestigetionManageDetailDO.java @@ -0,0 +1,215 @@ +package com.mhd.wms.domain.investigetionManageDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 盘点详情管理对象 investigetion_manage_detail + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigetionManageDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点详情id") + private Long investigationManageDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("差异数量") + @Excel(name = "差异数量") + private BigDecimal differentQuantity; + + @ApiModelProperty("盘点结果:1.盘盈 2.盘亏 3.正常") + @Excel(name = "盘点结果:1.盘盈 2.盘亏 3.正常") + private Integer investigationResult; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("作业数量:盘点数量") + @Excel(name = "作业数量:盘点数量") + private BigDecimal actualQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/service/InvestigetionManageDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/service/InvestigetionManageDetailDomainService.java new file mode 100644 index 000000000..c1611ba02 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/investigetionManageDetail/service/InvestigetionManageDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.investigetionManageDetail.service; + +import com.mhd.wms.domain.investigetionManageDetail.repository.facade.IInvestigetionManageDetailService; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 盘点详情管理 + * + * @author gen + * @date 2024-07-10 + */ +@Service +@Slf4j +public class InvestigetionManageDetailDomainService { + + @Autowired + private IInvestigetionManageDetailService investigetionManageDetailService; + + + /** + * 分页查询盘点详情管理列表 + */ + public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO) { + return investigetionManageDetailService.queryList(investigetionManageDetailDO); + } + + + /** + * 新增盘点详情管理 + */ + public Boolean insert(InvestigetionManageDetailDO investigetionManageDetailDO) { + + return investigetionManageDetailService.insert(investigetionManageDetailDO); + } + + /** + * 修改盘点详情管理 + */ + public Boolean update(InvestigetionManageDetailDO investigetionManageDetailDO) { + return investigetionManageDetailService.update(investigetionManageDetailDO); + } + + /** + * 批量删除盘点详情管理 + */ + public Boolean delete(Long[] investigationManageDetailIds) { + return investigetionManageDetailService.delete(investigationManageDetailIds); + } + + /** + * 获取盘点详情管理详细信息 + */ + public InvestigetionManageDetailPO getInfo(Long investigationManageDetailId) + { + return investigetionManageDetailService.getInfo(investigationManageDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/entity/MaterialBarCode.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/entity/MaterialBarCode.java new file mode 100644 index 000000000..a2b854252 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/entity/MaterialBarCode.java @@ -0,0 +1,75 @@ +package com.mhd.wms.domain.materialBarCode.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料条码信息对象 material_bar_code + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBarCode extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + @TableId(type = IdType.AUTO) + private Long materialBarCodeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/facade/IMaterialBarCodeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/facade/IMaterialBarCodeService.java new file mode 100644 index 000000000..2d9c5f677 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/facade/IMaterialBarCodeService.java @@ -0,0 +1,58 @@ +package com.mhd.wms.domain.materialBarCode.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialBarCode.entity.MaterialBarCode; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; + +import java.util.List; + +/** + * 物料条码信息Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialBarCodeService extends IService +{ + /** + * 分页查询物料条码信息列表 + */ + public List queryList(MaterialBarCodeDO materialBarCodeDO); + + /** + * 新增物料条码信息 + */ + public Boolean insert(MaterialBarCodeDO materialBarCodeDO); + + /** + * 修改物料条码信息 + */ + public Boolean update(MaterialBarCodeDO materialBarCodeDO); + + /** + * 批量新增物料条码信息 + */ + public Boolean batchInsertOrUpdate(List materialBarCodeDOList); + + /** + * 批量删除物料条码信息 + */ + public Boolean delete(Long[] materialBarCodeIds); + + /** + * 根据物流基础信息Id批量删除物料条码信息 + */ + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds); + + + /** + * 查询物料条码信息 + */ + public MaterialBarCodePO getInfo(Long materialBarCodeId); + + /** + * 根据物流基础信息Id查询物料条码信息 + */ + public List getInfoByMaterialBaseInfoIds(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/mapper/MaterialBarCodeMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/mapper/MaterialBarCodeMapper.java new file mode 100644 index 000000000..1b12da198 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/mapper/MaterialBarCodeMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialBarCode.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialBarCode.entity.MaterialBarCode; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; + +import java.util.List; + +/** + * 物料条码信息Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialBarCodeMapper extends BaseMapper +{ + /** + * 查询物料条码信息列表 + */ + public List queryList(MaterialBarCodeDO materialBarCodeDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java new file mode 100644 index 000000000..858ffed5f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/persistence/MaterialBarCodeImpl.java @@ -0,0 +1,163 @@ +package com.mhd.wms.domain.materialBarCode.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBarCode.entity.MaterialBarCode; +import com.mhd.wms.domain.materialBarCode.repository.facade.IMaterialBarCodeService; +import com.mhd.wms.domain.materialBarCode.repository.mapper.MaterialBarCodeMapper; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 物料条码信息Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialBarCodeImpl extends ServiceImpl implements IMaterialBarCodeService{ + @Autowired + private MaterialBarCodeMapper materialBarCodeMapper; + + /** + * 查询物料条码信息列表 + */ + @Override + public List queryList(MaterialBarCodeDO materialBarCodeDO) + { + return materialBarCodeMapper.queryList(materialBarCodeDO); + } + + /** + * 新增物料条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insert(MaterialBarCodeDO materialBarCodeDO) { + MaterialBarCode materialBarCode = new MaterialBarCode(); + BeanUtils.copyProperties(materialBarCodeDO,materialBarCode); + return this.save(materialBarCode); + } + + /** + * 修改物料条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean update(MaterialBarCodeDO materialBarCodeDO) { + MaterialBarCode materialBarCode = new MaterialBarCode(); + BeanUtils.copyProperties(materialBarCodeDO,materialBarCode); + return this.updateById(materialBarCode); + } + + /** + * 批量新增物料条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsertOrUpdate(List materialBarCodeDOList) { + if (CollectionUtils.isEmpty(materialBarCodeDOList)){ + return true; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + //标记之前的数据删除 + materialBarCodeMapper.update(null, new UpdateWrapper().lambda() + .set(MaterialBarCode::getDelFlag, 2) + .set(MaterialBarCode::getUpdateBy, loginUser.getUserid()) + .set(MaterialBarCode::getUpdateByName, loginUser.getUsername()) + .set(MaterialBarCode::getUpdateTime, new Date()) + .eq(MaterialBarCode::getMaterialBaseInfoId, materialBarCodeDOList.get(0).getMaterialBaseInfoId()) + .eq(MaterialBarCode::getDelFlag, 1)); + List materialBarCodeList = new ArrayList<>(); + for (MaterialBarCodeDO materialBarCodeDO : materialBarCodeDOList){ + MaterialBarCode materialBarCode = new MaterialBarCode(); + BeanUtils.copyProperties(materialBarCodeDO,materialBarCode); + materialBarCode.setOrganizationId(userPo.getOrganizationId()); + materialBarCode.setOrganizationName(userPo.getOrganizationName()); + materialBarCode.setTopOrganizationId(userPo.getTopOrganizationId()); + materialBarCode.setCreateBy(loginUser.getUserid()); + materialBarCode.setCreateByName(loginUser.getUsername()); + materialBarCode.setCreateTime(new Date()); + materialBarCodeList.add(materialBarCode); + } + + return this.saveBatch(materialBarCodeList); + } + + /** + * 批量删除物料条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] materialBarCodeIds ) { + List list = new ArrayList<>(); + for (Long id : materialBarCodeIds) { + MaterialBarCode materialBarCode = new MaterialBarCode(); + materialBarCode.setMaterialBarCodeId(id); + materialBarCode.setDelFlag(2); + list.add(materialBarCode); + } + return this.updateBatchById(list); + } + + /** + * 批量删除物料条码信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialBarCode::getDelFlag, 2) + .set(MaterialBarCode::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialBarCode::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialBarCode::getUpdateTime, new Date()) + .in(MaterialBarCode::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改物料条码信息 + */ + @Override + public MaterialBarCodePO getInfo(Long materialBarCodeId) { + MaterialBarCode materialBarCode = this.getById(materialBarCodeId); + MaterialBarCodePO materialBarCodePO = new MaterialBarCodePO(); + BeanUtils.copyProperties(materialBarCode,materialBarCodePO); + return materialBarCodePO; + } + + /** + * @description 根据物流基础信息Id查询物料条码信息 + * @author ZhouGY + * @date 2024/5/11 18:11 + * @param materialBaseInfoId + * @return List + */ + @Override + public List getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + List materialBarCodeList = materialBarCodeMapper.selectList(new QueryWrapper().lambda() + .eq(MaterialBarCode::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialBarCode::getDelFlag, 1)); + if (CollectionUtils.isEmpty(materialBarCodeList)){ + return null; + } + List materialBarCodePOList = new ArrayList<>(); + BeanUtils.copyProperties(materialBarCodeList,materialBarCodePOList); + return materialBarCodePOList; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/po/MaterialBarCodePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/po/MaterialBarCodePO.java new file mode 100644 index 000000000..9882cc45f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/po/MaterialBarCodePO.java @@ -0,0 +1,75 @@ +package com.mhd.wms.domain.materialBarCode.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料条码信息对象 material_bar_code + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "物料条码信息对象", description = "物料条码信息响应对象") +public class MaterialBarCodePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialBarCodeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/todo/MaterialBarCodeDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/todo/MaterialBarCodeDO.java new file mode 100644 index 000000000..8a28146b1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/repository/todo/MaterialBarCodeDO.java @@ -0,0 +1,78 @@ +package com.mhd.wms.domain.materialBarCode.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 物料条码信息对象 material_bar_code + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBarCodeDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialBarCodeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/service/MaterialBarCodeDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/service/MaterialBarCodeDomainService.java new file mode 100644 index 000000000..760264672 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBarCode/service/MaterialBarCodeDomainService.java @@ -0,0 +1,75 @@ +package com.mhd.wms.domain.materialBarCode.service; + +import cn.hutool.core.collection.CollectionUtil; +import com.mhd.wms.domain.materialBarCode.repository.facade.IMaterialBarCodeService; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料条码信息 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialBarCodeDomainService { + + @Autowired + private IMaterialBarCodeService materialBarCodeService; + + + /** + * 分页查询物料条码信息列表 + */ + public List queryList(MaterialBarCodeDO materialBarCodeDO) { + return materialBarCodeService.queryList(materialBarCodeDO); + } + + + /** + * 新增物料条码信息 + */ + public Boolean insert(MaterialBarCodeDO materialBarCodeDO) { + + return materialBarCodeService.insert(materialBarCodeDO); + } + + /** + * 修改物料条码信息 + */ + public Boolean update(MaterialBarCodeDO materialBarCodeDO) { + return materialBarCodeService.update(materialBarCodeDO); + } + + /** + * 批量删除物料条码信息 + */ + public Boolean delete(Long[] materialBarCodeIds) { + return materialBarCodeService.delete(materialBarCodeIds); + } + + /** + * 获取物料条码信息详细信息 + */ + public MaterialBarCodePO getInfo(Long materialBarCodeId) + { + return materialBarCodeService.getInfo(materialBarCodeId); + } + + /** + * 新增物料条码信息 + */ + public Boolean batchInsertOrUpdate(MaterialBaseInfoDO materialBaseInfoDO) { + if (CollectionUtil.isEmpty(materialBaseInfoDO.getMaterialBarCodeList())){ + return true; + } + return materialBarCodeService.batchInsertOrUpdate(materialBaseInfoDO.getMaterialBarCodeList()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java new file mode 100644 index 000000000..d953bb484 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/entity/MaterialBaseInfo.java @@ -0,0 +1,172 @@ +package com.mhd.wms.domain.materialBaseInfo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料基础信息对象 material_base_info + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBaseInfo extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料基础信息id") + @TableId(type = IdType.INPUT) + private Long materialBaseInfoId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料分类id") + @Excel(name = "物料分类id") + private String materialClassifyId; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装单位编码") + @Excel(name = "包装单位编码") + private String unitCode; + + @ApiModelProperty("包装单位名称") + @Excel(name = "包装单位名称") + private String unitName; + + @ApiModelProperty("品牌id") + @Excel(name = "品牌id") + private Long brandId; + + @ApiModelProperty("品牌编码") + @Excel(name = "品牌编码") + private String brandCode; + + @ApiModelProperty("品牌名称") + @Excel(name = "品牌名称") + private String brandName; + + @ApiModelProperty("保质期 单位:天") + @Excel(name = "保质期 单位:天") + private Long shelfLife; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("商品形态编码 数据字典") + @Excel(name = "商品形态编码 数据字典") + private String materialShape; + + @ApiModelProperty("商品形态名称 数据字典") + @Excel(name = "商品形态名称 数据字典") + private String materialShapeName; + + @ApiModelProperty("物料大小 长*宽*高 单位:米") + @Excel(name = "物料大小 长*宽*高 单位:米") + private String materialSize; + + @ApiModelProperty("物料大小-长 单位:米") + @Excel(name = "物料大小-长 单位:米") + private BigDecimal materialLength; + + @ApiModelProperty("物料大小-宽 单位:米") + @Excel(name = "物料大小-宽 单位:米") + private BigDecimal materialWidth; + + @ApiModelProperty("物料大小-高 单位:米") + @Excel(name = "物料大小-高 单位:米") + private BigDecimal materialHeight; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("是否公用: 1-是 2-否") + @Excel(name = "是否公用: 1-是 2-否") + private Integer common; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/facade/IMaterialBaseInfoService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/facade/IMaterialBaseInfoService.java new file mode 100644 index 000000000..f06417724 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/facade/IMaterialBaseInfoService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; + +import java.util.List; + +/** + * 物料基础信息Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialBaseInfoService extends IService +{ + /** + * 分页查询物料基础信息列表 + */ + public List queryList(MaterialBaseInfoDO materialBaseInfoDO); + + /** + * 新增物料基础信息 + */ + public Long insert(MaterialBaseInfoDO materialBaseInfoDO); + + /** + * 修改物料基础信息 + */ + public Boolean update(MaterialBaseInfoDO materialBaseInfoDO); + + /** + * 批量删除物料基础信息 + */ + public Boolean delete(Long[] materialBaseInfoIds); + + + /** + * 查询物料基础信息 + */ + public MaterialBaseInfoPO getInfo(Long materialBaseInfoId); + + MaterialBaseInfoPO selectOneByID(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java new file mode 100644 index 000000000..39fb4ae47 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/mapper/MaterialBaseInfoMapper.java @@ -0,0 +1,24 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; + +import java.util.List; + +/** + * 物料基础信息Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialBaseInfoMapper extends BaseMapper +{ + /** + * 查询物料基础信息列表 + */ + public List queryList(MaterialBaseInfoDO materialBaseInfoDO); + + MaterialBaseInfoPO selectOneByID(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java new file mode 100644 index 000000000..532f4fa40 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/persistence/MaterialBaseInfoImpl.java @@ -0,0 +1,94 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 物料基础信息Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialBaseInfoImpl extends ServiceImpl implements IMaterialBaseInfoService{ + @Autowired + private MaterialBaseInfoMapper materialBaseInfoMapper; + + /** + * 查询物料基础信息列表 + */ + @Override + public List queryList(MaterialBaseInfoDO materialBaseInfoDO) + { + return materialBaseInfoMapper.queryList(materialBaseInfoDO); + } + + /** + * 新增物料基础信息 + */ + @Override + public Long insert(MaterialBaseInfoDO materialBaseInfoDO) { + MaterialBaseInfo materialBaseInfo = new MaterialBaseInfo(); + BeanUtils.copyProperties(materialBaseInfoDO,materialBaseInfo); + this.save(materialBaseInfo); + return materialBaseInfo.getMaterialBaseInfoId(); + } + + /** + * 修改物料基础信息 + */ + @Override + public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) { + MaterialBaseInfo materialBaseInfo = new MaterialBaseInfo(); + BeanUtils.copyProperties(materialBaseInfoDO,materialBaseInfo); + return this.update(materialBaseInfo, new UpdateWrapper().lambda() + .eq(MaterialBaseInfo::getMaterialBaseInfoId,materialBaseInfoDO.getMaterialBaseInfoId())); + } + + /** + * 批量删除物料基础信息 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialBaseInfo::getDelFlag, 2) + .set(MaterialBaseInfo::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialBaseInfo::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialBaseInfo::getUpdateTime, new Date()) + .in(MaterialBaseInfo::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改物料基础信息 + */ + @Override + public MaterialBaseInfoPO getInfo(Long materialBaseInfoId) { + MaterialBaseInfo materialBaseInfo = materialBaseInfoMapper.selectOne(new QueryWrapper().lambda().eq(MaterialBaseInfo::getMaterialBaseInfoId, materialBaseInfoId)); + MaterialBaseInfoPO materialBaseInfoPO = new MaterialBaseInfoPO(); + BeanUtils.copyProperties(materialBaseInfo,materialBaseInfoPO); + return materialBaseInfoPO; + } + + @Override + public MaterialBaseInfoPO selectOneByID(Long materialBaseInfoId) { + return materialBaseInfoMapper.selectOneByID(materialBaseInfoId); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java new file mode 100644 index 000000000..baf2d61d2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBaseInfoPO.java @@ -0,0 +1,192 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料基础信息对象 material_base_info + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "物料基础信息对象", description = "物料基础信息响应对象") +public class MaterialBaseInfoPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装单位编码") + @Excel(name = "包装单位编码") + private String unitCode; + + @ApiModelProperty("包装单位名称") + @Excel(name = "包装单位名称") + private String unitName; + + @ApiModelProperty("品牌id") + @Excel(name = "品牌id") + private Long brandId; + + @ApiModelProperty("品牌编码") + @Excel(name = "品牌编码") + private String brandCode; + + @ApiModelProperty("品牌名称") + @Excel(name = "品牌名称") + private String brandName; + + @ApiModelProperty("保质期 单位:天") + @Excel(name = "保质期 单位:天") + private Long shelfLife; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("商品形态编码 数据字典") + @Excel(name = "商品形态编码 数据字典") + private String materialShape; + + @ApiModelProperty("商品形态名称 数据字典") + @Excel(name = "商品形态名称 数据字典") + private String materialShapeName; + + @ApiModelProperty("物料大小 长*宽*高 单位:米") + @Excel(name = "物料大小 长*宽*高 单位:米") + private String materialSize; + + @ApiModelProperty("物料大小-长 单位:米") + @Excel(name = "物料大小-长 单位:米") + private BigDecimal materialLength; + + @ApiModelProperty("物料大小-宽 单位:米") + @Excel(name = "物料大小-宽 单位:米") + private BigDecimal materialWidth; + + @ApiModelProperty("物料大小-高 单位:米") + @Excel(name = "物料大小-高 单位:米") + private BigDecimal materialHeight; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("商品规则") + private MaterialGoodsRulePO materialGoodsRule; + + @ApiModelProperty("公共信息") + private MaterialCommonPO materialCommon; + + @ApiModelProperty("仓库控制信息") + private MaterialWarehouseControlPO materialWarehouseControl; + + @ApiModelProperty("库存预警信息") + private List materialInventoryWarningList; + + @ApiModelProperty("条码信息") + private List materialBarCodeList; + + @ApiModelProperty("物料批次属性") + private List materialMoreDetailList; + + @ApiModelProperty("是否公用: 1-是 2-否") + @Excel(name = "是否公用: 1-是 2-否") + private Integer common; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBasePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBasePO.java new file mode 100644 index 000000000..dfe56424f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/po/MaterialBasePO.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author ZhouGY + * @title MaterialBaseDO + * @description: TODO + * @date 2024/7/5 10:59 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class MaterialBasePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseDO.java new file mode 100644 index 000000000..5eab108e2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseDO.java @@ -0,0 +1,73 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author ZhouGY + * @title MaterialBaseDO + * @description: TODO + * @date 2024/7/5 10:59 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class MaterialBaseDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java new file mode 100644 index 000000000..9d9d2b6c8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/repository/todo/MaterialBaseInfoDO.java @@ -0,0 +1,190 @@ +package com.mhd.wms.domain.materialBaseInfo.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料基础信息对象 material_base_info + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBaseInfoDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装单位编码") + @Excel(name = "包装单位编码") + private String unitCode; + + @ApiModelProperty("包装单位名称") + @Excel(name = "包装单位名称") + private String unitName; + + @ApiModelProperty("品牌id") + @Excel(name = "品牌id") + private Long brandId; + + @ApiModelProperty("品牌编码") + @Excel(name = "品牌编码") + private String brandCode; + + @ApiModelProperty("品牌名称") + @Excel(name = "品牌名称") + private String brandName; + + @ApiModelProperty("保质期 单位:天") + @Excel(name = "保质期 单位:天") + private Long shelfLife; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("商品形态编码 数据字典") + @Excel(name = "商品形态编码 数据字典") + private String materialShape; + + @ApiModelProperty("商品形态名称 数据字典") + @Excel(name = "商品形态名称 数据字典") + private String materialShapeName; + + @ApiModelProperty("物料大小 长*宽*高 单位:米") + @Excel(name = "物料大小 长*宽*高 单位:米") + private String materialSize; + + @ApiModelProperty("物料大小-长 单位:米") + @Excel(name = "物料大小-长 单位:米") + private BigDecimal materialLength; + + @ApiModelProperty("物料大小-宽 单位:米") + @Excel(name = "物料大小-宽 单位:米") + private BigDecimal materialWidth; + + @ApiModelProperty("物料大小-高 单位:米") + @Excel(name = "物料大小-高 单位:米") + private BigDecimal materialHeight; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("商品规则") + private MaterialGoodsRuleDO materialGoodsRule; + + @ApiModelProperty("公共信息") + private MaterialCommonDO materialCommon; + + @ApiModelProperty("仓库控制信息") + private MaterialWarehouseControlDO materialWarehouseControl; + + @ApiModelProperty("库存预警信息") + private List materialInventoryWarningList; + + @ApiModelProperty("条码信息") + private List materialBarCodeList; + + @ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码") + private String compoundOrQuery; + + @ApiModelProperty("是否公用: 1-是 2-否") + @Excel(name = "是否公用: 1-是 2-否") + private Integer common; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/service/MaterialBaseInfoDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/service/MaterialBaseInfoDomainService.java new file mode 100644 index 000000000..5a6cd9478 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialBaseInfo/service/MaterialBaseInfoDomainService.java @@ -0,0 +1,177 @@ +package com.mhd.wms.domain.materialBaseInfo.service; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.BatchDetailFeignPO; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.wms.domain.materialBarCode.repository.facade.IMaterialBarCodeService; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.domain.materialCommon.repository.facade.IMaterialCommonService; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialInventoryWarning.repository.facade.IMaterialInventoryWarningService; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 物料基础信息 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialBaseInfoDomainService { + + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + + @Autowired + private IMaterialCommonService materialCommonService; + + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + + @Autowired + private IMaterialInventoryWarningService materialInventoryWarningService; + + @Autowired + private IMaterialBarCodeService materialBarCodeService; + + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询物料基础信息列表 + */ + public List queryList(MaterialBaseInfoDO materialBaseInfoDO) { + return materialBaseInfoService.queryList(materialBaseInfoDO); + } + + + /** + * 新增物料基础信息 + */ + public Long insert(MaterialBaseInfoDO materialBaseInfoDO) { + + return materialBaseInfoService.insert(materialBaseInfoDO); + } + + /** + * 修改物料基础信息 + */ + public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) { + return materialBaseInfoService.update(materialBaseInfoDO); + } + + /** + * 批量删除物料基础信息 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] materialBaseInfoIds) { + materialBaseInfoService.delete(materialBaseInfoIds); + materialGoodsRuleService.deleteByMaterialBaseInfoIds(materialBaseInfoIds); + materialCommonService.deleteByMaterialBaseInfoIds(materialBaseInfoIds); + materialWarehouseControlService.deleteByMaterialBaseInfoIds(materialBaseInfoIds); + materialInventoryWarningService.deleteByMaterialBaseInfoIds(materialBaseInfoIds); + materialBarCodeService.deleteByMaterialBaseInfoIds(materialBaseInfoIds); + return true; + } + + /** + * 获取物料基础信息详细信息 + */ + public MaterialBaseInfoPO getInfo(Long materialBaseInfoId) { + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(materialBaseInfoId); + //获取商品规则详情 + MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + materialBaseInfoPO.setMaterialGoodsRule(materialGoodsRulePO); + //获取公共信息 + MaterialCommonPO materialCommonPO = materialCommonService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + materialBaseInfoPO.setMaterialCommon(materialCommonPO); + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + materialBaseInfoPO.setMaterialWarehouseControl(materialWarehouseControlPO); + //获取库存预警 + List materialInventoryWarningPOList = materialInventoryWarningService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + materialBaseInfoPO.setMaterialInventoryWarningList(materialInventoryWarningPOList); + //获取条码信息 + List materialBarCodePOList = materialBarCodeService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + materialBaseInfoPO.setMaterialBarCodeList(materialBarCodePOList); + return materialBaseInfoPO; + } + + + /** + * @description 无单收货单 根据物料信息获取明细 + * @author ZhouGY + * @date 2024/7/16 22:18 + * @param materialBaseInfoDO + * @return MaterialBaseInfoPO + */ + public MaterialBaseInfoPO getInfoByNoOrderReceipt(MaterialBaseInfoDO materialBaseInfoDO) { + List materialBaseInfoPOList = materialBaseInfoService.queryList(materialBaseInfoDO); + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoPOList.get(0); + if (ObjectUtil.isNull(materialBaseInfoPO)){ + throw new ServiceException("物料基础信息不存在"); + } + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + materialBaseInfoPO.setMaterialWarehouseControl(materialWarehouseControlPO); + //获取商品规则详情 + MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + List materialMoreDetailPOList = new ArrayList<>(); + if (ObjectUtil.isNotNull(materialGoodsRulePO)){ + AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByBatchId(materialGoodsRulePO.getBatchId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取批次信息失败"); + } + List batchDetailFeignPOList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class); + batchDetailFeignPOList.forEach(batchDetailFeignPO -> { + MaterialMoreDetailPO materialMoreDetailPO = new MaterialMoreDetailPO(); + materialMoreDetailPO.setBatchId(batchDetailFeignPO.getBatchId()); + materialMoreDetailPO.setBatchDetailId(batchDetailFeignPO.getBatchDetailId()); + materialMoreDetailPO.setBatchLabels(batchDetailFeignPO.getBatchLabels()); + materialMoreDetailPO.setInputControl(batchDetailFeignPO.getInputControl()); + materialMoreDetailPO.setAttributeFormat(batchDetailFeignPO.getAttributeFormat()); + materialMoreDetailPO.setAttributeOption(batchDetailFeignPO.getAttributeOption()); + materialMoreDetailPOList.add(materialMoreDetailPO); + }); + } + materialBaseInfoPO.setMaterialMoreDetailList(materialMoreDetailPOList); + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + materialBaseInfoPO.setUnitCode(packDetailFeignPO.getUnitCode()); + materialBaseInfoPO.setUnitName(packDetailFeignPO.getName()); + return materialBaseInfoPO; + } + + public MaterialBaseInfoPO selectOneByID(Long materialBaseInfoId) { + return materialBaseInfoService.selectOneByID(materialBaseInfoId); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/entity/MaterialCommon.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/entity/MaterialCommon.java new file mode 100644 index 000000000..29c29648b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/entity/MaterialCommon.java @@ -0,0 +1,101 @@ +package com.mhd.wms.domain.materialCommon.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 物料公共信息对象 material_common + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialCommon extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + @TableId(type = IdType.AUTO) + private Long materialCommonId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否温控: 1-是 2-否") + @Excel(name = "是否温控: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("最低温度") + @Excel(name = "最低温度") + private BigDecimal minTemperature; + + @ApiModelProperty("最高温度") + @Excel(name = "最高温度") + private BigDecimal maxTemperature; + + @ApiModelProperty("商品温层编码") + @Excel(name = "商品温层编码") + private String warmLayer; + + @ApiModelProperty("商品温层名称") + @Excel(name = "商品温层名称") + private String warmLayerName; + + @ApiModelProperty("闪点") + @Excel(name = "闪点") + private String flashPoint; + + @ApiModelProperty("燃点") + @Excel(name = "燃点") + private String ignitionPoint; + + @ApiModelProperty("是否危险品: 1-是 2-否") + @Excel(name = "是否危险品: 1-是 2-否") + private Integer dangerGoods; + + @ApiModelProperty("危险品等级编码") + @Excel(name = "危险品等级编码") + private String dangerLevel; + + @ApiModelProperty("危险品等级名称") + @Excel(name = "危险品等级名称") + private String dangerLevelName; + + @ApiModelProperty("生产日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date productionTime; + + @ApiModelProperty("失效日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date expirationTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/facade/IMaterialCommonService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/facade/IMaterialCommonService.java new file mode 100644 index 000000000..19c997d5b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/facade/IMaterialCommonService.java @@ -0,0 +1,53 @@ +package com.mhd.wms.domain.materialCommon.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialCommon.entity.MaterialCommon; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; + +import java.util.List; + +/** + * 物料公共信息Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialCommonService extends IService +{ + /** + * 分页查询物料公共信息列表 + */ + public List queryList(MaterialCommonDO materialCommonDO); + + /** + * 新增物料公共信息 + */ + public Boolean insert(MaterialCommonDO materialCommonDO); + + /** + * 修改物料公共信息 + */ + public Boolean update(MaterialCommonDO materialCommonDO); + + /** + * 批量删除物料公共信息 + */ + public Boolean delete(Long[] materialCommonIds); + + /** + * 根据物流基础信息Id批量删除物料公共信息 + */ + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds); + + + /** + * 查询物料公共信息 + */ + public MaterialCommonPO getInfo(Long materialCommonId); + + /** + * 根据物流基础信息Id查询物料公共信息 + */ + public MaterialCommonPO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/mapper/MaterialCommonMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/mapper/MaterialCommonMapper.java new file mode 100644 index 000000000..fc21f9c59 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/mapper/MaterialCommonMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialCommon.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialCommon.entity.MaterialCommon; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; + +import java.util.List; + +/** + * 物料公共信息Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialCommonMapper extends BaseMapper +{ + /** + * 查询物料公共信息列表 + */ + public List queryList(MaterialCommonDO materialCommonDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/persistence/MaterialCommonImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/persistence/MaterialCommonImpl.java new file mode 100644 index 000000000..b9bb6b394 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/persistence/MaterialCommonImpl.java @@ -0,0 +1,140 @@ +package com.mhd.wms.domain.materialCommon.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialCommon.entity.MaterialCommon; +import com.mhd.wms.domain.materialCommon.repository.facade.IMaterialCommonService; +import com.mhd.wms.domain.materialCommon.repository.mapper.MaterialCommonMapper; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 物料公共信息Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialCommonImpl extends ServiceImpl implements IMaterialCommonService { + @Autowired + private MaterialCommonMapper materialCommonMapper; + + /** + * 查询物料公共信息列表 + */ + @Override + public List queryList(MaterialCommonDO materialCommonDO) + { + return materialCommonMapper.queryList(materialCommonDO); + } + + /** + * 新增物料公共信息 + */ + @Override + public Boolean insert(MaterialCommonDO materialCommonDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialCommon materialCommon = new MaterialCommon(); + BeanUtils.copyProperties(materialCommonDO,materialCommon); + UserPo userPo = loginUser.getUserPo(); + materialCommon.setOrganizationId(userPo.getOrganizationId()); + materialCommon.setOrganizationName(userPo.getOrganizationName()); + materialCommon.setTopOrganizationId(userPo.getTopOrganizationId()); + materialCommon.setCreateBy(userPo.getUserId()); + materialCommon.setCreateByName(userPo.getUserName()); + materialCommon.setCreateTime(new Date()); + return this.save(materialCommon); + } + + /** + * 修改物料公共信息 + */ + @Override + public Boolean update(MaterialCommonDO materialCommonDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialCommon materialCommon = new MaterialCommon(); + BeanUtils.copyProperties(materialCommonDO,materialCommon); + UserPo userPo = loginUser.getUserPo(); + materialCommon.setUpdateBy(userPo.getUpdateBy()); + materialCommon.setUpdateByName(userPo.getUpdateByName()); + materialCommon.setUpdateTime(new Date()); + return this.updateById(materialCommon); + } + + /** + * 批量删除物料公共信息 + */ + @Override + public Boolean delete(Long[] materialCommonIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + List list = new ArrayList<>(); + for (Long id : materialCommonIds) { + MaterialCommon materialCommon = new MaterialCommon(); + materialCommon.setMaterialCommonId(id); + materialCommon.setDelFlag(2); + materialCommon.setUpdateBy(userPo.getUpdateBy()); + materialCommon.setUpdateByName(userPo.getUpdateByName()); + materialCommon.setUpdateTime(new Date()); + list.add(materialCommon); + } + return this.updateBatchById(list); + } + + /** + * 批量删除物料公共信息 + */ + @Override + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialCommon::getDelFlag, 2) + .set(MaterialCommon::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialCommon::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialCommon::getUpdateTime, new Date()) + .in(MaterialCommon::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改物料公共信息 + */ + @Override + public MaterialCommonPO getInfo(Long materialCommonId) { + MaterialCommon materialCommon = this.getById(materialCommonId); + MaterialCommonPO materialCommonPO = new MaterialCommonPO(); + BeanUtils.copyProperties(materialCommon,materialCommonPO); + return materialCommonPO; + } + + /** + * @description 根据物流基础信息Id查询物料公共信息 + * @author ZhouGY + * @date 2024/5/11 17:58 + * @param materialBaseInfoId + * @return MaterialCommonPO + */ + @Override + public MaterialCommonPO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + MaterialCommon materialCommon = materialCommonMapper.selectOne(new QueryWrapper().lambda() + .eq(MaterialCommon::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialCommon::getDelFlag, 1)); + if (materialCommon == null){ + return null; + } + MaterialCommonPO materialCommonPO = new MaterialCommonPO(); + BeanUtils.copyProperties(materialCommon,materialCommonPO); + return materialCommonPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/po/MaterialCommonPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/po/MaterialCommonPO.java new file mode 100644 index 000000000..be353f89c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/po/MaterialCommonPO.java @@ -0,0 +1,101 @@ +package com.mhd.wms.domain.materialCommon.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 物料公共信息对象 material_common + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "物料公共信息对象", description = "物料公共信息响应对象") +public class MaterialCommonPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialCommonId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否温控: 1-是 2-否") + @Excel(name = "是否温控: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("最低温度") + @Excel(name = "最低温度") + private BigDecimal minTemperature; + + @ApiModelProperty("最高温度") + @Excel(name = "最高温度") + private BigDecimal maxTemperature; + + @ApiModelProperty("商品温层编码") + @Excel(name = "商品温层编码") + private String warmLayer; + + @ApiModelProperty("商品温层名称") + @Excel(name = "商品温层名称") + private String warmLayerName; + + @ApiModelProperty("闪点") + @Excel(name = "闪点") + private String flashPoint; + + @ApiModelProperty("燃点") + @Excel(name = "燃点") + private String ignitionPoint; + + @ApiModelProperty("是否危险品: 1-是 2-否") + @Excel(name = "是否危险品: 1-是 2-否") + private Integer dangerGoods; + + @ApiModelProperty("危险品等级编码") + @Excel(name = "危险品等级编码") + private String dangerLevel; + + @ApiModelProperty("危险品等级名称") + @Excel(name = "危险品等级名称") + private String dangerLevelName; + + @ApiModelProperty("生产日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date productionTime; + + @ApiModelProperty("失效日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date expirationTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/todo/MaterialCommonDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/todo/MaterialCommonDO.java new file mode 100644 index 000000000..07166700f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/repository/todo/MaterialCommonDO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.domain.materialCommon.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 物料公共信息对象 material_common + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialCommonDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialCommonId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否温控: 1-是 2-否") + @Excel(name = "是否温控: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("最低温度") + @Excel(name = "最低温度") + private BigDecimal minTemperature; + + @ApiModelProperty("最高温度") + @Excel(name = "最高温度") + private BigDecimal maxTemperature; + + @ApiModelProperty("商品温层编码") + @Excel(name = "商品温层编码") + private String warmLayer; + + @ApiModelProperty("商品温层名称") + @Excel(name = "商品温层名称") + private String warmLayerName; + + @ApiModelProperty("闪点") + @Excel(name = "闪点") + private String flashPoint; + + @ApiModelProperty("燃点") + @Excel(name = "燃点") + private String ignitionPoint; + + @ApiModelProperty("是否危险品: 1-是 2-否") + @Excel(name = "是否危险品: 1-是 2-否") + private Integer dangerGoods; + + @ApiModelProperty("危险品等级编码") + @Excel(name = "危险品等级编码") + private String dangerLevel; + + @ApiModelProperty("危险品等级名称") + @Excel(name = "危险品等级名称") + private String dangerLevelName; + + @ApiModelProperty("生产日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date productionTime; + + @ApiModelProperty("失效日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date expirationTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/service/MaterialCommonDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/service/MaterialCommonDomainService.java new file mode 100644 index 000000000..cb62b1aae --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialCommon/service/MaterialCommonDomainService.java @@ -0,0 +1,120 @@ +package com.mhd.wms.domain.materialCommon.service; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.wms.domain.materialCommon.repository.facade.IMaterialCommonService; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料公共信息 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialCommonDomainService { + + @Autowired + private IMaterialCommonService materialCommonService; + + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询物料公共信息列表 + */ + public List queryList(MaterialCommonDO materialCommonDO) { + return materialCommonService.queryList(materialCommonDO); + } + + + /** + * 新增物料公共信息 + */ + public Boolean insert(MaterialCommonDO materialCommonDO) { + if (ObjectUtil.isNull(materialCommonDO)){ + return true; + } + //设置数据字典键值 + setDataDict(materialCommonDO); + return materialCommonService.insert(materialCommonDO); + } + + /** + * 修改物料公共信息 + */ + public Boolean update(MaterialCommonDO materialCommonDO) { + if (ObjectUtil.isNull(materialCommonDO)){ + return true; + } + //设置数据字典键值 + setDataDict(materialCommonDO); + return materialCommonService.update(materialCommonDO); + } + + /** + * 批量删除物料公共信息 + */ + public Boolean delete(Long[] materialCommonIds) { + return materialCommonService.delete(materialCommonIds); + } + + /** + * 获取物料公共信息详细信息 + */ + public MaterialCommonPO getInfo(Long materialCommonId) + { + return materialCommonService.getInfo(materialCommonId); + } + + /** + * @description 设置数据字典键值 + * @author ZhouGY + * @date 2024/4/7 14:33 + * @param materialCommonDO + */ + private void setDataDict(MaterialCommonDO materialCommonDO){ + //翻译商品温层 + if (StringUtils.isNotBlank(materialCommonDO.getWarmLayer())){ + AjaxResult warmLayerResult = systemServiceFeign.selectListByDictType(DictCode.WARM_LAYER.getCode()); + if(!"200".equals(String.valueOf(warmLayerResult.get("code")))){ + throw new ServiceException("商品温层编码有误"); + } + List warmLayerList = JSON.parseArray(JSONUtil.toJsonStr(warmLayerResult.get("data")), SysDictData.class); + SysDictData warmLayer = warmLayerList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), materialCommonDO.getWarmLayer())).findAny().orElse(null); + if (null == warmLayer) { + throw new ServiceException("商品温层【" + materialCommonDO.getWarmLayer() + "】数据字典不存在 请联系管理员"); + } + materialCommonDO.setWarmLayerName(warmLayer.getDictLabel()); + } + //翻译危险品等级 + if (StringUtils.isNotBlank(materialCommonDO.getDangerLevel())){ + AjaxResult dangerLevelResult = systemServiceFeign.selectListByDictType(DictCode.DANGER_LEVEL.getCode()); + if(!"200".equals(String.valueOf(dangerLevelResult.get("code")))){ + throw new ServiceException("危险品等级编码有误"); + } + List dangerLevelList = JSON.parseArray(JSONUtil.toJsonStr(dangerLevelResult.get("data")), SysDictData.class); + SysDictData dangerLevel = dangerLevelList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), materialCommonDO.getDangerLevel())).findAny().orElse(null); + if (null == dangerLevel) { + throw new ServiceException("危险品等级【" + materialCommonDO.getDangerLevel() + "】数据字典不存在 请联系管理员"); + } + materialCommonDO.setDangerLevelName(dangerLevel.getDictLabel()); + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/entity/MaterialGoodsRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/entity/MaterialGoodsRule.java new file mode 100644 index 000000000..33b3885b6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/entity/MaterialGoodsRule.java @@ -0,0 +1,131 @@ +package com.mhd.wms.domain.materialGoodsRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料商品规则对象 material_goods_rule + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialGoodsRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + @TableId(type = IdType.AUTO) + private Long materialGoodsRuleId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次编码") + @Excel(name = "批次编码") + private String batchCode; + + @ApiModelProperty("批次名称") + @Excel(name = "批次名称") + private String batchName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("上架规则id") + @Excel(name = "上架规则id") + private Long ruleId; + + @ApiModelProperty("上架规则编码") + @Excel(name = "上架规则编码") + private String ruleCode; + + @ApiModelProperty("上架规则名称") + @Excel(name = "上架规则名称") + private String ruleName; + + @ApiModelProperty("上架库位指定规则id") + @Excel(name = "上架库位指定规则id") + private Long specifyRuleId; + + @ApiModelProperty("上架库位指定规则编码") + @Excel(name = "上架库位指定规则编码") + private String specifyRuleCode; + + @ApiModelProperty("上架库位指定规则名称") + @Excel(name = "上架库位指定规则名称") + private String specifyRuleName; + + @ApiModelProperty("周转规则id") + @Excel(name = "周转规则id") + private Long turnoverRuleId; + + @ApiModelProperty("周转规则编码") + @Excel(name = "周转规则编码") + private String turnoverRuleCode; + + @ApiModelProperty("周转规则名称") + @Excel(name = "周转规则名称") + private String turnoverRuleName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/facade/IMaterialGoodsRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/facade/IMaterialGoodsRuleService.java new file mode 100644 index 000000000..bc8082ac2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/facade/IMaterialGoodsRuleService.java @@ -0,0 +1,53 @@ +package com.mhd.wms.domain.materialGoodsRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; + +import java.util.List; + +/** + * 物料商品规则Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialGoodsRuleService extends IService +{ + /** + * 分页查询物料商品规则列表 + */ + public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO); + + /** + * 新增物料商品规则 + */ + public Boolean insert(MaterialGoodsRuleDO materialGoodsRuleDO); + + /** + * 修改物料商品规则 + */ + public Boolean update(MaterialGoodsRuleDO materialGoodsRuleDO); + + /** + * 批量删除物料商品规则 + */ + public Boolean delete(Long[] materialGoodsRuleIds); + + /** + * 根据物流基础信息Id批量删除物料商品规则 + */ + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds); + + + /** + * 查询物料商品规则 + */ + public MaterialGoodsRulePO getInfo(Long materialGoodsRuleId); + + /** + * 根据物流基础信息Id查询物料商品规则 + */ + public MaterialGoodsRulePO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/mapper/MaterialGoodsRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/mapper/MaterialGoodsRuleMapper.java new file mode 100644 index 000000000..efb2d753b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/mapper/MaterialGoodsRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialGoodsRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; + +import java.util.List; + +/** + * 物料商品规则Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialGoodsRuleMapper extends BaseMapper +{ + /** + * 查询物料商品规则列表 + */ + public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/persistence/MaterialGoodsRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/persistence/MaterialGoodsRuleImpl.java new file mode 100644 index 000000000..5d7787fec --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/persistence/MaterialGoodsRuleImpl.java @@ -0,0 +1,132 @@ +package com.mhd.wms.domain.materialGoodsRule.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.mapper.MaterialGoodsRuleMapper; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 物料商品规则Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialGoodsRuleImpl extends ServiceImpl implements IMaterialGoodsRuleService { + @Autowired + private MaterialGoodsRuleMapper materialGoodsRuleMapper; + + /** + * 查询物料商品规则列表 + */ + @Override + public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO) + { + return materialGoodsRuleMapper.queryList(materialGoodsRuleDO); + } + + /** + * 新增物料商品规则 + */ + @Override + public Boolean insert(MaterialGoodsRuleDO materialGoodsRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialGoodsRule materialGoodsRule = new MaterialGoodsRule(); + BeanUtils.copyProperties(materialGoodsRuleDO,materialGoodsRule); + UserPo userPo = loginUser.getUserPo(); + materialGoodsRule.setOrganizationId(userPo.getOrganizationId()); + materialGoodsRule.setOrganizationName(userPo.getOrganizationName()); + materialGoodsRule.setTopOrganizationId(userPo.getTopOrganizationId()); + materialGoodsRule.setCreateBy(userPo.getUserId()); + materialGoodsRule.setCreateByName(userPo.getUserName()); + materialGoodsRule.setCreateTime(new Date()); + return this.save(materialGoodsRule); + } + + /** + * 修改物料商品规则 + */ + @Override + public Boolean update(MaterialGoodsRuleDO materialGoodsRuleDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialGoodsRule materialGoodsRule = new MaterialGoodsRule(); + BeanUtils.copyProperties(materialGoodsRuleDO,materialGoodsRule); + UserPo userPo = loginUser.getUserPo(); + materialGoodsRule.setUpdateBy(userPo.getUpdateBy()); + materialGoodsRule.setUpdateByName(userPo.getUpdateByName()); + materialGoodsRule.setUpdateTime(new Date()); + return this.updateById(materialGoodsRule); + } + + /** + * 批量删除物料商品规则 + */ + @Override + public Boolean delete(Long[] materialGoodsRuleIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List list = new ArrayList<>(); + for (Long id : materialGoodsRuleIds) { + MaterialGoodsRule materialGoodsRule = new MaterialGoodsRule(); + materialGoodsRule.setMaterialGoodsRuleId(id); + materialGoodsRule.setDelFlag(2); + materialGoodsRule.setUpdateBy(loginUser.getUserPo().getUpdateBy()); + materialGoodsRule.setUpdateByName(loginUser.getUserPo().getUpdateByName()); + materialGoodsRule.setUpdateTime(new Date()); + list.add(materialGoodsRule); + } + return this.updateBatchById(list); + } + + /** + * 批量删除物料商品规则 + */ + @Override + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialGoodsRule::getDelFlag,2) + .set(MaterialGoodsRule::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialGoodsRule::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialGoodsRule::getUpdateTime, new Date()) + .in(MaterialGoodsRule::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改物料商品规则 + */ + @Override + public MaterialGoodsRulePO getInfo(Long materialGoodsRuleId) { + MaterialGoodsRule materialGoodsRule = this.getById(materialGoodsRuleId); + MaterialGoodsRulePO materialGoodsRulePO = new MaterialGoodsRulePO(); + BeanUtils.copyProperties(materialGoodsRule,materialGoodsRulePO); + return materialGoodsRulePO; + } + + @Override + public MaterialGoodsRulePO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + MaterialGoodsRule materialGoodsRule = materialGoodsRuleMapper.selectOne(new QueryWrapper().lambda() + .eq(MaterialGoodsRule::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialGoodsRule::getDelFlag, 1)); + if (materialGoodsRule == null){ + return null; + } + MaterialGoodsRulePO materialGoodsRulePO = new MaterialGoodsRulePO(); + BeanUtils.copyProperties(materialGoodsRule,materialGoodsRulePO); + return materialGoodsRulePO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/po/MaterialGoodsRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/po/MaterialGoodsRulePO.java new file mode 100644 index 000000000..91582c585 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/po/MaterialGoodsRulePO.java @@ -0,0 +1,131 @@ +package com.mhd.wms.domain.materialGoodsRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料商品规则对象 material_goods_rule + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "物料商品规则对象", description = "物料商品规则响应对象") +public class MaterialGoodsRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialGoodsRuleId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次编码") + @Excel(name = "批次编码") + private String batchCode; + + @ApiModelProperty("批次名称") + @Excel(name = "批次名称") + private String batchName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("上架规则id") + @Excel(name = "上架规则id") + private Long ruleId; + + @ApiModelProperty("上架规则编码") + @Excel(name = "上架规则编码") + private String ruleCode; + + @ApiModelProperty("上架规则名称") + @Excel(name = "上架规则名称") + private String ruleName; + + @ApiModelProperty("上架库位指定规则id") + @Excel(name = "上架库位指定规则id") + private Long specifyRuleId; + + @ApiModelProperty("上架库位指定规则编码") + @Excel(name = "上架库位指定规则编码") + private String specifyRuleCode; + + @ApiModelProperty("上架库位指定规则名称") + @Excel(name = "上架库位指定规则名称") + private String specifyRuleName; + + @ApiModelProperty("周转规则id") + @Excel(name = "周转规则id") + private Long turnoverRuleId; + + @ApiModelProperty("周转规则编码") + @Excel(name = "周转规则编码") + private String turnoverRuleCode; + + @ApiModelProperty("周转规则名称") + @Excel(name = "周转规则名称") + private String turnoverRuleName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/todo/MaterialGoodsRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/todo/MaterialGoodsRuleDO.java new file mode 100644 index 000000000..b78a9306c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/repository/todo/MaterialGoodsRuleDO.java @@ -0,0 +1,134 @@ +package com.mhd.wms.domain.materialGoodsRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 物料商品规则对象 material_goods_rule + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialGoodsRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialGoodsRuleId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次编码") + @Excel(name = "批次编码") + private String batchCode; + + @ApiModelProperty("批次名称") + @Excel(name = "批次名称") + private String batchName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("上架规则id") + @Excel(name = "上架规则id") + private Long ruleId; + + @ApiModelProperty("上架规则编码") + @Excel(name = "上架规则编码") + private String ruleCode; + + @ApiModelProperty("上架规则名称") + @Excel(name = "上架规则名称") + private String ruleName; + + @ApiModelProperty("上架库位指定规则id") + @Excel(name = "上架库位指定规则id") + private Long specifyRuleId; + + @ApiModelProperty("上架库位指定规则编码") + @Excel(name = "上架库位指定规则编码") + private String specifyRuleCode; + + @ApiModelProperty("上架库位指定规则名称") + @Excel(name = "上架库位指定规则名称") + private String specifyRuleName; + + @ApiModelProperty("周转规则id") + @Excel(name = "周转规则id") + private Long turnoverRuleId; + + @ApiModelProperty("周转规则编码") + @Excel(name = "周转规则编码") + private String turnoverRuleCode; + + @ApiModelProperty("周转规则名称") + @Excel(name = "周转规则名称") + private String turnoverRuleName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/service/MaterialGoodsRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/service/MaterialGoodsRuleDomainService.java new file mode 100644 index 000000000..aea259173 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialGoodsRule/service/MaterialGoodsRuleDomainService.java @@ -0,0 +1,163 @@ +package com.mhd.wms.domain.materialGoodsRule.service; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.BatchFeignPO; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.StorageSectionFeignPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料商品规则 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialGoodsRuleDomainService { + + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询物料商品规则列表 + */ + public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO) { + return materialGoodsRuleService.queryList(materialGoodsRuleDO); + } + + + /** + * 新增物料商品规则 + */ + public Boolean insert(MaterialGoodsRuleDO materialGoodsRuleDO) { + if (ObjectUtil.isNull(materialGoodsRuleDO)){ + return true; + } + //封装批次信息 + batchParam(materialGoodsRuleDO); + //封装库区信息 + storageSectionParam(materialGoodsRuleDO); + //封装库位信息 + storageLocationParam(materialGoodsRuleDO); + return materialGoodsRuleService.insert(materialGoodsRuleDO); + } + + /** + * 修改物料商品规则 + */ + public Boolean update(MaterialGoodsRuleDO materialGoodsRuleDO) { + if (ObjectUtil.isNull(materialGoodsRuleDO)){ + return true; + } + //封装批次信息 + batchParam(materialGoodsRuleDO); + //封装库区信息 + storageSectionParam(materialGoodsRuleDO); + //封装库位信息 + storageLocationParam(materialGoodsRuleDO); + return materialGoodsRuleService.update(materialGoodsRuleDO); + } + + /** + * 批量删除物料商品规则 + */ + public Boolean delete(Long[] materialGoodsRuleIds) { + return materialGoodsRuleService.delete(materialGoodsRuleIds); + } + + /** + * 批量删除物料商品规则 + */ + public Boolean deleteBy(Long[] materialGoodsRuleIds) { + return materialGoodsRuleService.delete(materialGoodsRuleIds); + } + + /** + * 获取物料商品规则详细信息 + */ + public MaterialGoodsRulePO getInfo(Long materialGoodsRuleId) + { + return materialGoodsRuleService.getInfo(materialGoodsRuleId); + } + + /** + * 根据 物料基础信息id 获取物料商品规则详细信息 + */ + public MaterialGoodsRulePO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId) + { + return materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + } + + /** + * @description 封装批次信息 + * @author ZhouGY + * @date 2024/5/9 20:43 + * @param materialGoodsRuleDO + */ + private void batchParam(MaterialGoodsRuleDO materialGoodsRuleDO){ + if (ObjectUtil.isNull(materialGoodsRuleDO.getBatchId())){ + throw new ServiceException("批次信息不能为空"); + } + AjaxResult ajaxResult = systemServiceFeign.getBatchInfoByBatchId(materialGoodsRuleDO.getBatchId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取批次信息失败"); + } + BatchFeignPO batchFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), BatchFeignPO.class); + materialGoodsRuleDO.setBatchCode(batchFeignPO.getBatchCode()); + materialGoodsRuleDO.setBatchName(batchFeignPO.getBatchName()); + } + + /** + * @description 封装上架库区信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param materialGoodsRuleDO + */ + private void storageSectionParam(MaterialGoodsRuleDO materialGoodsRuleDO){ + if (ObjectUtil.isNotNull(materialGoodsRuleDO.getStorageSectionId())){ + AjaxResult ajaxResult = systemServiceFeign.getStorageSectionInfoByStorageSectionId(materialGoodsRuleDO.getStorageSectionId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取上架库区信息失败"); + } + StorageSectionFeignPO storageSectionFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageSectionFeignPO.class); + materialGoodsRuleDO.setStorageCode(storageSectionFeignPO.getStorageCode()); + materialGoodsRuleDO.setStorageName(storageSectionFeignPO.getStorageName()); + } + + } + + /** + * @description 封装上架库位信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param materialGoodsRuleDO + */ + private void storageLocationParam(MaterialGoodsRuleDO materialGoodsRuleDO){ + if (ObjectUtil.isNotNull(materialGoodsRuleDO.getStorageLocationId())){ + AjaxResult ajaxResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(materialGoodsRuleDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageLocationFeignPO.class); + materialGoodsRuleDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + materialGoodsRuleDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java new file mode 100644 index 000000000..81de5c78f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/entity/MaterialInventory.java @@ -0,0 +1,133 @@ +package com.mhd.wms.domain.materialInventory.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventory extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + @TableId(type = IdType.AUTO) + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java new file mode 100644 index 000000000..90e6dc13b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/facade/IMaterialInventoryService.java @@ -0,0 +1,101 @@ +package com.mhd.wms.domain.materialInventory.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryParentDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存Service接口 + * + * @author gen + * @date 2024-05-29 + */ +public interface IMaterialInventoryService extends IService +{ + /** + * 分页查询物料库存列表 + */ + public List queryList(MaterialInventoryDO materialInventoryDO); + + /** + * 新增物料库存 + */ + public Boolean insert(MaterialInventoryDO materialInventoryDO); + + /** + * 修改物料库存 + */ + public Boolean update(MaterialInventoryDO materialInventoryDO); + + /** + * 批量删除物料库存 + */ + public Boolean delete(Long[] materialInventoryIds); + + + /** + * 查询物料库存 + */ + public MaterialInventoryPO getInfo(Long materialInventoryId); + + /** + * @description 修改物料库存信息 + * @author ZhouGY + * @date 2024/5/29 16:31 + * @param materialInventoryDOList + */ + public void updateMaterialInventoryInfo(List materialInventoryDOList, Integer type); + + /** + * @description:库存查询列表 + * @param materialInventoryQueryListDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-16 14:46:10 + */ + List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO); + + /** + * 分页查询物料库存列表 + */ + public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO); + + /** + * @description 增加指定库存 + * @author ZhouGY + * @date 2024/7/21 0:27 + * @param materialInventoryParentDO + * @return Boolean + */ + public Boolean batchAddInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO); + + /** + * @description 减少指定库存 + * @author ZhouGY + * @date 2024/7/21 0:29 + * @param materialInventoryParentDO + * @return Boolean + */ + public Boolean batchSubtractInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO); + + /** + * @description 货主编码和物料编码统计库存数量 + * @author ZhouGY + * @date 2024/7/25 13:44 + * @param shipperCode + * @param materialBaseInfoId + * @return BigDecimal + */ + public BigDecimal sumInventoryQuantityByShipperAndMaterialCode(Long shipperCode, Long materialBaseInfoId); + + MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java new file mode 100644 index 000000000..d576d1d8a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/mapper/MaterialInventoryMapper.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.materialInventory.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryParentDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存Mapper接口 + * + * @author gen + * @date 2024-05-29 + */ +public interface MaterialInventoryMapper extends BaseMapper +{ + /** + * 查询物料库存列表 + */ + public List queryList(MaterialInventoryDO materialInventoryDO); + + /** + * @description 批量增加库存 + * @author ZhouGY + * @date 2024/5/29 16:27 + * @param materialInventoryParentDO + * @return int + */ + public int batchAddInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO); + + /** + * @description 批量减少库存 + * @author ZhouGY + * @date 2024/5/29 16:27 + * @param materialInventoryParentDO + * @return int + */ + public int batchSubtractInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO); + + /** + * @description 批量减少可分配库存 + * @author ZhouGY + * @date 2024/5/29 16:27 + * @param materialInventoryParentDO + * @return int + */ + public int batchSubtractAllocationQuantity(MaterialInventoryParentDO materialInventoryParentDO); + + /** + * 移位仓库物料数据更改 + */ + public int updateMaterial(MaterialInventoryDO materialInventoryDO); + + + /** + * 盘点物料 + */ + public int updatePanDian(MaterialInventoryDO materialInventoryDO); + + /** + * @description:库存查询列表 + * @param materialInventoryQueryListDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-16 14:50:17 + */ + List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO); + + /** + * 查询即时库存库存列表 + */ + public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO); + + + @Select("SELECT SUM(inventory_quantity) FROM material_inventory a LEFT JOIN material_base_info b ON a.material_base_info_id = b.material_base_info_id WHERE a.del_flag = 1 AND b.shipper_id = #{shipperId} AND b.material_base_info_id = #{materialBaseInfoId}") + public BigDecimal sumInventoryQuantityByShipperAndMaterialCode(@Param("shipperId") Long shipperId, @Param("materialBaseInfoId") Long materialBaseInfoId); + + + MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java new file mode 100644 index 000000000..93bb64ce4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/persistence/MaterialInventoryImpl.java @@ -0,0 +1,267 @@ +package com.mhd.wms.domain.materialInventory.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryParentDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; + +/** + * 物料库存Service业务层处理 + * + * @author gen + * @date 2024-05-29 + */ +@Service +public class MaterialInventoryImpl extends ServiceImpl implements IMaterialInventoryService{ + @Autowired + private MaterialInventoryMapper materialInventoryMapper; + + /** + * 查询物料库存列表 + */ + @Override + public List queryList(MaterialInventoryDO materialInventoryDO) + { + return materialInventoryMapper.queryList(materialInventoryDO); + } + + /** + * 新增物料库存 + */ + @Override + public Boolean insert(MaterialInventoryDO materialInventoryDO) { + MaterialInventory materialInventory = new MaterialInventory(); + BeanUtils.copyProperties(materialInventoryDO,materialInventory); + return this.save(materialInventory); + } + + /** + * 修改物料库存 + */ + @Override + public Boolean update(MaterialInventoryDO materialInventoryDO) { + MaterialInventory materialInventory = new MaterialInventory(); + BeanUtils.copyProperties(materialInventoryDO,materialInventory); + return this.updateById(materialInventory); + } + + /** + * 批量删除物料库存 + */ + @Override + public Boolean delete(Long[] materialInventoryIds ) { + List list = new ArrayList<>(); + for (Long id : materialInventoryIds) { + MaterialInventory materialInventory = new MaterialInventory(); + materialInventory.setMaterialInventoryId(id); + materialInventory.setDelFlag(2); + list.add(materialInventory); + } + return this.updateBatchById(list); + } + + /** + * 修改物料库存 + */ + @Override + public MaterialInventoryPO getInfo(Long materialInventoryId) { + MaterialInventory materialInventory = this.getById(materialInventoryId); + MaterialInventoryPO materialInventoryPO = new MaterialInventoryPO(); + BeanUtils.copyProperties(materialInventory,materialInventoryPO); + return materialInventoryPO; + } + + /** + * @description 修改物料库存信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param materialInventoryDOList + * @param type 1-增加 2-减少 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMaterialInventoryInfo(List materialInventoryDOList, Integer type){ + if (type == 1){ + //增加 + addMaterialInventory(materialInventoryDOList); + }else if (type == 2) { + //减少 + subtractMaterialInventory(materialInventoryDOList); + }else { + throw new ServiceException("修改库存指定方式不存在"); + } + } + + /** + * @description:库存查询列表 + * @param materialInventoryQueryListDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-16 14:46:49 + */ + @Override + public List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) { + return materialInventoryMapper.materialQueryList(materialInventoryQueryListDO); + } + + /** + * @description 增加物料库存信息 + * @author ZhouGY + * @date 2024/5/29 16:31 + * @param materialInventoryDOList + */ + @Transactional(rollbackFor = Exception.class) + public void addMaterialInventory(List materialInventoryDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List materialInventoryList = new ArrayList<>(); + List materialInventoryDOListByUpdate = new ArrayList<>(); + Map materialInventoryAddNowMap = new HashMap<>(); + for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) { + //TODO 若数据量升级 后期优化 + MaterialInventory materialInventoryDb = materialInventoryMapper.selectOne(new QueryWrapper().lambda() + .eq(MaterialInventory::getStorageSectionId, materialInventoryDO.getStorageSectionId()) + .eq(MaterialInventory::getMaterialBaseInfoId, materialInventoryDO.getMaterialBaseInfoId()) + .eq(MaterialInventory::getBatchNumber, materialInventoryDO.getBatchNumber()) + .eq(MaterialInventory::getContainerId, materialInventoryDO.getContainerId())); + if (ObjectUtil.isNull(materialInventoryDb)){ + String key = materialInventoryDO.getStorageLocationId() + "_" + materialInventoryDO.getMaterialBaseInfoId() + + "_" + materialInventoryDO.getBatchNumber() + "_" + materialInventoryDO.getMaterialStatusCode(); + if (ObjectUtil.isNotNull(materialInventoryDO.getContainerId())){ + key = key + "_" + materialInventoryDO.getContainerId(); + } + if (ObjectUtil.isNull(materialInventoryAddNowMap.get(key))){ + MaterialInventory materialInventory = new MaterialInventory(); + BeanUtils.copyProperties(materialInventoryDO, materialInventory); + materialInventoryList.add(materialInventory); + materialInventoryAddNowMap.put(key, materialInventory); + }else { + BigDecimal inventoryQuantity = materialInventoryAddNowMap.get(key).getInventoryQuantity().add(materialInventoryDO.getInventoryQuantity()); + BigDecimal allocationQuantity = materialInventoryAddNowMap.get(key).getAllocationQuantity().add(materialInventoryDO.getInventoryQuantity()); + materialInventoryAddNowMap.get(key).setInventoryQuantity(inventoryQuantity); + materialInventoryAddNowMap.get(key).setAllocationQuantity(allocationQuantity); + } + }else { + materialInventoryDO.setMaterialInventoryId(materialInventoryDb.getMaterialInventoryId()); + materialInventoryDOListByUpdate.add(materialInventoryDO); + } + } + if (!CollectionUtils.isEmpty(materialInventoryList)){ + saveBatch(materialInventoryList); + } + if (!CollectionUtils.isEmpty(materialInventoryDOListByUpdate)){ + MaterialInventoryParentDO materialInventoryParentDO = new MaterialInventoryParentDO(); + materialInventoryParentDO.setUpdateBy(loginUser.getUserid()); + materialInventoryParentDO.setUpdateByName(loginUser.getUsername()); + materialInventoryParentDO.setUpdateTime(new Date()); + materialInventoryParentDO.setMaterialInventoryDOList(materialInventoryDOListByUpdate); + materialInventoryMapper.batchAddInventoryQuantity(materialInventoryParentDO); + } + } + + /** + * @description 减少物料库存信息 + * @author ZhouGY + * @date 2024/5/29 16:31 + * @param materialInventoryDOList + */ + @Transactional(rollbackFor = Exception.class) + public void subtractMaterialInventory(List materialInventoryDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List materialInventoryDOListByUpdate = new ArrayList<>(); + for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) { + //TODO 若数据量升级 后期优化 + MaterialInventory materialInventoryDb = materialInventoryMapper.selectOne(new QueryWrapper().lambda() + .eq(MaterialInventory::getMaterialInventoryId, materialInventoryDO.getMaterialInventoryId())); + if (materialInventoryDb == null){ + throw new ServiceException("物料库存信息不存在"); + } + materialInventoryDO.setMaterialInventoryId(materialInventoryDb.getMaterialInventoryId()); + materialInventoryDOListByUpdate.add(materialInventoryDO); + } + if (!CollectionUtils.isEmpty(materialInventoryDOListByUpdate)){ + MaterialInventoryParentDO materialInventoryParentDO = new MaterialInventoryParentDO(); + materialInventoryParentDO.setUpdateBy(loginUser.getUserid()); + materialInventoryParentDO.setUpdateByName(loginUser.getUsername()); + materialInventoryParentDO.setUpdateTime(new Date()); + materialInventoryParentDO.setMaterialInventoryDOList(materialInventoryDOListByUpdate); + materialInventoryMapper.batchSubtractInventoryQuantity(materialInventoryParentDO); + } + } + + @Override + public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) { + return materialInventoryMapper.queryImmediateInventoryList(immediateInventoryDO); + } + + /** + * @description 增加指定库存 + * @author ZhouGY + * @date 2024/7/21 0:27 + * @param materialInventoryParentDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchAddInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO){ + int count = materialInventoryMapper.batchAddInventoryQuantity(materialInventoryParentDO); + if (count == 0){ + throw new ServiceException("增加指定库存失败"); + } + return true; + } + + /** + * @description 减少指定库存 + * @author ZhouGY + * @date 2024/7/21 0:27 + * @param materialInventoryParentDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchSubtractInventoryQuantity(MaterialInventoryParentDO materialInventoryParentDO){ + int count = materialInventoryMapper.batchSubtractInventoryQuantity(materialInventoryParentDO); + if (count == 0){ + throw new ServiceException("减少指定库存失败"); + } + return true; + } + + /** + * @description 货主编码和物料编码统计库存数量 + * @author ZhouGY + * @date 2024/7/25 13:44 + * @param shipperId + * @param materialBaseInfoId + * @return BigDecimal + */ + @Override + public BigDecimal sumInventoryQuantityByShipperAndMaterialCode(Long shipperId, Long materialBaseInfoId){ + return materialInventoryMapper.sumInventoryQuantityByShipperAndMaterialCode(shipperId, materialBaseInfoId); + } + + @Override + public MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO) { + return materialInventoryMapper.selectOneByWhere(materialInventoryDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java new file mode 100644 index 000000000..51483621c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryPO.java @@ -0,0 +1,130 @@ +package com.mhd.wms.domain.materialInventory.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +@ApiModel(value = "物料库存对象", description = "物料库存响应对象") +public class MaterialInventoryPO extends MaterialBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java new file mode 100644 index 000000000..76bcd0f94 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/po/MaterialInventoryQueryListPO.java @@ -0,0 +1,150 @@ +package com.mhd.wms.domain.materialInventory.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 库存查询对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +@ApiModel(value = "库存查询对象", description = "库存查询响应对象") +public class MaterialInventoryQueryListPO extends MaterialBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java new file mode 100644 index 000000000..b379dd24e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryDO.java @@ -0,0 +1,147 @@ +package com.mhd.wms.domain.materialInventory.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryDO extends MaterialBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; + + @ApiModelProperty("物料/库位信息") + @Excel(name = "物料/库位信息") + private String storageInfo; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryParentDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryParentDO.java new file mode 100644 index 000000000..a4b5257a0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryParentDO.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialInventory.repository.todo; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryParentDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存对象") + private List materialInventoryDOList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java new file mode 100644 index 000000000..08ef7a08f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/repository/todo/MaterialInventoryQueryListDO.java @@ -0,0 +1,171 @@ +package com.mhd.wms.domain.materialInventory.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryQueryListDO extends MaterialBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + @ApiModelProperty("查询类型 0-全部查询 1-按货主查询 2-按物料查询 3-按批次查询 4-按库位查询 5-按物料/库位查询 6-按容器查询") + @Excel(name = "查询类型 0-全部查询 1-按货主查询 2-按物料查询 3-按批次查询 4-按库位查询 5-按物料/库位查询 6-按容器查询") + private Integer queryType; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; + + @ApiModelProperty("物料/库位信息") + @Excel(name = "物料/库位信息") + private String storageInfo; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java new file mode 100644 index 000000000..46d5d1d11 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventory/service/MaterialInventoryDomainService.java @@ -0,0 +1,109 @@ +package com.mhd.wms.domain.materialInventory.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存 + * + * @author gen + * @date 2024-05-29 + */ +@Service +@Slf4j +public class MaterialInventoryDomainService { + + @Autowired + private IMaterialInventoryService materialInventoryService; + + + /** + * 分页查询物料库存列表 + */ + public List queryList(MaterialInventoryDO materialInventoryDO) { + return materialInventoryService.queryList(materialInventoryDO); + } + + + /** + * 新增物料库存 + */ + public Boolean insert(MaterialInventoryDO materialInventoryDO) { + + return materialInventoryService.insert(materialInventoryDO); + } + + /** + * 修改物料库存 + */ + public Boolean update(MaterialInventoryDO materialInventoryDO) { + return materialInventoryService.update(materialInventoryDO); + } + + /** + * 批量删除物料库存 + */ + public Boolean delete(Long[] materialInventoryIds) { + return materialInventoryService.delete(materialInventoryIds); + } + + /** + * 获取物料库存详细信息 + */ + public MaterialInventoryPO getInfo(Long materialInventoryId) + { + return materialInventoryService.getInfo(materialInventoryId); + } + + + /** + * 根据库位Id和物料基础信息Id 获取物料库存详细信息 + */ + public BigDecimal getInventoryByStorageLocationIdAndMaterialBaseInfoId(Long storageLocationId, Long materialBaseInfoId) { + MaterialInventory materialInventory = materialInventoryService.getOne(new QueryWrapper().lambda() + .select(MaterialInventory::getAllocationQuantity) + .eq(MaterialInventory::getStorageLocationId, storageLocationId) + .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialInventory::getDelFlag, 1)); + if (materialInventory == null){ + return BigDecimal.ZERO; + } + return materialInventory.getInventoryQuantity(); + } + + /** + * @description:库存查询列表 + * @param materialInventoryQueryListDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-16 14:45:23 + */ + public List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) { + return materialInventoryService.materialQueryList(materialInventoryQueryListDO); + } + + + /** + * 分页查询即时库存列表 + */ + public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) { + return materialInventoryService.queryImmediateInventoryList(immediateInventoryDO); + } + + public MaterialInventoryPO selectOneByWhere(MaterialInventoryDO materialInventoryDO) { + return materialInventoryService.selectOneByWhere(materialInventoryDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/entity/MaterialInventoryWarning.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/entity/MaterialInventoryWarning.java new file mode 100644 index 000000000..f4a277d41 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/entity/MaterialInventoryWarning.java @@ -0,0 +1,117 @@ +package com.mhd.wms.domain.materialInventoryWarning.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料库存预警对象 material_inventory_warning + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialInventoryWarning extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + @TableId(type = IdType.AUTO) + private Long materialInventoryWarningId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库位下限") + @Excel(name = "库位下限") + private BigDecimal minTemperature; + + @ApiModelProperty("库位上限") + @Excel(name = "库位上限") + private BigDecimal maxTemperature; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/facade/IMaterialInventoryWarningService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/facade/IMaterialInventoryWarningService.java new file mode 100644 index 000000000..9fa259b73 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/facade/IMaterialInventoryWarningService.java @@ -0,0 +1,60 @@ +package com.mhd.wms.domain.materialInventoryWarning.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialInventoryWarning.entity.MaterialInventoryWarning; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; + +import java.util.List; + +/** + * 物料库存预警Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialInventoryWarningService extends IService +{ + /** + * 分页查询物料库存预警列表 + */ + public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO); + + /** + * 新增物料库存预警 + */ + public Boolean insert(MaterialInventoryWarningDO materialInventoryWarningDO); + + /** + * 批量新增物料库存预警 + */ + public Boolean batchInsertOrUpdate(List materialInventoryWarningDOList); + + /** + * 修改物料库存预警 + */ + public Boolean update(MaterialInventoryWarningDO materialInventoryWarningDO); + + /** + * 批量删除物料库存预警 + */ + public Boolean delete(Long[] materialInventoryWarningIds); + + /** + * 根据物流基础信息Id批量删除物料库存预警 + */ + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds); + + + /** + * 查询物料库存预警 + */ + public MaterialInventoryWarningPO getInfo(Long materialInventoryWarningId); + + /** + * 根据物流基础信息Id查询物料库存预警 + */ + public List getInfoByMaterialBaseInfoIds(Long materialBaseInfoId); + + List queryAllList(); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/mapper/MaterialInventoryWarningMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/mapper/MaterialInventoryWarningMapper.java new file mode 100644 index 000000000..103074016 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/mapper/MaterialInventoryWarningMapper.java @@ -0,0 +1,24 @@ +package com.mhd.wms.domain.materialInventoryWarning.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialInventoryWarning.entity.MaterialInventoryWarning; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; + +import java.util.List; + +/** + * 物料库存预警Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialInventoryWarningMapper extends BaseMapper +{ + /** + * 查询物料库存预警列表 + */ + public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO); + + List queryAllList(); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/persistence/MaterialInventoryWarningImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/persistence/MaterialInventoryWarningImpl.java new file mode 100644 index 000000000..46e081c29 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/persistence/MaterialInventoryWarningImpl.java @@ -0,0 +1,164 @@ +package com.mhd.wms.domain.materialInventoryWarning.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventoryWarning.entity.MaterialInventoryWarning; +import com.mhd.wms.domain.materialInventoryWarning.repository.facade.IMaterialInventoryWarningService; +import com.mhd.wms.domain.materialInventoryWarning.repository.mapper.MaterialInventoryWarningMapper; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 物料库存预警Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialInventoryWarningImpl extends ServiceImpl implements IMaterialInventoryWarningService { + @Autowired + private MaterialInventoryWarningMapper materialInventoryWarningMapper; + + /** + * 查询物料库存预警列表 + */ + @Override + public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO) + { + return materialInventoryWarningMapper.queryList(materialInventoryWarningDO); + } + + /** + * 新增物料库存预警 + */ + @Override + public Boolean insert(MaterialInventoryWarningDO materialInventoryWarningDO) { + MaterialInventoryWarning materialInventoryWarning = new MaterialInventoryWarning(); + BeanUtils.copyProperties(materialInventoryWarningDO,materialInventoryWarning); + return this.save(materialInventoryWarning); + } + + /** + * 修改物料库存预警 + */ + @Override + public Boolean update(MaterialInventoryWarningDO materialInventoryWarningDO) { + MaterialInventoryWarning materialInventoryWarning = new MaterialInventoryWarning(); + BeanUtils.copyProperties(materialInventoryWarningDO,materialInventoryWarning); + return this.updateById(materialInventoryWarning); + } + + /** + * 批量新增物料库存预警 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsertOrUpdate(List materialInventoryWarningDOList) { + if (CollectionUtils.isEmpty(materialInventoryWarningDOList)){ + return true; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + //标记之前的数据删除 + materialInventoryWarningMapper.update(null, new UpdateWrapper().lambda() + .set(MaterialInventoryWarning::getDelFlag, 2) + .set(MaterialInventoryWarning::getUpdateBy, loginUser.getUserid()) + .set(MaterialInventoryWarning::getUpdateByName, loginUser.getUsername()) + .set(MaterialInventoryWarning::getUpdateTime, new Date()) + .eq(MaterialInventoryWarning::getMaterialBaseInfoId, materialInventoryWarningDOList.get(0).getMaterialBaseInfoId()) + .eq(MaterialInventoryWarning::getDelFlag, 1)); + List materialInventoryWarningList = new ArrayList<>(); + for (MaterialInventoryWarningDO materialInventoryWarningDO : materialInventoryWarningDOList){ + MaterialInventoryWarning materialInventoryWarning = new MaterialInventoryWarning(); + BeanUtils.copyProperties(materialInventoryWarningDO,materialInventoryWarning); + materialInventoryWarning.setOrganizationId(userPo.getOrganizationId()); + materialInventoryWarning.setOrganizationName(userPo.getOrganizationName()); + materialInventoryWarning.setTopOrganizationId(userPo.getTopOrganizationId()); + materialInventoryWarning.setCreateBy(loginUser.getUserid()); + materialInventoryWarning.setCreateByName(loginUser.getUsername()); + materialInventoryWarning.setCreateTime(new Date()); + materialInventoryWarningList.add(materialInventoryWarning); + } + + return this.saveBatch(materialInventoryWarningList); + } + + /** + * 批量删除物料库存预警 + */ + @Override + public Boolean delete(Long[] materialInventoryWarningIds ) { + List list = new ArrayList<>(); + for (Long id : materialInventoryWarningIds) { + MaterialInventoryWarning materialInventoryWarning = new MaterialInventoryWarning(); + materialInventoryWarning.setMaterialInventoryWarningId(id); + materialInventoryWarning.setDelFlag(2); + list.add(materialInventoryWarning); + } + return this.updateBatchById(list); + } + + /** + * 批量删除物料库存预警 + */ + @Override + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialInventoryWarning::getDelFlag,2) + .set(MaterialInventoryWarning::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialInventoryWarning::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialInventoryWarning::getUpdateTime, new Date()) + .in(MaterialInventoryWarning::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改物料库存预警 + */ + @Override + public MaterialInventoryWarningPO getInfo(Long materialInventoryWarningId) { + MaterialInventoryWarning materialInventoryWarning = this.getById(materialInventoryWarningId); + MaterialInventoryWarningPO materialInventoryWarningPO = new MaterialInventoryWarningPO(); + BeanUtils.copyProperties(materialInventoryWarning,materialInventoryWarningPO); + return materialInventoryWarningPO; + } + + /** + * @description 根据物流基础信息Id查询物料库存预警 + * @author ZhouGY + * @date 2024/5/11 18:07 + * @param materialBaseInfoId + * @return List + */ + @Override + public List getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + List materialInventoryWarningList = materialInventoryWarningMapper.selectList(new QueryWrapper().lambda() + .eq(MaterialInventoryWarning::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialInventoryWarning::getDelFlag, 1)); + if (CollectionUtils.isEmpty(materialInventoryWarningList)){ + return null; + } + List materialInventoryWarningPOList = new ArrayList<>(); + BeanUtils.copyProperties(materialInventoryWarningList, materialInventoryWarningPOList); + return materialInventoryWarningPOList; + } + + @Override + public List queryAllList() { + return materialInventoryWarningMapper.queryAllList(); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/po/MaterialInventoryWarningPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/po/MaterialInventoryWarningPO.java new file mode 100644 index 000000000..1e349f81b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/po/MaterialInventoryWarningPO.java @@ -0,0 +1,120 @@ +package com.mhd.wms.domain.materialInventoryWarning.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料库存预警对象 material_inventory_warning + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "物料库存预警对象", description = "物料库存预警响应对象") +public class MaterialInventoryWarningPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialInventoryWarningId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库位下限") + @Excel(name = "库位下限") + private BigDecimal minTemperature; + + @ApiModelProperty("库位上限") + @Excel(name = "库位上限") + private BigDecimal maxTemperature; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("货主ID") + @Excel(name = "货主ID") + private Long shipperId; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/todo/MaterialInventoryWarningDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/todo/MaterialInventoryWarningDO.java new file mode 100644 index 000000000..6680d0cb7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/repository/todo/MaterialInventoryWarningDO.java @@ -0,0 +1,119 @@ +package com.mhd.wms.domain.materialInventoryWarning.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料库存预警对象 material_inventory_warning + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialInventoryWarningDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialInventoryWarningId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库位下限") + @Excel(name = "库位下限") + private BigDecimal minTemperature; + + @ApiModelProperty("库位上限") + @Excel(name = "库位上限") + private BigDecimal maxTemperature; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/service/MaterialInventoryWarningDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/service/MaterialInventoryWarningDomainService.java new file mode 100644 index 000000000..293f90ca8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialInventoryWarning/service/MaterialInventoryWarningDomainService.java @@ -0,0 +1,180 @@ +package com.mhd.wms.domain.materialInventoryWarning.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.domain.StorageSectionFeignPO; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.domain.materialInventoryWarning.repository.facade.IMaterialInventoryWarningService; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料库存预警 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialInventoryWarningDomainService { + + @Autowired + private IMaterialInventoryWarningService materialInventoryWarningService; + + @Autowired + private SystemServiceFeign systemServiceFeign; + + + /** + * 分页查询物料库存预警列表 + */ + public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO) { + return materialInventoryWarningService.queryList(materialInventoryWarningDO); + } + + + /** + * 新增物料库存预警 + */ + public Boolean insert(MaterialInventoryWarningDO materialInventoryWarningDO) { + + return materialInventoryWarningService.insert(materialInventoryWarningDO); + } + + /** + * 修改物料库存预警 + */ + public Boolean update(MaterialInventoryWarningDO materialInventoryWarningDO) { + return materialInventoryWarningService.update(materialInventoryWarningDO); + } + + /** + * 批量删除物料库存预警 + */ + public Boolean delete(Long[] materialInventoryWarningIds) { + return materialInventoryWarningService.delete(materialInventoryWarningIds); + } + + /** + * 获取物料库存预警详细信息 + */ + public MaterialInventoryWarningPO getInfo(Long materialInventoryWarningId) + { + return materialInventoryWarningService.getInfo(materialInventoryWarningId); + } + + /** + * 批量新增物料库存预警 + */ + public Boolean batchInsertOrUpdate(MaterialBaseInfoDO materialBaseInfoDO) { + if (CollectionUtil.isEmpty(materialBaseInfoDO.getMaterialInventoryWarningList())){ + return true; + } + List materialInventoryWarningDOList = materialBaseInfoDO.getMaterialInventoryWarningList(); + for (MaterialInventoryWarningDO materialInventoryWarningDO : materialInventoryWarningDOList){ + materialInventoryWarningDO.setMaterialBaseInfoId(materialBaseInfoDO.getMaterialBaseInfoId()); + //封装仓库信息 + warehouseParam(materialInventoryWarningDO); + //封装库区信息 + storageSectionParam(materialInventoryWarningDO); + //封装库位信息 + storageLocationParam(materialInventoryWarningDO); + //封装补货单位 + packDetailParam(materialBaseInfoDO, materialInventoryWarningDO); + } + return materialInventoryWarningService.batchInsertOrUpdate(materialInventoryWarningDOList); + } + + + + /** + * @description 封装仓库信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param materialInventoryWarningDO + */ + private void warehouseParam(MaterialInventoryWarningDO materialInventoryWarningDO){ + if (ObjectUtil.isNull(materialInventoryWarningDO.getWarehouseId())){ + throw new ServiceException("仓库信息不能为空"); + } + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(materialInventoryWarningDO.getWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + materialInventoryWarningDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode()); + materialInventoryWarningDO.setWarehouseName(warehouseFeignPO.getWarehouseName()); + } + + /** + * @description 封装上架库区信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param materialInventoryWarningDO + */ + private void storageSectionParam(MaterialInventoryWarningDO materialInventoryWarningDO){ + if (ObjectUtil.isNull(materialInventoryWarningDO.getStorageSectionId())){ + throw new ServiceException("库区信息不能为空"); + } + AjaxResult ajaxResult = systemServiceFeign.getStorageSectionInfoByStorageSectionId(materialInventoryWarningDO.getStorageSectionId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取库区信息失败"); + } + StorageSectionFeignPO storageSectionFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageSectionFeignPO.class); + materialInventoryWarningDO.setStorageCode(storageSectionFeignPO.getStorageCode()); + materialInventoryWarningDO.setStorageName(storageSectionFeignPO.getStorageName()); + } + + /** + * @description 封装上架库位信息 + * @author ZhouGY + * @date 2024/5/10 20:28 + * @param materialInventoryWarningDO + */ + private void storageLocationParam(MaterialInventoryWarningDO materialInventoryWarningDO){ + if (ObjectUtil.isNull(materialInventoryWarningDO.getStorageLocationId())){ + throw new ServiceException("库位信息不能为空"); + } + AjaxResult ajaxResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(materialInventoryWarningDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageLocationFeignPO.class); + materialInventoryWarningDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + materialInventoryWarningDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } + + /** + * @description 封装补货单位信息 + * @author ZhouGY + * @date 2024/5/11 15:44 + * @param materialInventoryWarningDO + */ + private void packDetailParam(MaterialBaseInfoDO materialBaseInfoDO, MaterialInventoryWarningDO materialInventoryWarningDO){ + AjaxResult ajaxResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoDO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取补货单位信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), PackDetailFeignPO.class); + materialInventoryWarningDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + materialInventoryWarningDO.setUnitCode(packDetailFeignPO.getUnitCode()); + materialInventoryWarningDO.setName(packDetailFeignPO.getName()); + } + + public List queryAllList() { + return materialInventoryWarningService.queryAllList(); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/entity/MaterialMoreDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/entity/MaterialMoreDetail.java new file mode 100644 index 000000000..1d924f02b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/entity/MaterialMoreDetail.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.materialMoreDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料更多属性明细对象 material_more_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class MaterialMoreDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + @TableId(type = IdType.AUTO) + private Long materialMoreDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次详情id") + @Excel(name = "批次详情id") + private Long batchDetailId; + + @ApiModelProperty("批次标签") + @Excel(name = "批次标签") + private String batchLabels; + + @ApiModelProperty("输入控制: 1-必填 2-可选") + @Excel(name = "输入控制: 1-必填 2-可选") + private String inputControl; + + @ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + @Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + private String attributeFormat; + + @ApiModelProperty("属性选项") + @Excel(name = "属性选项") + private String attributeOption; + + @ApiModelProperty("属性值") + @Excel(name = "属性值") + private String attributeValue; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/facade/IMaterialMoreDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/facade/IMaterialMoreDetailService.java new file mode 100644 index 000000000..26a8e1651 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/facade/IMaterialMoreDetailService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.materialMoreDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; + +import java.util.List; + +/** + * 物料更多属性明细Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IMaterialMoreDetailService extends IService +{ + /** + * 分页查询物料更多属性明细列表 + */ + public List queryList(MaterialMoreDetailDO materialMoreDetailDO); + + /** + * 新增物料更多属性明细 + */ + public Boolean insert(MaterialMoreDetailDO materialMoreDetailDO); + + /** + * 修改物料更多属性明细 + */ + public Boolean update(MaterialMoreDetailDO materialMoreDetailDO); + + /** + * 批量删除物料更多属性明细 + */ + public Boolean delete(Long[] materialMoreDetailIds); + + + /** + * 查询物料更多属性明细 + */ + public MaterialMoreDetailPO getInfo(Long materialMoreDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/mapper/MaterialMoreDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/mapper/MaterialMoreDetailMapper.java new file mode 100644 index 000000000..e246b7dea --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/mapper/MaterialMoreDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialMoreDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; + +import java.util.List; + +/** + * 物料更多属性明细Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface MaterialMoreDetailMapper extends BaseMapper +{ + /** + * 查询物料更多属性明细列表 + */ + public List queryList(MaterialMoreDetailDO materialMoreDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/persistence/IMaterialMoreDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/persistence/IMaterialMoreDetailImpl.java new file mode 100644 index 000000000..f64a8a505 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/persistence/IMaterialMoreDetailImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.materialMoreDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; +import com.mhd.wms.domain.materialMoreDetail.repository.mapper.MaterialMoreDetailMapper; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 物料更多属性明细Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class IMaterialMoreDetailImpl extends ServiceImpl implements IMaterialMoreDetailService { + @Autowired + private MaterialMoreDetailMapper materialMoreDetailMapper; + + /** + * 查询物料更多属性明细列表 + */ + @Override + public List queryList(MaterialMoreDetailDO materialMoreDetailDO) + { + return materialMoreDetailMapper.queryList(materialMoreDetailDO); + } + + /** + * 新增物料更多属性明细 + */ + @Override + public Boolean insert(MaterialMoreDetailDO materialMoreDetailDO) { + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + BeanUtils.copyProperties(materialMoreDetailDO, materialMoreDetail); + return this.save(materialMoreDetail); + } + + /** + * 修改物料更多属性明细 + */ + @Override + public Boolean update(MaterialMoreDetailDO materialMoreDetailDO) { + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + BeanUtils.copyProperties(materialMoreDetailDO, materialMoreDetail); + return this.updateById(materialMoreDetail); + } + + /** + * 批量删除物料更多属性明细 + */ + @Override + public Boolean delete(Long[] materialMoreDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialMoreDetailIds) { + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + materialMoreDetail.setMaterialMoreDetailId(id); + materialMoreDetail.setDelFlag(2); + list.add(materialMoreDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料更多属性明细 + */ + @Override + public MaterialMoreDetailPO getInfo(Long materialMoreDetailId) { + MaterialMoreDetail materialMoreDetail = this.getById(materialMoreDetailId); + MaterialMoreDetailPO materialMoreDetailPO = new MaterialMoreDetailPO(); + BeanUtils.copyProperties(materialMoreDetail, materialMoreDetailPO); + return materialMoreDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/po/MaterialMoreDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/po/MaterialMoreDetailPO.java new file mode 100644 index 000000000..56c71b3e4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/po/MaterialMoreDetailPO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.materialMoreDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 物料更多属性明细对象 material_more_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "物料更多属性明细对象", description = "物料更多属性明细响应对象") +public class MaterialMoreDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialMoreDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次详情id") + @Excel(name = "批次详情id") + private Long batchDetailId; + + @ApiModelProperty("批次标签") + @Excel(name = "批次标签") + private String batchLabels; + + @ApiModelProperty("输入控制: 1-必填 2-可选") + @Excel(name = "输入控制: 1-必填 2-可选") + private String inputControl; + + @ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + @Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + private String attributeFormat; + + @ApiModelProperty("属性选项") + @Excel(name = "属性选项") + private String attributeOption; + + @ApiModelProperty("属性值") + @Excel(name = "属性值") + private String attributeValue; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/todo/MaterialMoreDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/todo/MaterialMoreDetailDO.java new file mode 100644 index 000000000..14c72011f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/repository/todo/MaterialMoreDetailDO.java @@ -0,0 +1,86 @@ +package com.mhd.wms.domain.materialMoreDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 物料更多属性明细对象 material_more_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class MaterialMoreDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialMoreDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次详情id") + @Excel(name = "批次详情id") + private Long batchDetailId; + + @ApiModelProperty("批次标签") + @Excel(name = "批次标签") + private String batchLabels; + + @ApiModelProperty("输入控制: 1-必填 2-可选") + @Excel(name = "输入控制: 1-必填 2-可选") + private String inputControl; + + @ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + @Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + private String attributeFormat; + + @ApiModelProperty("属性选项") + @Excel(name = "属性选项") + private String attributeOption; + + @ApiModelProperty("属性值") + @Excel(name = "属性值") + private String attributeValue; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private List orderNumbers; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/service/MaterialMoreDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/service/MaterialMoreDetailDomainService.java new file mode 100644 index 000000000..88c187e82 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialMoreDetail/service/MaterialMoreDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.materialMoreDetail.service; + +import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料更多属性明细 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class MaterialMoreDetailDomainService { + + @Autowired + private IMaterialMoreDetailService IMaterialMoreDetailService; + + + /** + * 分页查询物料更多属性明细列表 + */ + public List queryList(MaterialMoreDetailDO materialMoreDetailDO) { + return IMaterialMoreDetailService.queryList(materialMoreDetailDO); + } + + + /** + * 新增物料更多属性明细 + */ + public Boolean insert(MaterialMoreDetailDO materialMoreDetailDO) { + + return IMaterialMoreDetailService.insert(materialMoreDetailDO); + } + + /** + * 修改物料更多属性明细 + */ + public Boolean update(MaterialMoreDetailDO materialMoreDetailDO) { + return IMaterialMoreDetailService.update(materialMoreDetailDO); + } + + /** + * 批量删除物料更多属性明细 + */ + public Boolean delete(Long[] materialMoreDetailIds) { + return IMaterialMoreDetailService.delete(materialMoreDetailIds); + } + + /** + * 获取物料更多属性明细详细信息 + */ + public MaterialMoreDetailPO getInfo(Long materialMoreDetailId) + { + return IMaterialMoreDetailService.getInfo(materialMoreDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/entity/MaterialWarehouseControl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/entity/MaterialWarehouseControl.java new file mode 100644 index 000000000..e2fbc7ddc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/entity/MaterialWarehouseControl.java @@ -0,0 +1,97 @@ +package com.mhd.wms.domain.materialWarehouseControl.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 仓库控制信息对象 material_warehouse_control + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialWarehouseControl extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + @TableId(type = IdType.AUTO) + private Long materialWarehouseControlId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否效期控制: 1-是 2-否") + @Excel(name = "是否效期控制: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("周期类型: 1-生产日期 2-失效日期") + @Excel(name = "周期类型: 1-生产日期 2-失效日期") + private Integer cycleType; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer inValidityPeriod; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer outValidityPeriod; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("ABC分类:A-A类 B-B类 C-C类") + @Excel(name = "ABC分类:A-A类 B-B类 C-C类") + private String classify; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/facade/IMaterialWarehouseControlService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/facade/IMaterialWarehouseControlService.java new file mode 100644 index 000000000..342854a46 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/facade/IMaterialWarehouseControlService.java @@ -0,0 +1,53 @@ +package com.mhd.wms.domain.materialWarehouseControl.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialWarehouseControl.entity.MaterialWarehouseControl; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; + +import java.util.List; + +/** + * 仓库控制信息Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface IMaterialWarehouseControlService extends IService +{ + /** + * 分页查询仓库控制信息列表 + */ + public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO); + + /** + * 新增仓库控制信息 + */ + public Boolean insert(MaterialWarehouseControlDO materialWarehouseControlDO); + + /** + * 修改仓库控制信息 + */ + public Boolean update(MaterialWarehouseControlDO materialWarehouseControlDO); + + /** + * 批量删除仓库控制信息 + */ + public Boolean delete(Long[] materialWarehouseControlIds); + + /** + * 根据物流基础信息Id批量删除仓库控制信息 + */ + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds); + + + /** + * 查询仓库控制信息 + */ + public MaterialWarehouseControlPO getInfo(Long materialWarehouseControlId); + + /** + * 根据物流基础信息Id查询仓库控制信息 + */ + public MaterialWarehouseControlPO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/mapper/MaterialWarehouseControlMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/mapper/MaterialWarehouseControlMapper.java new file mode 100644 index 000000000..bcf5ad5f4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/mapper/MaterialWarehouseControlMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.materialWarehouseControl.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialWarehouseControl.entity.MaterialWarehouseControl; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; + +import java.util.List; + +/** + * 仓库控制信息Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface MaterialWarehouseControlMapper extends BaseMapper +{ + /** + * 查询仓库控制信息列表 + */ + public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/persistence/MaterialWarehouseControlImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/persistence/MaterialWarehouseControlImpl.java new file mode 100644 index 000000000..8f8109241 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/persistence/MaterialWarehouseControlImpl.java @@ -0,0 +1,140 @@ +package com.mhd.wms.domain.materialWarehouseControl.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialWarehouseControl.entity.MaterialWarehouseControl; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.mapper.MaterialWarehouseControlMapper; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 仓库控制信息Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class MaterialWarehouseControlImpl extends ServiceImpl implements IMaterialWarehouseControlService { + @Autowired + private MaterialWarehouseControlMapper materialWarehouseControlMapper; + + /** + * 查询仓库控制信息列表 + */ + @Override + public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO) + { + return materialWarehouseControlMapper.queryList(materialWarehouseControlDO); + } + + /** + * 新增仓库控制信息 + */ + @Override + public Boolean insert(MaterialWarehouseControlDO materialWarehouseControlDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialWarehouseControl materialWarehouseControl = new MaterialWarehouseControl(); + BeanUtils.copyProperties(materialWarehouseControlDO,materialWarehouseControl); + UserPo userPo = loginUser.getUserPo(); + materialWarehouseControl.setOrganizationId(userPo.getOrganizationId()); + materialWarehouseControl.setOrganizationName(userPo.getOrganizationName()); + materialWarehouseControl.setTopOrganizationId(userPo.getTopOrganizationId()); + materialWarehouseControl.setCreateBy(userPo.getUserId()); + materialWarehouseControl.setCreateByName(userPo.getUserName()); + materialWarehouseControl.setCreateTime(new Date()); + return this.save(materialWarehouseControl); + } + + /** + * 修改仓库控制信息 + */ + @Override + public Boolean update(MaterialWarehouseControlDO materialWarehouseControlDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + MaterialWarehouseControl materialWarehouseControl = new MaterialWarehouseControl(); + BeanUtils.copyProperties(materialWarehouseControlDO,materialWarehouseControl); + UserPo userPo = loginUser.getUserPo(); + materialWarehouseControl.setUpdateBy(userPo.getUpdateBy()); + materialWarehouseControl.setUpdateByName(userPo.getUpdateByName()); + materialWarehouseControl.setUpdateTime(new Date()); + return this.updateById(materialWarehouseControl); + } + + /** + * 批量删除仓库控制信息 + */ + @Override + public Boolean delete(Long[] materialWarehouseControlIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + List list = new ArrayList<>(); + for (Long id : materialWarehouseControlIds) { + MaterialWarehouseControl materialWarehouseControl = new MaterialWarehouseControl(); + materialWarehouseControl.setMaterialWarehouseControlId(id); + materialWarehouseControl.setDelFlag(2); + materialWarehouseControl.setUpdateBy(userPo.getUpdateBy()); + materialWarehouseControl.setUpdateByName(userPo.getUpdateByName()); + materialWarehouseControl.setUpdateTime(new Date()); + list.add(materialWarehouseControl); + } + return this.updateBatchById(list); + } + + /** + * 批量删除仓库控制信息 + */ + @Override + public Boolean deleteByMaterialBaseInfoIds(Long[] materialBaseInfoIds ) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return this.update(null, new UpdateWrapper().lambda() + .set(MaterialWarehouseControl::getDelFlag, 2) + .set(MaterialWarehouseControl::getUpdateBy, loginUser.getUserPo().getUserId()) + .set(MaterialWarehouseControl::getUpdateByName, loginUser.getUserPo().getUserName()) + .set(MaterialWarehouseControl::getUpdateTime, new Date()) + .in(MaterialWarehouseControl::getMaterialBaseInfoId, Arrays.asList(materialBaseInfoIds))); + } + + /** + * 修改仓库控制信息 + */ + @Override + public MaterialWarehouseControlPO getInfo(Long materialWarehouseControlId) { + MaterialWarehouseControl materialWarehouseControl = this.getById(materialWarehouseControlId); + MaterialWarehouseControlPO materialWarehouseControlPO = new MaterialWarehouseControlPO(); + BeanUtils.copyProperties(materialWarehouseControl,materialWarehouseControlPO); + return materialWarehouseControlPO; + } + + /** + * @description 根据物料基础信息id 获取仓库控制信息 + * @author ZhouGY + * @date 2024/5/11 18:02 + * @param materialBaseInfoId + * @return MaterialWarehouseControlPO + */ + @Override + public MaterialWarehouseControlPO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + MaterialWarehouseControl materialWarehouseControl = materialWarehouseControlMapper.selectOne(new QueryWrapper().lambda() + .eq(MaterialWarehouseControl::getMaterialBaseInfoId, materialBaseInfoId) + .eq(MaterialWarehouseControl::getDelFlag, 1)); + if (materialWarehouseControl == null){ + return null; + } + MaterialWarehouseControlPO materialWarehouseControlPO = new MaterialWarehouseControlPO(); + BeanUtils.copyProperties(materialWarehouseControl, materialWarehouseControlPO); + return materialWarehouseControlPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/po/MaterialWarehouseControlPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/po/MaterialWarehouseControlPO.java new file mode 100644 index 000000000..4bfffb176 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/po/MaterialWarehouseControlPO.java @@ -0,0 +1,97 @@ +package com.mhd.wms.domain.materialWarehouseControl.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 仓库控制信息对象 material_warehouse_control + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "仓库控制信息对象", description = "仓库控制信息响应对象") +public class MaterialWarehouseControlPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialWarehouseControlId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否效期控制: 1-是 2-否") + @Excel(name = "是否效期控制: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("周期类型: 1-生产日期 2-失效日期") + @Excel(name = "周期类型: 1-生产日期 2-失效日期") + private Integer cycleType; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer inValidityPeriod; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer outValidityPeriod; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("ABC分类:A-A类 B-B类 C-C类") + @Excel(name = "ABC分类:A-A类 B-B类 C-C类") + private String classify; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/todo/MaterialWarehouseControlDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/todo/MaterialWarehouseControlDO.java new file mode 100644 index 000000000..7a2bdc174 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/repository/todo/MaterialWarehouseControlDO.java @@ -0,0 +1,99 @@ +package com.mhd.wms.domain.materialWarehouseControl.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 仓库控制信息对象 material_warehouse_control + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialWarehouseControlDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialWarehouseControlId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否效期控制: 1-是 2-否") + @Excel(name = "是否效期控制: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("周期类型: 1-生产日期 2-失效日期") + @Excel(name = "周期类型: 1-生产日期 2-失效日期") + private Integer cycleType; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer inValidityPeriod; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer outValidityPeriod; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("ABC分类:A-A类 B-B类 C-C类") + @Excel(name = "ABC分类:A-A类 B-B类 C-C类") + private String classify; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/service/MaterialWarehouseControlDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/service/MaterialWarehouseControlDomainService.java new file mode 100644 index 000000000..dacc89367 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/materialWarehouseControl/service/MaterialWarehouseControlDomainService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.materialWarehouseControl.service; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 仓库控制信息 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class MaterialWarehouseControlDomainService { + + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + + + /** + * 分页查询仓库控制信息列表 + */ + public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO) { + return materialWarehouseControlService.queryList(materialWarehouseControlDO); + } + + + /** + * 新增仓库控制信息 + */ + public Boolean insert(MaterialWarehouseControlDO materialWarehouseControlDO) { + if (ObjectUtil.isNull(materialWarehouseControlDO)){ + return true; + } + return materialWarehouseControlService.insert(materialWarehouseControlDO); + } + + /** + * 修改仓库控制信息 + */ + public Boolean update(MaterialWarehouseControlDO materialWarehouseControlDO) { + if (ObjectUtil.isNull(materialWarehouseControlDO)){ + return true; + } + return materialWarehouseControlService.update(materialWarehouseControlDO); + } + + /** + * 批量删除仓库控制信息 + */ + public Boolean delete(Long[] materialWarehouseControlIds) { + return materialWarehouseControlService.delete(materialWarehouseControlIds); + } + + /** + * 获取仓库控制信息详细信息 + */ + public MaterialWarehouseControlPO getInfo(Long materialWarehouseControlId) + { + return materialWarehouseControlService.getInfo(materialWarehouseControlId); + } + + /** + * @description 根据物料基础信息id 获取仓库控制信息 + * @author ZhouGY + * @date 2024/5/11 18:02 + * @param materialBaseInfoId + * @return MaterialWarehouseControlPO + */ + public MaterialWarehouseControlPO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId){ + return materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/entity/MobilizeManage.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/entity/MobilizeManage.java new file mode 100644 index 000000000..3ae2f9efe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/entity/MobilizeManage.java @@ -0,0 +1,142 @@ +package com.mhd.wms.domain.mobilizeManage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 调拨管理对象 mobilize_manage + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class MobilizeManage extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨管理id") + @TableId(type = IdType.AUTO) + private Long mobilizeManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨物料种数") + @Excel(name = "调拨物料种数") + private Long mobilizeMaterialQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("调入仓库id") + @Excel(name = "调入仓库id") + private Long inWarehouseId; + + @ApiModelProperty("调入仓库编码") + @Excel(name = "调入仓库编码") + private String inWarehouseCode; + + @ApiModelProperty("调入仓库名称") + @Excel(name = "调入仓库名称") + private String inWarehouseName; + + @ApiModelProperty("调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("调拨审核备注") + @Excel(name = "调拨审核备注") + private String auditRemark; + + @ApiModelProperty("调拨审核人") + @Excel(name = "调拨审核人") + private Long auditBy; + + @ApiModelProperty("调拨审核人姓名") + @Excel(name = "调拨审核人姓名") + private String auditByName; + + @ApiModelProperty("调拨审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "调拨审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调出仓库id") + @Excel(name = "调出仓库id") + private Long outWarehouseId; + + @ApiModelProperty("调出仓库编码") + @Excel(name = "调出仓库编码") + private String outWarehouseCode; + + @ApiModelProperty("调出仓库名称") + @Excel(name = "调出仓库名称") + private String outWarehouseName; + + @ApiModelProperty(name = "调拨类型") + private String mobilizeType; + + @ApiModelProperty(name = "调拨类型编码") + private String mobilizeTypeCode; + + @ApiModelProperty("调拨申请日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "调拨申请日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date mobilizeApplicationDate; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/facade/IMobilizeManageService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/facade/IMobilizeManageService.java new file mode 100644 index 000000000..c43bde418 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/facade/IMobilizeManageService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.mobilizeManage.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; + +import java.util.List; + +/** + * 调拨管理Service接口 + * + * @author gen + * @date 2024-07-08 + */ +public interface IMobilizeManageService extends IService +{ + /** + * 分页查询调拨管理列表 + */ + public List queryList(MobilizeManageDO mobilizeManageDO); + + /** + * 新增调拨管理 + */ + public Boolean insert(MobilizeManageDO mobilizeManageDO); + + /** + * 修改调拨管理 + */ + public Boolean update(MobilizeManageDO mobilizeManageDO); + + /** + * 批量删除调拨管理 + */ + public Boolean delete(Long[] mobilizeManageIds); + + + /** + * 查询调拨管理 + */ + public MobilizeManagePO getInfo(Long mobilizeManageId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/mapper/MobilizeManageMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/mapper/MobilizeManageMapper.java new file mode 100644 index 000000000..90ec50c69 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/mapper/MobilizeManageMapper.java @@ -0,0 +1,28 @@ +package com.mhd.wms.domain.mobilizeManage.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; + +import java.util.List; + +/** + * 调拨管理Mapper接口 + * + * @author gen + * @date 2024-07-08 + */ +public interface MobilizeManageMapper extends BaseMapper +{ + /** + * 查询调拨管理列表 + */ + public List queryList(MobilizeManageDO mobilizeManageDO); + + /** + * 修改种类数 + */ + public Integer updateQuantity(MobilizeManage mobilizeManage); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/persistence/MobilizeManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/persistence/MobilizeManageImpl.java new file mode 100644 index 000000000..ce305eff8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/persistence/MobilizeManageImpl.java @@ -0,0 +1,82 @@ +package com.mhd.wms.domain.mobilizeManage.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.facade.IMobilizeManageService; +import com.mhd.wms.domain.mobilizeManage.repository.mapper.MobilizeManageMapper; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 调拨管理Service业务层处理 + * + * @author gen + * @date 2024-07-08 + */ +@Service +public class MobilizeManageImpl extends ServiceImpl implements IMobilizeManageService { + @Autowired + private MobilizeManageMapper mobilizeManageMapper; + + /** + * 查询调拨管理列表 + */ + @Override + public List queryList(MobilizeManageDO mobilizeManageDO) + { + return mobilizeManageMapper.queryList(mobilizeManageDO); + } + + /** + * 新增调拨管理 + */ + @Override + public Boolean insert(MobilizeManageDO mobilizeManageDO) { + MobilizeManage mobilizeManage = new MobilizeManage(); + BeanUtils.copyProperties(mobilizeManageDO,mobilizeManage); + return this.save(mobilizeManage); + } + + /** + * 修改调拨管理 + */ + @Override + public Boolean update(MobilizeManageDO mobilizeManageDO) { + MobilizeManage mobilizeManage = new MobilizeManage(); + BeanUtils.copyProperties(mobilizeManageDO,mobilizeManage); + return this.updateById(mobilizeManage); + } + + /** + * 批量删除调拨管理 + */ + @Override + public Boolean delete(Long[] mobilizeManageIds ) { + List list = new ArrayList<>(); + for (Long id : mobilizeManageIds) { + MobilizeManage mobilizeManage = new MobilizeManage(); + mobilizeManage.setMobilizeManageId(id); + mobilizeManage.setDelFlag(2); + list.add(mobilizeManage); + } + return this.updateBatchById(list); + } + + /** + * 修改调拨管理 + */ + @Override + public MobilizeManagePO getInfo(Long mobilizeManageId) { + MobilizeManage mobilizeManage = this.getById(mobilizeManageId); + MobilizeManagePO mobilizeManagePO = new MobilizeManagePO(); + BeanUtils.copyProperties(mobilizeManage,mobilizeManagePO); + + return mobilizeManagePO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/po/MobilizeManagePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/po/MobilizeManagePO.java new file mode 100644 index 000000000..bbec60503 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/po/MobilizeManagePO.java @@ -0,0 +1,148 @@ +package com.mhd.wms.domain.mobilizeManage.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.mobilizeManageDetail.entity.MobilizeManageDetail; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 调拨管理对象 mobilize_manage + * + * @author gen + * @date 2024-07-19 + */ + +@Data +@ApiModel(value = "调拨管理对象", description = "调拨管理响应对象") +public class MobilizeManagePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨管理id") + private Long mobilizeManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-已完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-已完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨物料种数") + @Excel(name = "调拨物料种数") + private Long mobilizeMaterialQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("调入仓库id") + @Excel(name = "调入仓库id") + private Long inWarehouseId; + + @ApiModelProperty("调入仓库编码") + @Excel(name = "调入仓库编码") + private String inWarehouseCode; + + @ApiModelProperty("调入仓库名称") + @Excel(name = "调入仓库名称") + private String inWarehouseName; + + @ApiModelProperty("调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("调拨审核备注") + @Excel(name = "调拨审核备注") + private String auditRemark; + + @ApiModelProperty("调拨审核人") + @Excel(name = "调拨审核人") + private Long auditBy; + + @ApiModelProperty("调拨审核人姓名") + @Excel(name = "调拨审核人姓名") + private String auditByName; + + @ApiModelProperty("调拨审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "调拨审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调出仓库id") + @Excel(name = "调出仓库id") + private Long outWarehouseId; + + @ApiModelProperty("调出仓库编码") + @Excel(name = "调出仓库编码") + private String outWarehouseCode; + + @ApiModelProperty("调出仓库名称") + @Excel(name = "调出仓库名称") + private String outWarehouseName; + + @ApiModelProperty(name = "调拨管理详情list") + private List mobilizeManageDetailList; + + @ApiModelProperty(name = "调拨类型") + private String mobilizeType; + + @ApiModelProperty(name = "调拨类型编码") + private String mobilizeTypeCode; + + @ApiModelProperty("调拨申请日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "调拨申请日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date mobilizeApplicationDate; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/todo/MobilizeManageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/todo/MobilizeManageDO.java new file mode 100644 index 000000000..f5e26de2b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/repository/todo/MobilizeManageDO.java @@ -0,0 +1,155 @@ +package com.mhd.wms.domain.mobilizeManage.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 调拨管理对象 mobilize_manage + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class MobilizeManageDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨管理id") + private Long mobilizeManageId; + + @ApiModelProperty("调拨管理id") + private List mobilizeManageIds; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨物料种数") + @Excel(name = "调拨物料种数") + private Long mobilizeMaterialQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("调入仓库id") + @Excel(name = "调入仓库id") + private Long inWarehouseId; + + @ApiModelProperty("调入仓库编码") + @Excel(name = "调入仓库编码") + private String inWarehouseCode; + + @ApiModelProperty("调入仓库名称") + @Excel(name = "调入仓库名称") + private String inWarehouseName; + + @ApiModelProperty("调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("调拨审核备注") + @Excel(name = "调拨审核备注") + private String auditRemark; + + @ApiModelProperty("调拨审核人") + @Excel(name = "调拨审核人") + private Long auditBy; + + @ApiModelProperty("调拨审核人姓名") + @Excel(name = "调拨审核人姓名") + private String auditByName; + + @ApiModelProperty("调拨审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "调拨审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调出仓库id") + @Excel(name = "调出仓库id") + private Long outWarehouseId; + + @ApiModelProperty("调出仓库编码") + @Excel(name = "调出仓库编码") + private String outWarehouseCode; + + @ApiModelProperty("调出仓库名称") + @Excel(name = "调出仓库名称") + private String outWarehouseName; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "调拨管理详情list") + private List mobilizeManageDetailDOList; + + @ApiModelProperty(name = "调拨类型") + private String mobilizeType; + + @ApiModelProperty(name = "调拨类型编码") + private String mobilizeTypeCode; + + @ApiModelProperty("调拨申请日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "调拨申请日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date mobilizeApplicationDate; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/service/MobilizeManageDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/service/MobilizeManageDomainService.java new file mode 100644 index 000000000..35f2d2a48 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManage/service/MobilizeManageDomainService.java @@ -0,0 +1,367 @@ +package com.mhd.wms.domain.mobilizeManage.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.enums.DictCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.domain.WarehouseFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.facade.IMobilizeManageService; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; +import com.mhd.wms.domain.mobilizeManageDetail.entity.MobilizeManageDetail; +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 调拨管理 + * + * @author gen + * @date 2024-07-08 + */ +@Service +@Slf4j +public class MobilizeManageDomainService { + + @Autowired + private IMobilizeManageService mobilizeManageService; + @Autowired + private IMobilizeManageDetailService iMobilizeManageDetailService; + @Autowired + private StockOutOrderDomainService stockOutOrderDomainService; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询调拨管理列表 + */ + public List queryList(MobilizeManageDO mobilizeManageDO) { + return mobilizeManageService.queryList(mobilizeManageDO); + } + + + /** + * 新增调拨管理 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean insert(MobilizeManageDO mobilizeManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //设置仓库 + setWarehouseInfoIn(mobilizeManageDO); + setWarehouseInfoOut(mobilizeManageDO); + + //设置数据字典键值 + setDataDict(mobilizeManageDO); + mobilizeManageDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + mobilizeManageDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + mobilizeManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + mobilizeManageDO.setMobilizeCode(OrderSequence.getOrderCode("DB")); + mobilizeManageDO.setMobilizeStatus(1); + mobilizeManageDO.setAuditStatus(1); + List mobilizeManageDetailDOList = mobilizeManageDO.getMobilizeManageDetailDOList(); + if (CollectionUtil.isEmpty(mobilizeManageDetailDOList)){ + throw new ServiceException("调拨单物料详情不能为空"); + } + BigDecimal mobilizeNumber = mobilizeManageDetailDOList.stream().map(MobilizeManageDetailDO::getMobilizeNumber) + .filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add); + mobilizeManageDO.setMobilizeNumber(mobilizeNumber); + for (MobilizeManageDetailDO mobilizeManageDetailDO : mobilizeManageDetailDOList){ + //设置物料信息 + setMaterialDetailInfo(mobilizeManageDetailDO); + mobilizeManageDetailDO.setMobilizeCode(mobilizeManageDO.getMobilizeCode()); + mobilizeManageDetailDO.setQuantity(mobilizeManageDetailDO.getMobilizeNumber()); + iMobilizeManageDetailService.insert(mobilizeManageDetailDO); + } + return mobilizeManageService.insert(mobilizeManageDO); + } + + /** + * 修改调拨管理 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean update(MobilizeManageDO mobilizeManageDO) throws Exception { + MobilizeManage mobilizeManage=mobilizeManageService.getById(mobilizeManageDO.getMobilizeManageId()); + if(ObjectUtil.isNotNull(mobilizeManage)&&mobilizeManage.getAuditStatus()==3){ + throw new SecurityException("该调度单已经审核通过, 不允许修改"); + } + setWarehouseInfoIn(mobilizeManageDO); + setWarehouseInfoOut(mobilizeManageDO); + + //设置数据字典键值 + setDataDict(mobilizeManageDO); + + List mobilizeManageDetailDOList = mobilizeManageDO.getMobilizeManageDetailDOList(); + if (CollectionUtil.isEmpty(mobilizeManageDetailDOList)){ + throw new ServiceException("调拨单物料详情不能为空"); + } + + //删除原来的明细 + List mobilizeManageDetailList = iMobilizeManageDetailService.list(new QueryWrapper() + .lambda().eq(MobilizeManageDetail::getMobilizeCode, mobilizeManage.getMobilizeCode())); + Long [] MobilizeMaterialDetailIds=new Long[mobilizeManageDetailList.size()]; + for(int i=0;i mobilizeManageList = mobilizeManageService.listByIds(Arrays.asList(mobilizeManageIds)); + List mobilizeCode = mobilizeManageList.stream().map(MobilizeManage::getMobilizeCode).collect(Collectors.toList()); + Boolean istrue= mobilizeManageService.delete(mobilizeManageIds); + if(istrue){ + //同步删除调拨单明细 + List mobilizeManageDetailDbList = iMobilizeManageDetailService.list(new QueryWrapper() + .lambda().in(MobilizeManageDetail::getMobilizeCode, mobilizeCode)); + Long [] mobilizeMaterialDetailIds = new Long[mobilizeManageDetailDbList.size()]; + for(int i=0;i mobilizeManageDetailList=iMobilizeManageDetailService.list(new QueryWrapper() + .lambda().eq(MobilizeManageDetail::getMobilizeCode,mobilizeManagePO.getMobilizeCode())); + mobilizeManagePO.setMobilizeManageDetailList(mobilizeManageDetailList); + return mobilizeManagePO; + } + + /** + * @description 审核 调拨单 + * @author ZhouGY + * @date 2024/7/20 18:32 + * @param mobilizeManageDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean auditMobilizeManage(MobilizeManageDO mobilizeManageDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List mobilizeManageIds = mobilizeManageDO.getMobilizeManageIds(); + boolean b = false; + for (Long mobilizeManageId : mobilizeManageIds) { + MobilizeManagePO mobilizeManagePO = mobilizeManageService.getInfo(mobilizeManageId); + if (ObjectUtil.isNull(mobilizeManagePO)){ + throw new ServiceException("调拨单不存在"); + } + if (3 == mobilizeManagePO.getAuditStatus()){ + throw new ServiceException("调拨单已审核通过,请勿重复审核"); + } + if (3 == mobilizeManageDO.getAuditStatus()){ + //审核通过 生成出库单 + genStockOutOrder(mobilizeManagePO); + } + MobilizeManage mobilizeManageByUpdate = new MobilizeManage(); + mobilizeManageByUpdate.setMobilizeManageId(mobilizeManagePO.getMobilizeManageId()); + mobilizeManageByUpdate.setAuditStatus(mobilizeManageDO.getAuditStatus()); + if (mobilizeManageDO.getAuditStatus() == 3){ + //审核通过修改主状态 + mobilizeManageByUpdate.setMobilizeStatus(2); + } + mobilizeManageByUpdate.setAuditBy(loginUser.getUserid()); + mobilizeManageByUpdate.setAuditByName(loginUser.getUsername()); + mobilizeManageByUpdate.setAuditRemark(mobilizeManageDO.getAuditRemark()); + mobilizeManageByUpdate.setUpdateBy(loginUser.getUserid()); + mobilizeManageByUpdate.setUpdateByName(loginUser.getUsername()); + mobilizeManageByUpdate.setUpdateTime(new Date()); + b = mobilizeManageService.updateById(mobilizeManageByUpdate); + } + + return b; + } + + /** + * @description 审核通过 生成出库单 + * @author ZhouGY + * @date 2024/7/20 18:47 + * @param mobilizeManagePO + */ + @Transactional(rollbackFor = Exception.class) + public void genStockOutOrder(MobilizeManagePO mobilizeManagePO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + MobilizeManageDetailDO mobilizeManageDetailDOQuery = new MobilizeManageDetailDO(); + mobilizeManageDetailDOQuery.setMobilizeCode(mobilizeManagePO.getMobilizeCode()); + List mobilizeManageDetailPODbList = iMobilizeManageDetailService.queryList(mobilizeManageDetailDOQuery); + Map> mobilizeManageDetailDbMap = mobilizeManageDetailPODbList.stream().collect(Collectors.groupingBy(p -> p + "," + p.getShipperCode())); + List stockOutOrderDOList = new ArrayList<>(); + for (Map.Entry> map : mobilizeManageDetailDbMap.entrySet()){ + List mobilizeManageDetailPOList = map.getValue(); + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + stockOutOrderDO.setMobilizeCode(mobilizeManagePO.getMobilizeCode()); + stockOutOrderDO.setWarehouseId(mobilizeManagePO.getOutWarehouseId()); + stockOutOrderDO.setWarehouseCode(mobilizeManagePO.getOutWarehouseCode()); + stockOutOrderDO.setWarehouseName(mobilizeManagePO.getOutWarehouseName()); + stockOutOrderDO.setStatus(2); + MobilizeManageDetailPO mobilizeManageDetailDbPO = mobilizeManageDetailPOList.get(0); + stockOutOrderDO.setShipperId(mobilizeManageDetailDbPO.getShipperId()); + stockOutOrderDO.setShipperName(mobilizeManageDetailDbPO.getShipperName()); + stockOutOrderDO.setOrderTypeCode("diao_bo_chu_ku"); + stockOutOrderDO.setOrderTypeName("调拨出库"); + stockOutOrderDO.setDirectWarehouse(2); + stockOutOrderDO.setMaterialQuantity(mobilizeManageDetailPOList.size()); + stockOutOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockOutOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockOutOrderDO.setCreateBy(loginUser.getUserid()); + stockOutOrderDO.setCreateByName(loginUser.getUsername()); + stockOutOrderDO.setCreateTime(new Date()); + //统计总计划数 + BigDecimal quantity = mobilizeManageDetailPOList.stream().map(MobilizeManageDetailPO::getMobilizeNumber).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setQuantity(quantity); + List outMaterialDetailDOList = mobilizeManageDetailPOList.stream().map(mobilizeManageDetailPO -> { + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + BeanUtils.copyProperties(mobilizeManageDetailPO, outMaterialDetailDO, "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + outMaterialDetailDO.setQuantity(mobilizeManageDetailPO.getMobilizeNumber()); + return outMaterialDetailDO; + }).collect(Collectors.toList()); + stockOutOrderDO.setMaterialDetailList(outMaterialDetailDOList); + stockOutOrderDOList.add(stockOutOrderDO); + } + stockOutOrderDomainService.batchInsert(stockOutOrderDOList); + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param mobilizeManageDO + */ + private void setWarehouseInfoIn(MobilizeManageDO mobilizeManageDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(mobilizeManageDO.getInWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + mobilizeManageDO.setInWarehouseCode(warehouseFeignPO.getWarehouseCode()); + mobilizeManageDO.setInWarehouseName(warehouseFeignPO.getWarehouseName()); + } + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/4/7 10:01 + * @param mobilizeManageDO + */ + private void setWarehouseInfoOut(MobilizeManageDO mobilizeManageDO) { + AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(mobilizeManageDO.getOutWarehouseId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取仓库信息失败"); + } + WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class); + mobilizeManageDO.setOutWarehouseCode(warehouseFeignPO.getWarehouseCode()); + mobilizeManageDO.setOutWarehouseName(warehouseFeignPO.getWarehouseName()); + } + /** + * @description 设置数据字典键值 + * @author ZhouGY + * @date 2024/4/7 14:33 + * @param mobilizeManageDO + */ + private void setDataDict(MobilizeManageDO mobilizeManageDO){ + //翻译调拨类型 + AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.MOBILIZETYPE.getCode()); + if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) { + throw new ServiceException("调拨类型数据字典不存在"); + } + List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class); + + SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), mobilizeManageDO.getMobilizeTypeCode())).findAny().orElse(null); + if (null == documentTypeData) { + throw new ServiceException("调拨类型【" + mobilizeManageDO.getMobilizeTypeCode() + "】数据字典不存在 请联系管理员"); + } + mobilizeManageDO.setMobilizeType(documentTypeData.getDictLabel()); + + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param mobilizeManageDetailDO + */ + private void setMaterialDetailInfo(MobilizeManageDetailDO mobilizeManageDetailDO){ + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(mobilizeManageDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + mobilizeManageDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + mobilizeManageDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + mobilizeManageDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + mobilizeManageDetailDO.setPackId(materialBaseInfoPO.getPackId()); + mobilizeManageDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + mobilizeManageDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + mobilizeManageDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + mobilizeManageDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + mobilizeManageDetailDO.setUnitName(packDetailFeignPO.getName()); + mobilizeManageDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + mobilizeManageDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + mobilizeManageDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/entity/MobilizeManageDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/entity/MobilizeManageDetail.java new file mode 100644 index 000000000..ee50d1525 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/entity/MobilizeManageDetail.java @@ -0,0 +1,169 @@ +package com.mhd.wms.domain.mobilizeManageDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 调拨管理详情对象 mobilize_manage_detail + * + * @author gen + * @date 2024-07-08 + */ + +@Data +public class MobilizeManageDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨单详情id") + @TableId(type = IdType.AUTO) + private Long mobilizeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/facade/IMobilizeManageDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/facade/IMobilizeManageDetailService.java new file mode 100644 index 000000000..d2662a6d3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/facade/IMobilizeManageDetailService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.mobilizeManageDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.mobilizeManageDetail.entity.MobilizeManageDetail; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; + +import java.util.List; + +/** + * 调拨管理详情Service接口 + * + * @author gen + * @date 2024-07-08 + */ +public interface IMobilizeManageDetailService extends IService +{ + /** + * 分页查询调拨管理详情列表 + */ + public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO); + + /** + * 新增调拨管理详情 + */ + public Boolean insert(MobilizeManageDetailDO mobilizeManageDetailDO); + + /** + * 修改调拨管理详情 + */ + public Boolean update(MobilizeManageDetailDO mobilizeManageDetailDO); + + /** + * 批量删除调拨管理详情 + */ + public Boolean delete(Long[] mobilizeMaterialDetails); + + + /** + * 查询调拨管理详情 + */ + public MobilizeManageDetailPO getInfo(Long mobilizeMaterialDetail); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/mapper/MobilizeManageDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/mapper/MobilizeManageDetailMapper.java new file mode 100644 index 000000000..d4a2926d0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/mapper/MobilizeManageDetailMapper.java @@ -0,0 +1,28 @@ +package com.mhd.wms.domain.mobilizeManageDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.mobilizeManageDetail.entity.MobilizeManageDetail; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; + +import java.util.List; + +/** + * 调拨管理详情Mapper接口 + * + * @author gen + * @date 2024-07-08 + */ +public interface MobilizeManageDetailMapper extends BaseMapper +{ + /** + * 查询调拨管理详情列表 + */ + public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO); + + + /** + * 获取条数 + */ + public Integer selectCountGroup(Long materialBaseInfoId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/persistence/MobilizeManageDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/persistence/MobilizeManageDetailImpl.java new file mode 100644 index 000000000..5ad1042f0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/persistence/MobilizeManageDetailImpl.java @@ -0,0 +1,130 @@ +package com.mhd.wms.domain.mobilizeManageDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.mobilizeManage.repository.mapper.MobilizeManageMapper; +import com.mhd.wms.domain.mobilizeManageDetail.entity.MobilizeManageDetail; +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.mapper.MobilizeManageDetailMapper; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 调拨管理详情Service业务层处理 + * + * @author gen + * @date 2024-07-08 + */ +@Service +public class MobilizeManageDetailImpl extends ServiceImpl implements IMobilizeManageDetailService{ + @Autowired + private MobilizeManageDetailMapper mobilizeManageDetailMapper; + + @Autowired + private MobilizeManageMapper mobilizeManageMapper; + + /** + * 查询调拨管理详情列表 + */ + @Override + public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO) + { + return mobilizeManageDetailMapper.queryList(mobilizeManageDetailDO); + } + + /** + * 新增调拨管理详情 + */ + @Override + public Boolean insert(MobilizeManageDetailDO mobilizeManageDetailDO) { + MobilizeManageDetail mobilizeManageDetail = new MobilizeManageDetail(); + BeanUtils.copyProperties(mobilizeManageDetailDO,mobilizeManageDetail); + Boolean save = this.save(mobilizeManageDetail); +// // 存入调拨管理 +// try{ +// // 统计数据库表里该物料有多少种 +// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); +// lqw.eq(MobilizeManageDetail::getMaterialBaseInfoId,mobilizeManageDetailDO.getMaterialBaseInfoId()); +// Long materialCount = Long.valueOf(mobilizeManageDetailMapper.selectCount(lqw)); // 物料种数 +// // 移位物料种数 +// Long mobilizeManageDetailCount = Long.valueOf(mobilizeManageDetailMapper.selectCountGroup(mobilizeManageDetail.getMaterialBaseInfoId())); +// LambdaQueryWrapper mobilizeManageLqw = new LambdaQueryWrapper<>(); +// mobilizeManageLqw.eq(MobilizeManage::getMobilizeCode,mobilizeManageDetail.getMobilizeCode()); +// MobilizeManage mobilizeManage = mobilizeManageMapper.selectOne(mobilizeManageLqw); +// if (Objects.isNull(mobilizeManage)){ +// mobilizeManage = new MobilizeManage(); +// mobilizeManage.setOrganizationId(mobilizeManageDetail.getOrganizationId()); +// mobilizeManage.setOrganizationName(mobilizeManageDetail.getOrganizationName()); +// mobilizeManage.setTopOrganizationId(mobilizeManageDetail.getTopOrganizationId()); +// mobilizeManage.setMobilizeCode(mobilizeManageDetail.getMobilizeCode()); +// mobilizeManage.setMobilizeStatus(mobilizeManageDetail.getMobilizeStatus()); +// mobilizeManage.setMobilizeNumber(mobilizeManageDetail.getMobilizeNumber()); +// mobilizeManage.setMaterialTypeQuantity(mobilizeManageDetail.getMobilizeMaterialDetailId()); +// mobilizeManage.setMobilizeMaterialQuantity(mobilizeManageDetail.getMobilizeMaterialDetailId()); +// // mobilizeManage.setInWarehouseName(mobilizeManage.getWarehouseName()); +// mobilizeManage.setMobilizeMaterialQuantity(mobilizeManageDetailCount); +// mobilizeManage.setMaterialTypeQuantity(materialCount); +// mobilizeManage.setOperatorsBy(SecurityUtils.getUserId()); +// mobilizeManage.setOperatorsName(SecurityUtils.getUsername()); +// mobilizeManage.setCreateByName(mobilizeManageDetail.getCreateByName()); +// mobilizeManage.setCreateBy(mobilizeManageDetail.getCreateBy()); +// mobilizeManage.setCreateTime(mobilizeManageDetail.getCreateTime()); +// mobilizeManage.setUpdateByName(mobilizeManageDetail.getUpdateByName()); +// mobilizeManage.setUpdateBy(mobilizeManageDetail.getUpdateBy()); +// mobilizeManage.setUpdateTime(mobilizeManageDetail.getUpdateTime()); +// mobilizeManageMapper.insert(mobilizeManage); +// }else{ +// mobilizeManage.setMobilizeMaterialQuantity(mobilizeManageDetailCount); +// mobilizeManage.setMaterialTypeQuantity(materialCount); +// mobilizeManage.setUpdateByName(mobilizeManageDetail.getUpdateByName()); +// mobilizeManage.setUpdateBy(mobilizeManageDetail.getUpdateBy()); +// mobilizeManage.setUpdateTime(mobilizeManageDetail.getUpdateTime()); +// mobilizeManageMapper.updateQuantity(mobilizeManage); +// } +// }catch (Exception e){ +// throw new RuntimeException(e); +// } + return save; + } + + /** + * 修改调拨管理详情 + */ + @Override + public Boolean update(MobilizeManageDetailDO mobilizeManageDetailDO) { + MobilizeManageDetail mobilizeManageDetail = new MobilizeManageDetail(); + BeanUtils.copyProperties(mobilizeManageDetailDO,mobilizeManageDetail); + return this.updateById(mobilizeManageDetail); + } + + /** + * 批量删除调拨管理详情 + */ + @Override + public Boolean delete(Long[] mobilizeMaterialDetails ) { + List list = new ArrayList<>(); + for (Long id : mobilizeMaterialDetails) { + MobilizeManageDetail mobilizeManageDetail = new MobilizeManageDetail(); + mobilizeManageDetail.setMobilizeMaterialDetailId(id); + mobilizeManageDetail.setDelFlag(2); + list.add(mobilizeManageDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改调拨管理详情 + */ + @Override + public MobilizeManageDetailPO getInfo(Long mobilizeMaterialDetail) { + MobilizeManageDetail mobilizeManageDetail = this.getById(mobilizeMaterialDetail); + MobilizeManageDetailPO mobilizeManageDetailPO = new MobilizeManageDetailPO(); + BeanUtils.copyProperties(mobilizeManageDetail,mobilizeManageDetailPO); + return mobilizeManageDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/po/MobilizeManageDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/po/MobilizeManageDetailPO.java new file mode 100644 index 000000000..e0d084b1e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/po/MobilizeManageDetailPO.java @@ -0,0 +1,177 @@ +package com.mhd.wms.domain.mobilizeManageDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 调拨管理详情对象 mobilize_manage_detail + * + * @author gen + * @date 2024-07-08 + */ + +@Data +@ApiModel(value = "调拨管理详情对象", description = "调拨管理详情响应对象") +public class MobilizeManageDetailPO extends MaterialBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨单详情id") + private Long mobilizeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/todo/MobilizeManageDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/todo/MobilizeManageDetailDO.java new file mode 100644 index 000000000..036c092d0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/repository/todo/MobilizeManageDetailDO.java @@ -0,0 +1,178 @@ +package com.mhd.wms.domain.mobilizeManageDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 调拨管理详情对象 mobilize_manage_detail + * + * @author gen + * @date 2024-07-08 + */ + +@Data +public class MobilizeManageDetailDO extends MaterialBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨单详情id") + private Long mobilizeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-出库调拨完成 4-调拨完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/service/MobilizeManageDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/service/MobilizeManageDetailDomainService.java new file mode 100644 index 000000000..8aacfb8df --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/mobilizeManageDetail/service/MobilizeManageDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.mobilizeManageDetail.service; + +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 调拨管理详情 + * + * @author gen + * @date 2024-07-08 + */ +@Service +@Slf4j +public class MobilizeManageDetailDomainService { + + @Autowired + private IMobilizeManageDetailService mobilizeManageDetailService; + + + /** + * 分页查询调拨管理详情列表 + */ + public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO) { + return mobilizeManageDetailService.queryList(mobilizeManageDetailDO); + } + + + /** + * 新增调拨管理详情 + */ + public Boolean insert(MobilizeManageDetailDO mobilizeManageDetailDO) { + + return mobilizeManageDetailService.insert(mobilizeManageDetailDO); + } + + /** + * 修改调拨管理详情 + */ + public Boolean update(MobilizeManageDetailDO mobilizeManageDetailDO) { + return mobilizeManageDetailService.update(mobilizeManageDetailDO); + } + + /** + * 批量删除调拨管理详情 + */ + public Boolean delete(Long[] mobilizeMaterialDetails) { + return mobilizeManageDetailService.delete(mobilizeMaterialDetails); + } + + /** + * 获取调拨管理详情详细信息 + */ + public MobilizeManageDetailPO getInfo(Long mobilizeMaterialDetail) + { + return mobilizeManageDetailService.getInfo(mobilizeMaterialDetail); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/entity/NoticeMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/entity/NoticeMaterialDetail.java new file mode 100644 index 000000000..71fea126e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/entity/NoticeMaterialDetail.java @@ -0,0 +1,144 @@ +package com.mhd.wms.domain.noticeMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 notice_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class NoticeMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long noticeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/facade/INoticeMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/facade/INoticeMaterialDetailService.java new file mode 100644 index 000000000..e43087196 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/facade/INoticeMaterialDetailService.java @@ -0,0 +1,48 @@ +package com.mhd.wms.domain.noticeMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.noticeMaterialDetail.entity.NoticeMaterialDetail; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; + +import java.util.List; + +/** + * 物料明细Service接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface INoticeMaterialDetailService extends IService +{ + /** + * 分页查询物料明细列表 + */ + public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean batchInsert(String noticeNumber, List noticeMaterialDetailDOList); + + /** + * 新增物料明细 + */ + public Boolean insert(NoticeMaterialDetailDO noticeMaterialDetailDO); + + /** + * 修改物料明细 + */ + public Boolean update(NoticeMaterialDetailDO noticeMaterialDetailDO); + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] noticeMaterialDetailIds); + + + /** + * 查询物料明细 + */ + public NoticeMaterialDetailPO getInfo(Long noticeMaterialDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/mapper/NoticeMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/mapper/NoticeMaterialDetailMapper.java new file mode 100644 index 000000000..421b3f13f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/mapper/NoticeMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.noticeMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.noticeMaterialDetail.entity.NoticeMaterialDetail; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; + +import java.util.List; + +/** + * 物料明细Mapper接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface NoticeMaterialDetailMapper extends BaseMapper +{ + /** + * 查询物料明细列表 + */ + public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/persistence/NoticeMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/persistence/NoticeMaterialDetailImpl.java new file mode 100644 index 000000000..307a313c7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/persistence/NoticeMaterialDetailImpl.java @@ -0,0 +1,189 @@ +package com.mhd.wms.domain.noticeMaterialDetail.repository.persistence; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.noticeMaterialDetail.entity.NoticeMaterialDetail; +import com.mhd.wms.domain.noticeMaterialDetail.repository.facade.INoticeMaterialDetailService; +import com.mhd.wms.domain.noticeMaterialDetail.repository.mapper.NoticeMaterialDetailMapper; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 物料明细Service业务层处理 + * + * @author gen + * @date 2024-06-17 + */ +@Service +public class NoticeMaterialDetailImpl extends ServiceImpl implements INoticeMaterialDetailService{ + @Autowired + private NoticeMaterialDetailMapper noticeMaterialDetailMapper; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private IdGenerator idGenerator; + + /** + * 查询物料明细列表 + */ + @Override + public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO) + { + return noticeMaterialDetailMapper.queryList(noticeMaterialDetailDO); + } + + /** + * 新增物料明细 + */ + @Override + public Boolean insert(NoticeMaterialDetailDO noticeMaterialDetailDO) { + NoticeMaterialDetail noticeMaterialDetail = new NoticeMaterialDetail(); + BeanUtils.copyProperties(noticeMaterialDetailDO,noticeMaterialDetail); + return this.save(noticeMaterialDetail); + } + + /** + * @description 批量新增物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param noticeNumber + * @param noticeMaterialDetailDOList + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchInsert(String noticeNumber, List noticeMaterialDetailDOList) { + if (CollectionUtils.isEmpty(noticeMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 批量新增或修改 + List noticeMaterialDetailList = new ArrayList<>(); + for (NoticeMaterialDetailDO noticeMaterialDetailDO : noticeMaterialDetailDOList){ + //设置物料信息 + setMaterialDetailInfo(noticeMaterialDetailDO); + NoticeMaterialDetail noticeMaterialDetail = new NoticeMaterialDetail(); + BeanUtils.copyProperties(noticeMaterialDetailDO, noticeMaterialDetail); + noticeMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + noticeMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + noticeMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + noticeMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + noticeMaterialDetail.setNoticeNumber(noticeNumber); + noticeMaterialDetail.setCreateBy(loginUser.getUserid()); + noticeMaterialDetail.setCreateByName(loginUser.getUsername()); + noticeMaterialDetail.setCreateTime(new Date()); + noticeMaterialDetailList.add(noticeMaterialDetail); + } + return saveBatch(noticeMaterialDetailList); + } + + /** + * 修改物料明细 + */ + @Override + public Boolean update(NoticeMaterialDetailDO noticeMaterialDetailDO) { + NoticeMaterialDetail noticeMaterialDetail = new NoticeMaterialDetail(); + BeanUtils.copyProperties(noticeMaterialDetailDO,noticeMaterialDetail); + return this.updateById(noticeMaterialDetail); + } + + /** + * 批量删除物料明细 + */ + @Override + public Boolean delete(Long[] noticeMaterialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : noticeMaterialDetailIds) { + NoticeMaterialDetail noticeMaterialDetail = new NoticeMaterialDetail(); + noticeMaterialDetail.setNoticeMaterialDetailId(id); + noticeMaterialDetail.setDelFlag(2); + list.add(noticeMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细 + */ + @Override + public NoticeMaterialDetailPO getInfo(Long noticeMaterialDetailId) { + NoticeMaterialDetail noticeMaterialDetail = this.getById(noticeMaterialDetailId); + NoticeMaterialDetailPO noticeMaterialDetailPO = new NoticeMaterialDetailPO(); + BeanUtils.copyProperties(noticeMaterialDetail,noticeMaterialDetailPO); + return noticeMaterialDetailPO; + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param noticeMaterialDetailDO + */ + private void setMaterialDetailInfo(NoticeMaterialDetailDO noticeMaterialDetailDO){ + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(noticeMaterialDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + noticeMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + noticeMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + noticeMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + noticeMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId()); + noticeMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + noticeMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + noticeMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + noticeMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + noticeMaterialDetailDO.setUnitName(packDetailFeignPO.getName()); + noticeMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + noticeMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + noticeMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + noticeMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage()); + noticeMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage()); + noticeMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule()); + noticeMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm()); + noticeMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge()); + noticeMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio()); + + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/po/NoticeMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/po/NoticeMaterialDetailPO.java new file mode 100644 index 000000000..c4e3c1a6e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/po/NoticeMaterialDetailPO.java @@ -0,0 +1,144 @@ +package com.mhd.wms.domain.noticeMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 notice_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +@ApiModel(value = "物料明细对象", description = "物料明细响应对象") +public class NoticeMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long noticeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/todo/NoticeMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/todo/NoticeMaterialDetailDO.java new file mode 100644 index 000000000..69f27829b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/repository/todo/NoticeMaterialDetailDO.java @@ -0,0 +1,147 @@ +package com.mhd.wms.domain.noticeMaterialDetail.repository.todo; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 notice_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class NoticeMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long noticeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/service/NoticeMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/service/NoticeMaterialDetailDomainService.java new file mode 100644 index 000000000..d794be0ea --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeMaterialDetail/service/NoticeMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.noticeMaterialDetail.service; + +import com.mhd.wms.domain.noticeMaterialDetail.repository.facade.INoticeMaterialDetailService; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细 + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class NoticeMaterialDetailDomainService { + + @Autowired + private INoticeMaterialDetailService noticeMaterialDetailService; + + + /** + * 分页查询物料明细列表 + */ + public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO) { + return noticeMaterialDetailService.queryList(noticeMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(NoticeMaterialDetailDO noticeMaterialDetailDO) { + + return noticeMaterialDetailService.insert(noticeMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(NoticeMaterialDetailDO noticeMaterialDetailDO) { + return noticeMaterialDetailService.update(noticeMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] noticeMaterialDetailIds) { + return noticeMaterialDetailService.delete(noticeMaterialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public NoticeMaterialDetailPO getInfo(Long noticeMaterialDetailId) + { + return noticeMaterialDetailService.getInfo(noticeMaterialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/entity/NoticeOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/entity/NoticeOrder.java new file mode 100644 index 000000000..8539c6b04 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/entity/NoticeOrder.java @@ -0,0 +1,137 @@ +package com.mhd.wms.domain.noticeOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 入库通知单对象 stock_receipt_notice + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class NoticeOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("通知单id") + @TableId(type = IdType.AUTO) + private Long noticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("客户订单号") + @Excel(name = "客户订单号") + private String customerOrderNumber; + + @ApiModelProperty("类型: 1-入库通知单 2-出库通知单") + @Excel(name = "类型: 1-入库通知单 2-出库通知单") + private Integer type; + + @ApiModelProperty("状态: 1-未生成 2-已生成") + @Excel(name = "状态: 1-未生成 2-已生成") + private Integer status; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计入/出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计入/出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/facade/INoticeOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/facade/INoticeOrderService.java new file mode 100644 index 000000000..5f86d5682 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/facade/INoticeOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.noticeOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.noticeOrder.entity.NoticeOrder; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; + +import java.util.List; + +/** + * 入库通知单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface INoticeOrderService extends IService +{ + /** + * 分页查询入库通知单列表 + */ + public List queryList(NoticeOrderDO noticeOrderDO); + + /** + * 新增入库通知单 + */ + public Boolean insert(NoticeOrderDO noticeOrderDO); + + /** + * 修改入库通知单 + */ + public Boolean update(NoticeOrderDO noticeOrderDO); + + /** + * 批量删除入库通知单 + */ + public Boolean delete(Long[] noticeIds); + + + /** + * 查询入库通知单 + */ + public NoticeOrderPO getInfo(Long noticeId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/mapper/NoticeOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/mapper/NoticeOrderMapper.java new file mode 100644 index 000000000..4a76e43d2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/mapper/NoticeOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.noticeOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.noticeOrder.entity.NoticeOrder; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; + +import java.util.List; + +/** + * 入库通知单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface NoticeOrderMapper extends BaseMapper +{ + /** + * 查询入库通知单列表 + */ + public List queryList(NoticeOrderDO noticeOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/persistence/NoticeImplOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/persistence/NoticeImplOrder.java new file mode 100644 index 000000000..60f578ca2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/persistence/NoticeImplOrder.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.noticeOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.noticeOrder.entity.NoticeOrder; +import com.mhd.wms.domain.noticeOrder.repository.facade.INoticeOrderService; +import com.mhd.wms.domain.noticeOrder.repository.mapper.NoticeOrderMapper; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 入库通知单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class NoticeImplOrder extends ServiceImpl implements INoticeOrderService { + @Autowired + private NoticeOrderMapper noticeOrderMapper; + + /** + * 查询入库通知单列表 + */ + @Override + public List queryList(NoticeOrderDO noticeOrderDO) + { + return noticeOrderMapper.queryList(noticeOrderDO); + } + + /** + * 新增入库通知单 + */ + @Override + public Boolean insert(NoticeOrderDO noticeOrderDO) { + NoticeOrder noticeOrder = new NoticeOrder(); + BeanUtils.copyProperties(noticeOrderDO, noticeOrder); + return this.save(noticeOrder); + } + + /** + * 修改入库通知单 + */ + @Override + public Boolean update(NoticeOrderDO noticeOrderDO) { + NoticeOrder noticeOrder = new NoticeOrder(); + BeanUtils.copyProperties(noticeOrderDO, noticeOrder); + return this.updateById(noticeOrder); + } + + /** + * 批量删除入库通知单 + */ + @Override + public Boolean delete(Long[] noticeIds ) { + List list = new ArrayList<>(); + for (Long id : noticeIds) { + NoticeOrder noticeOrder = new NoticeOrder(); + noticeOrder.setNoticeId(id); + noticeOrder.setDelFlag(2); + list.add(noticeOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改入库通知单 + */ + @Override + public NoticeOrderPO getInfo(Long noticeId) { + NoticeOrder noticeOrder = this.getById(noticeId); + NoticeOrderPO noticeOrderPO = new NoticeOrderPO(); + BeanUtils.copyProperties(noticeOrder, noticeOrderPO); + return noticeOrderPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/po/NoticeOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/po/NoticeOrderPO.java new file mode 100644 index 000000000..de126aeac --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/po/NoticeOrderPO.java @@ -0,0 +1,137 @@ +package com.mhd.wms.domain.noticeOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 入库通知单对象 stock_receipt_notice + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "入库通知单对象", description = "入库通知单响应对象") +public class NoticeOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("通知单id") + private Long noticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("客户订单号") + @Excel(name = "客户订单号") + private String customerOrderNumber; + + @ApiModelProperty("类型: 1-入库通知单 2-出库通知单") + @Excel(name = "类型: 1-入库通知单 2-出库通知单") + private Integer type; + + @ApiModelProperty("状态: 1-未生成 2-已生成") + @Excel(name = "状态: 1-未生成 2-已生成") + private Integer status; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计入/出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计入/出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/todo/NoticeOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/todo/NoticeOrderDO.java new file mode 100644 index 000000000..d4c54add3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/repository/todo/NoticeOrderDO.java @@ -0,0 +1,143 @@ +package com.mhd.wms.domain.noticeOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + + +/** + * 入库通知单对象 stock_receipt_notice + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class NoticeOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("通知单id") + private Long noticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("客户订单号") + @Excel(name = "客户订单号") + private String customerOrderNumber; + + @ApiModelProperty("类型: 1-入库通知单 2-出库通知单") + @Excel(name = "类型: 1-入库通知单 2-出库通知单") + private Integer type; + + @ApiModelProperty("状态: 1-未生成 2-已生成") + @Excel(name = "状态: 1-未生成 2-已生成") + private Integer status; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计入/出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计入/出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细") + List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/service/NoticeOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/service/NoticeOrderDomainService.java new file mode 100644 index 000000000..166cd7d81 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/noticeOrder/service/NoticeOrderDomainService.java @@ -0,0 +1,231 @@ +package com.mhd.wms.domain.noticeOrder.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.noticeMaterialDetail.entity.NoticeMaterialDetail; +import com.mhd.wms.domain.noticeMaterialDetail.repository.facade.INoticeMaterialDetailService; +import com.mhd.wms.domain.noticeOrder.entity.NoticeOrder; +import com.mhd.wms.domain.noticeOrder.repository.facade.INoticeOrderService; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 入库通知单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class NoticeOrderDomainService { + + @Autowired + private INoticeOrderService noticeOrderService; + @Autowired + private INoticeMaterialDetailService noticeMaterialDetailService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; + @Autowired + private StockInOrderDomainService stockInOrderDomainService; + @Autowired + private StockOutOrderDomainService stockOutOrderDomainService; + + + /** + * 分页查询入库通知单列表 + */ + public List queryList(NoticeOrderDO noticeOrderDO) { + return noticeOrderService.queryList(noticeOrderDO); + } + + + /** + * 新增入库通知单 + */ + public Boolean insert(NoticeOrderDO noticeOrderDO) { + if (noticeOrderDO.getType() == 1){ + noticeOrderDO.setNoticeNumber(OrderSequence.getOrderCode("RK")); + }else { + noticeOrderDO.setNoticeNumber(OrderSequence.getOrderCode("CK")); + } + noticeOrderService.insert(noticeOrderDO); + return noticeMaterialDetailService.batchInsert(noticeOrderDO.getNoticeNumber(), noticeOrderDO.getMaterialDetailList()); + } + + /** + * 修改入库通知单 + */ + public Boolean update(NoticeOrderDO noticeOrderDO) { + return noticeOrderService.update(noticeOrderDO); + } + + /** + * 批量删除入库通知单 + */ + public Boolean delete(Long[] noticeIds) { + return noticeOrderService.delete(noticeIds); + } + + /** + * 获取入库通知单详细信息 + */ + public NoticeOrderPO getInfo(Long noticeId) + { + return noticeOrderService.getInfo(noticeId); + } + + /** + * @description 根据id作废入库通知单 + * @author ZhouGY + * @date 2024/5/22 10:49 + * @param noticeIds + * @return Boolean + */ + public Boolean nullifyByIds(Long[] noticeIds) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return noticeOrderService.update(null, new UpdateWrapper().lambda() + .set(NoticeOrder::getNullify, 1) + .set(NoticeOrder::getUpdateTime, new Date()) + .set(NoticeOrder::getUpdateBy, loginUser.getUserid()) + .set(NoticeOrder::getUpdateByName, loginUser.getUsername()) + .in(NoticeOrder::getNoticeId, Arrays.asList(noticeIds))); + } + + /** + * @description 生成入库单 + * @author ZhouGY + * @date 2024/5/22 10:14 + * @param noticeIds + * @return List + */ + @Transactional(rollbackFor = Exception.class) + public Boolean generateStockInOrder(Long[] noticeIds) { + List noticeOrderList = noticeOrderService.list(new QueryWrapper().lambda() + .in(NoticeOrder::getNoticeId, Arrays.asList(noticeIds)) + .eq(NoticeOrder::getStatus, 1) + .eq(NoticeOrder::getNullify, 1) + .eq(NoticeOrder::getDelFlag, 1)); + if (CollectionUtils.isEmpty(noticeOrderList)) { + throw new ServiceException("入库通知单不存在,请重新选择"); + } + if (noticeOrderList.size() != noticeIds.length){ + throw new ServiceException("入库通知单不存在或已生成,请重新选择"); + } + List noticeNumbers = noticeOrderList.stream().map(NoticeOrder::getNoticeNumber).collect(Collectors.toList()); + List noticeMaterialDetailDbList = noticeMaterialDetailService.list(new QueryWrapper().lambda().in(NoticeMaterialDetail::getNoticeNumber, noticeNumbers)); + Map> materialDetailMap = noticeMaterialDetailDbList.stream().collect(Collectors.groupingBy(NoticeMaterialDetail::getNoticeNumber)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List noticeOrderUpList = new ArrayList<>(); + List stockInOrderList = new ArrayList<>(); + for (NoticeOrder noticeOrder : noticeOrderList) { + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + BeanUtils.copyProperties(noticeOrder, stockInOrderDO); + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockInOrderDO.setCreateBy(loginUser.getUserid()); + stockInOrderDO.setCreateByName(loginUser.getUsername()); + stockInOrderDO.setCreateTime(new Date()); + List noticeMaterialDetailList = materialDetailMap.get(noticeOrder.getCustomerOrderNumber()); + List inMaterialDetailDOList = noticeMaterialDetailList.stream().map(materialDetail -> { + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + BeanUtils.copyProperties(materialDetail, inMaterialDetailDO); + return inMaterialDetailDO; + }).collect(Collectors.toList()); + stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList); + stockInOrderList.add(stockInOrderDO); + //设置入库单号 + NoticeOrder noticeOrderUp = new NoticeOrder(); + noticeOrderUp.setNoticeId(noticeOrder.getNoticeId()); + noticeOrderUp.setOrderNumber(stockInOrderDO.getInOrderNumber()); + noticeOrderUp.setUpdateBy(loginUser.getUserid()); + noticeOrderUp.setUpdateByName(loginUser.getUsername()); + noticeOrderUp.setUpdateTime(new Date()); + noticeOrderUpList.add(noticeOrderUp); + } + noticeOrderService.updateBatchById(noticeOrderUpList); + return stockInOrderDomainService.batchInsert(stockInOrderList); + } + + + /** + * @description 生成出库单 + * @author ZhouGY + * @date 2024/5/22 10:14 + * @param noticeIds + * @return List + */ + @Transactional(rollbackFor = Exception.class) + public Boolean generateStockOutOrder(Long[] noticeIds) { + List noticeOrderList = noticeOrderService.list(new QueryWrapper().lambda() + .in(NoticeOrder::getNoticeId, Arrays.asList(noticeIds)) + .eq(NoticeOrder::getStatus, 1) + .eq(NoticeOrder::getNullify, 1) + .eq(NoticeOrder::getDelFlag, 1)); + if (CollectionUtils.isEmpty(noticeOrderList)) { + throw new ServiceException("出库通知单不存在,请重新选择"); + } + if (noticeOrderList.size() != noticeIds.length){ + throw new ServiceException("出库通知单不存在或已生成,请重新选择"); + } + List noticeNumbers = noticeOrderList.stream().map(NoticeOrder::getNoticeNumber).collect(Collectors.toList()); + List noticeMaterialDetailDbList = noticeMaterialDetailService.list(new QueryWrapper().lambda().in(NoticeMaterialDetail::getNoticeNumber, noticeNumbers)); + Map> materialDetailMap = noticeMaterialDetailDbList.stream().collect(Collectors.groupingBy(NoticeMaterialDetail::getNoticeNumber)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List noticeOrderUpList = new ArrayList<>(); + List stockOutOrderDOList = new ArrayList<>(); + for (NoticeOrder noticeOrder : noticeOrderList) { + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + BeanUtils.copyProperties(noticeOrder, stockOutOrderDO); + stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + stockOutOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockOutOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockOutOrderDO.setCreateBy(loginUser.getUserid()); + stockOutOrderDO.setCreateByName(loginUser.getUsername()); + stockOutOrderDO.setCreateTime(new Date()); + List noticeMaterialDetailList = materialDetailMap.get(noticeOrder.getCustomerOrderNumber()); + List outMaterialDetailDOList = noticeMaterialDetailList.stream().map(outMaterialDetail -> { + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + BeanUtils.copyProperties(outMaterialDetail, outMaterialDetailDO); + return outMaterialDetailDO; + }).collect(Collectors.toList()); + stockOutOrderDO.setMaterialDetailList(outMaterialDetailDOList); + stockOutOrderDOList.add(stockOutOrderDO); + //设置入库单号 + NoticeOrder noticeOrderUp = new NoticeOrder(); + noticeOrderUp.setNoticeId(noticeOrder.getNoticeId()); + noticeOrderUp.setOrderNumber(stockOutOrderDO.getOutOrderNumber()); + noticeOrderUp.setUpdateBy(loginUser.getUserid()); + noticeOrderUp.setUpdateByName(loginUser.getUsername()); + noticeOrderUp.setUpdateTime(new Date()); + noticeOrderUpList.add(noticeOrderUp); + } + noticeOrderService.updateBatchById(noticeOrderUpList); + return stockOutOrderDomainService.batchInsert(stockOutOrderDOList); + } + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/entity/OutMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/entity/OutMaterialDetail.java new file mode 100644 index 000000000..a5d85c87b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/entity/OutMaterialDetail.java @@ -0,0 +1,225 @@ +package com.mhd.wms.domain.outMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class OutMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已分配数量") + @Excel(name = "已分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("分配仓库id") + private Long warehouseId; + + @ApiModelProperty("分配仓库编码") + @Excel(name = "分配仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("分配库区id") + @Excel(name = "分配库区id") + private Long storageSectionId; + + @ApiModelProperty("分配库区编码") + @Excel(name = "分配库区编码") + private String storageCode; + + @ApiModelProperty("分配库区名称") + @Excel(name = "分配库区名称") + private String storageName; + + @ApiModelProperty("分配库位id") + @Excel(name = "分配库位id") + private Long storageLocationId; + + @ApiModelProperty("分配库位编码") + @Excel(name = "分配库位编码") + private String storageLocationCode; + + @ApiModelProperty("分配库位名称") + @Excel(name = "分配库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成拣货单: 1-是 2-否") + @Excel(name = "是否生成拣货单: 1-是 2-否") + private Integer genPickingOrder; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java new file mode 100644 index 000000000..e7a7b0843 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/facade/IOutMaterialDetailService.java @@ -0,0 +1,115 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBaseDO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; + +import java.util.List; + +/** + * 物料明细Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IOutMaterialDetailService extends IService +{ + /** + * 分页查询物料明细列表 + */ + public List queryList(OutMaterialDetailDO outMaterialDetailDO); + + /** + * 关联出库单 查询物料明细列表 + */ + public List queryOutOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + + + + public List queryListChildren(OutMaterialDetailDO outMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean insert(OutMaterialDetailDO outMaterialDetailDO); + + /** + * 修改物料明细 + */ + public Boolean update(OutMaterialDetailDO outMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean batchInsert(String orderNumber, List outMaterialDetailDOList); + + /** + * 修改物料明细 + */ + public Boolean batchUpdate(List outMaterialDetailDOList, OutMaterialDetailBaseDO outMaterialDetailBaseDO); + + /** + * @description 分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param outMaterialDetailDOList + * @return Boolean + */ + public StockOutOrderPO batchAssignUpdate(String outOrderNumber, List outMaterialDetailDOList); + + /** + * @description 取消分配批量修改物流明细 + * @author ZhouGY + * @date 2024/6/5 8:48 + * @param outOrderNumber + * @param outMaterialDetailDOList + * @return Boolean + */ + public StockOutOrderPO batchCancelAssignUpdate(String outOrderNumber, List outMaterialDetailDOList); + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/5/29 17:55 + * @param pickingMaterialDetailList + * @return Boolean + */ + public Boolean batchPickingUpdate(List pickingMaterialDetailList); + + /** + * @description 复核单个修改物流明细 + * @author ZhouGY + * @date 2024/5/31 10:50 + * @param stockOutOrderDO + * @return OutMaterialCheckPO + */ + public OutMaterialCheckPO singleCheckUpdate(StockOutOrderDO stockOutOrderDO); + + /** + * @description 复核批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutOrderDO + * @param type + * @return Boolean + */ + public StockOutOrderPO batchCheckUpdate(StockOutOrderDO stockOutOrderDO, Integer type); + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询物料明细 + */ + public OutMaterialDetailPO getInfo(Long materialDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java new file mode 100644 index 000000000..b5084d859 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/mapper/OutMaterialDetailMapper.java @@ -0,0 +1,56 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; + +import java.util.List; + +/** + * 物料明细Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface OutMaterialDetailMapper extends BaseMapper +{ + /** + * 查询物料明细列表 + */ + public List queryList(OutMaterialDetailDO outMaterialDetailDO); + + /** + * 关联出库单 查询物料明细列表 + */ + public List queryOutOrderList(QueryOrderOverStockDO queryOrderOverStockDO); + + + /** + * @description 批量修改指定物料明细分配数量 + * @author ZhouGY + * @date 2024/6/7 14:29 + * @param outMaterialDetailDO + * @return int + */ + public int batchAddAllocationQuantityByIds(OutMaterialDetailDO outMaterialDetailDO); + + /** + * @description 批量修改指定物料明细拣货数量 + * @author ZhouGY + * @date 2024/6/7 14:29 + * @param outMaterialDetailDO + * @return int + */ + public int batchAddPickingQuantityByIds(OutMaterialDetailDO outMaterialDetailDO); + + /** + * @description 批量修改指定物料明细拣货数量 + * @author ZhouGY + * @date 2024/6/7 14:29 + * @param outMaterialDetailDO + * @return int + */ + public int batchAddPickingQuantityByUniqueIds(OutMaterialDetailDO outMaterialDetailDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java new file mode 100644 index 000000000..31f9ea0a0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/persistence/OutMaterialDetailImpl.java @@ -0,0 +1,520 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.persistence; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBaseDO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 物料明细Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class OutMaterialDetailImpl extends ServiceImpl implements IOutMaterialDetailService { + @Autowired + private OutMaterialDetailMapper outMaterialDetailMapper; + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + @Autowired + private IdGenerator idGenerator; + + /** + * 查询物料明细列表 + */ + @Override + public List queryList(OutMaterialDetailDO outMaterialDetailDO) + { + return outMaterialDetailMapper.queryList(outMaterialDetailDO); + } + + /** + * 关联出库单 查询物料明细列表 + */ + @Override + public List queryOutOrderList(QueryOrderOverStockDO queryOrderOverStockDO) { + return outMaterialDetailMapper.queryOutOrderList(queryOrderOverStockDO); + } + + /** + * 查询物料明细列表 + */ + @Override + public List queryListChildren(OutMaterialDetailDO outMaterialDetailDO) + { + List outMaterialDetailPOList = outMaterialDetailMapper.queryList(outMaterialDetailDO); + // 获取查询的层级 + List outMaterialDetailParentList = outMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + outMaterialDetailParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), outMaterialDetailPOList, 2))); + return outMaterialDetailParentList; + } + + private List getChildren(Long parentUniqueId, List materialDetailPOList, Integer maxLevel){ + List childrenCityList = materialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), materialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增物料明细 + */ + @Override + public Boolean insert(OutMaterialDetailDO outMaterialDetailDO) { + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + return this.save(outMaterialDetail); + } + + /** + * 修改物料明细 + */ + @Override + public Boolean update(OutMaterialDetailDO outMaterialDetailDO) { + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + return this.updateById(outMaterialDetail); + } + + /** + * @description 批量新增物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param outOrderNumber + * @param outMaterialDetailDOList + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchInsert(String outOrderNumber, List outMaterialDetailDOList) { + if (CollectionUtils.isEmpty(outMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 批量新增或修改 + List outMaterialDetailList = new ArrayList<>(); + for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList){ + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + outMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + outMaterialDetail.setOutOrderNumber(outOrderNumber); + outMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outMaterialDetail.setCreateBy(loginUser.getUserid()); + outMaterialDetail.setCreateByName(loginUser.getUsername()); + outMaterialDetail.setCreateTime(new Date()); + outMaterialDetailList.add(outMaterialDetail); + } + return saveBatch(outMaterialDetailList); + } + + /** + * @description 批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param outMaterialDetailDOList + * @param outMaterialDetailBaseDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchUpdate(List outMaterialDetailDOList, OutMaterialDetailBaseDO outMaterialDetailBaseDO) { + if (CollectionUtils.isEmpty(outMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + + List outMaterialDetailDbList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(OutMaterialDetail::getOutOrderNumber, outMaterialDetailBaseDO.getOutOrderNumber())); + Map materialDetailMap = outMaterialDetailDbList.stream().collect(Collectors.toMap(OutMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List outMaterialDetailList = new ArrayList<>(); + //需要修改的物流明细 + List materialDetailIdsByUpdate = new ArrayList<>(); + for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList){ + //判断是否需要修改 + OutMaterialDetail outMaterialDetail = materialDetailMap.get(outMaterialDetailDO.getMaterialDetailId()); + if (outMaterialDetail == null){ + outMaterialDetail = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + outMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + outMaterialDetail.setOutOrderNumber(outMaterialDetailBaseDO.getOutOrderNumber()); + outMaterialDetail.setOrganizationId(outMaterialDetailBaseDO.getOrganizationId()); + outMaterialDetail.setOrganizationName(outMaterialDetailBaseDO.getOrganizationName()); + outMaterialDetail.setTopOrganizationId(outMaterialDetailBaseDO.getTopOrganizationId()); + }else { + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + materialDetailIdsByUpdate.add(outMaterialDetailDO.getMaterialDetailId()); + } + outMaterialDetailList.add(outMaterialDetail); + } + //需修改的物料明细id集合不为空 + if (!CollectionUtils.isEmpty(materialDetailIdsByUpdate)){ + List materialDetailIdsByDb = outMaterialDetailDbList.stream().map(OutMaterialDetail::getMaterialDetailId).collect(Collectors.toList()); + //过滤需要修改的id集合 + materialDetailIdsByDb.removeAll(materialDetailIdsByUpdate); + //判断是否存在需要删除的物流明细 标记删除 + if (!CollectionUtils.isEmpty(materialDetailIdsByDb)){ + update(new UpdateWrapper().lambda() + .set(OutMaterialDetail::getDelFlag, 2) + .set(OutMaterialDetail::getUpdateBy, loginUser.getUserid()) + .set(OutMaterialDetail::getUpdateByName, loginUser.getUsername()) + .set(OutMaterialDetail::getUpdateTime, new Date()) + .in(OutMaterialDetail::getMaterialDetailId, materialDetailIdsByDb)); + } + } + //保存物料明细信息 + return saveOrUpdateBatch(outMaterialDetailList); + } + + /** + * @description 分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param outMaterialDetailDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public StockOutOrderPO batchAssignUpdate(String outOrderNumber, List outMaterialDetailDOList) { + if (CollectionUtils.isEmpty(outMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outMaterialDetailDbList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, outOrderNumber) + .eq(OutMaterialDetail::getLevel, 1) + .eq(OutMaterialDetail::getDelFlag, 1)); + Map materialDetailMap = outMaterialDetailDbList.stream().collect(Collectors.toMap(OutMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List outMaterialDetailList = new ArrayList<>(); + BigDecimal totalAllocationQuantity = BigDecimal.ZERO;//入库单总分配作业数量 + for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList){ + OutMaterialDetail outMaterialDetailDb = materialDetailMap.get(outMaterialDetailDO.getMaterialDetailId()); + if (outMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDO, outMaterialDetail); + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + outMaterialDetailList.add(outMaterialDetail); + //判断是否存在子项 + List materialDetailDOChildList = outMaterialDetailDO.getChildren(); + List outMaterialDetailListChild = new ArrayList<>(); + if (!CollectionUtils.isEmpty(materialDetailDOChildList)){ + for (OutMaterialDetailDO outMaterialDetailDOChild : materialDetailDOChildList){ + OutMaterialDetail outMaterialDetailChild = new OutMaterialDetail(); + BeanUtils.copyProperties(outMaterialDetailDOChild, outMaterialDetailChild, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDOChild)); + outMaterialDetailChild.setMaterialDetailId(null); + outMaterialDetailChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + outMaterialDetailChild.setLevel(2); + outMaterialDetailChild.setParentUniqueId(outMaterialDetailDO.getUniqueId()); + outMaterialDetailChild.setCreateBy(loginUser.getUserid()); + outMaterialDetailChild.setCreateByName(loginUser.getUsername()); + outMaterialDetailChild.setCreateTime(new Date()); + outMaterialDetailListChild.add(outMaterialDetailChild); + } + } + if (CollectionUtil.isNotEmpty(outMaterialDetailListChild)){ + outMaterialDetailList.addAll(outMaterialDetailListChild); + } + //记录收货单收货总数 + totalAllocationQuantity = totalAllocationQuantity.add(outMaterialDetail.getAlreadyAllocationQuantity()); + } + stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity); + //保存物料明细信息 + saveOrUpdateBatch(outMaterialDetailList); + return stockOutOrderPO; + } + + /** + * @description 取消分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param outMaterialDetailDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public StockOutOrderPO batchCancelAssignUpdate(String outOrderNumber, List outMaterialDetailDOList) { + if (CollectionUtils.isEmpty(outMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outMaterialDetailDbList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, outOrderNumber) + .eq(OutMaterialDetail::getDelFlag, 1)); + Map materialDetailMap = outMaterialDetailDbList.stream().collect(Collectors.toMap(OutMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List outMaterialDetailList = new ArrayList<>(); + //需要修改的物流明细 + List materialDetailIdsByUpdate = new ArrayList<>(); + BigDecimal totalAllocationQuantity = BigDecimal.ZERO;//入库单总分配作业数量 + BigDecimal totalAlreadyAllocationQuantity = BigDecimal.ZERO;//入库单总分配作业数量 + for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList){ + OutMaterialDetail outMaterialDetailDb = materialDetailMap.get(outMaterialDetailDO.getMaterialDetailId()); + if (outMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + outMaterialDetail.setMaterialDetailId(outMaterialDetailDO.getMaterialDetailId()); + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + outMaterialDetail.setAllowModify(1); + //判断是否存在子项 + BigDecimal allocationQuantity = outMaterialDetailDO.getActualQuantity(); + BigDecimal alreadyAllocationQuantity = outMaterialDetailDO.getAlreadyAllocationQuantity(); + List materialDetailDOChildList = outMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(materialDetailDOChildList)){ + for (OutMaterialDetailDO outMaterialDetailDOChild : materialDetailDOChildList){ + OutMaterialDetail outMaterialDetailChildDb = materialDetailMap.get(outMaterialDetailDOChild.getMaterialDetailId()); + if (outMaterialDetailChildDb == null){ + throw new ServiceException("物料信息不存在"); + } + OutMaterialDetail outMaterialDetailChild = new OutMaterialDetail(); + outMaterialDetailChild.setMaterialDetailId(outMaterialDetailDOChild.getMaterialDetailId()); + outMaterialDetailChild.setAllocationQuantity(outMaterialDetailDOChild.getActualQuantity()); + outMaterialDetailChild.setUpdateBy(loginUser.getUserid()); + outMaterialDetailChild.setUpdateByName(loginUser.getUsername()); + outMaterialDetailChild.setUpdateTime(new Date()); + outMaterialDetailChild.setAllowModify(1); + outMaterialDetailList.add(outMaterialDetailChild); + materialDetailIdsByUpdate.add(outMaterialDetailDOChild.getMaterialDetailId()); + allocationQuantity = allocationQuantity.add(outMaterialDetailDO.getActualQuantity()); + alreadyAllocationQuantity = alreadyAllocationQuantity.add(outMaterialDetailDO.getAlreadyAllocationQuantity()); + } + } + //判断取消分配数量不能大于分配总数 + if(allocationQuantity.compareTo(outMaterialDetailDb.getAllocationQuantity())>0){ + throw new ServiceException("物料" + outMaterialDetailDb.getMaterialName() + ",取消分配数量不能大于分配总数"); + } + outMaterialDetail.setAllocationQuantity(outMaterialDetailDb.getAllocationQuantity().subtract(allocationQuantity)); + outMaterialDetail.setAlreadyAllocationQuantity(outMaterialDetailDb.getAlreadyAllocationQuantity().subtract(allocationQuantity)); + outMaterialDetailList.add(outMaterialDetail); + materialDetailIdsByUpdate.add(outMaterialDetailDO.getMaterialDetailId()); + //记录收货单收货总数 + totalAllocationQuantity = totalAllocationQuantity.add(allocationQuantity); + totalAlreadyAllocationQuantity = totalAlreadyAllocationQuantity.add(alreadyAllocationQuantity); + } + stockOutOrderPO.setAllocationQuantity(totalAllocationQuantity); + stockOutOrderPO.setAlreadyAllocationQuantity(totalAlreadyAllocationQuantity); + //需修改的物料明细id集合不为空 + if (!CollectionUtils.isEmpty(materialDetailIdsByUpdate)){ + List materialDetailIdsByDb = outMaterialDetailDbList.stream().map(OutMaterialDetail::getMaterialDetailId).collect(Collectors.toList()); + //过滤需要修改的id集合 + materialDetailIdsByDb.removeAll(materialDetailIdsByUpdate); + //判断是否存在需要删除的物流明细 标记删除 + if (!CollectionUtils.isEmpty(materialDetailIdsByDb)){ + update(new UpdateWrapper().lambda() + .set(OutMaterialDetail::getDelFlag, 2) + .set(OutMaterialDetail::getUpdateBy, loginUser.getUserid()) + .set(OutMaterialDetail::getUpdateByName, loginUser.getUsername()) + .set(OutMaterialDetail::getUpdateTime, new Date()) + .in(OutMaterialDetail::getMaterialDetailId, materialDetailIdsByDb)); + } + } + //保存物料明细信息 + updateBatchById(outMaterialDetailList); + return stockOutOrderPO; + } + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param pickingMaterialDetailList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchPickingUpdate(List pickingMaterialDetailList) { + if (CollectionUtils.isEmpty(pickingMaterialDetailList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改物料信息 + List outMaterialDetailList = new ArrayList<>(); + for (PickingMaterialDetail pickingMaterialDetail : pickingMaterialDetailList){ + //设置目标库位信息 + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + outMaterialDetail.setUniqueId(pickingMaterialDetail.getUniqueId()); + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + outMaterialDetail.setPickingQuantity(pickingMaterialDetail.getPickingQuantity()); + outMaterialDetailList.add(outMaterialDetail); + } + //保存物料明细信息 + return saveOrUpdateBatch(outMaterialDetailList); + } + + /** + * @description 复核单个修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public OutMaterialCheckPO singleCheckUpdate(StockOutOrderDO stockOutOrderDO) { + OutMaterialDetail outMaterialDetailDb = null; + if (StringUtils.isNotBlank(stockOutOrderDO.getBarCode())){ + outMaterialDetailDb = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber()) + .eq(OutMaterialDetail::getBarCode, stockOutOrderDO.getBarCode())); + }else { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = outMaterialDetailSerialNumberService.getOne(new QueryWrapper().lambda() + .eq(OutMaterialDetailSerialNumber::getSerialNumber, stockOutOrderDO.getSerialNumber())); + outMaterialDetailDb = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getUniqueId, outMaterialDetailSerialNumber.getMaterialDetailUniqueId())); + } + if(outMaterialDetailDb == null){ + throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】不存在此物料"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //设置复核数量 + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + outMaterialDetail.setMaterialDetailId(outMaterialDetailDb.getMaterialDetailId()); + BigDecimal actualQuantity = stockOutOrderDO.getActualQuantity(); + outMaterialDetail.setCheckQuantity(outMaterialDetailDb.getCheckQuantity().add(actualQuantity)); + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + //保存物料明细信息 + updateById(outMaterialDetail); + OutMaterialCheckPO outMaterialCheckPO = new OutMaterialCheckPO(); + outMaterialCheckPO.setNumber(outMaterialDetailDb.getUnitNumber()); + outMaterialCheckPO.setWantNumber(outMaterialDetailDb.getPickingQuantity()); + outMaterialCheckPO.setAlreadyNumber(outMaterialDetail.getCheckQuantity()); + outMaterialCheckPO.setNotHaveNumber(outMaterialDetailDb.getPickingQuantity().subtract(outMaterialDetail.getCheckQuantity())); + return outMaterialCheckPO; + } + + /** + * @description 复核批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutOrderDO + * @param type 1-复核 2-取消复核 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public StockOutOrderPO batchCheckUpdate(StockOutOrderDO stockOutOrderDO, Integer type) { + List outMaterialDetailDOList = stockOutOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(outMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outMaterialDetailDbList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber()) + .eq(OutMaterialDetail::getLevel, 1) + .eq(OutMaterialDetail::getDelFlag, 1)); + Map materialDetailMap = outMaterialDetailDbList.stream().collect(Collectors.toMap(OutMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List outMaterialDetailList = new ArrayList<>(); + BigDecimal checkQuantity = BigDecimal.ZERO; + for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList){ + OutMaterialDetail outMaterialDetailDb = materialDetailMap.get(outMaterialDetailDO.getMaterialDetailId()); + if (outMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + //设置复核数量 + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + outMaterialDetail.setMaterialDetailId(outMaterialDetailDO.getMaterialDetailId()); + if (1 == type){ + //复核 + outMaterialDetail.setCheckQuantity(outMaterialDetailDb.getCheckQuantity().add(outMaterialDetailDO.getActualQuantity())); + }else { + //取消复核 + outMaterialDetail.setCheckQuantity(outMaterialDetailDb.getCheckQuantity().subtract(outMaterialDetailDO.getActualQuantity())); + } + outMaterialDetail.setUpdateBy(loginUser.getUserid()); + outMaterialDetail.setUpdateByName(loginUser.getUsername()); + outMaterialDetail.setUpdateTime(new Date()); + outMaterialDetailList.add(outMaterialDetail); + checkQuantity = checkQuantity.add(outMaterialDetailDO.getActualQuantity()); + } + //保存物料明细信息 + saveOrUpdateBatch(outMaterialDetailList); + StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); + stockOutOrderPO.setCheckQuantity(checkQuantity); + return stockOutOrderPO; + } + + /** + * 批量删除物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + OutMaterialDetail outMaterialDetail = new OutMaterialDetail(); + outMaterialDetail.setMaterialDetailId(id); + outMaterialDetail.setDelFlag(2); + list.add(outMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细 + */ + @Override + public OutMaterialDetailPO getInfo(Long materialDetailId) { + OutMaterialDetail outMaterialDetail = this.getById(materialDetailId); + OutMaterialDetailPO outMaterialDetailPO = new OutMaterialDetailPO(); + BeanUtils.copyProperties(outMaterialDetail, outMaterialDetailPO); + return outMaterialDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialCheckPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialCheckPO.java new file mode 100644 index 000000000..3b31b98df --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialCheckPO.java @@ -0,0 +1,42 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author ZhouGY + * @title OutMaterialCheckPO + * @description: 出库复审信息统计 + * @date 2024/5/31 10:33 + **/ +@Data +public class OutMaterialCheckPO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料数") + private Integer count; + + @ApiModelProperty("总重量") + @Excel(name = "总重量") + private BigDecimal weightLimit; + + @ApiModelProperty("总体积") + @Excel(name = "总体积") + private BigDecimal volumeLimit; + + @ApiModelProperty("数量EA") + private BigDecimal number; + + @ApiModelProperty("需扫描数") + private BigDecimal wantNumber; + + @ApiModelProperty("已扫描数") + private BigDecimal alreadyNumber; + + @ApiModelProperty("未扫描数") + private BigDecimal notHaveNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailPO.java new file mode 100644 index 000000000..665a73b5b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/po/OutMaterialDetailPO.java @@ -0,0 +1,233 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderBaseDO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "物料明细对象", description = "物料明细响应对象") +public class OutMaterialDetailPO extends StockOutOrderBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已分配数量") + @Excel(name = "已分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("待复核数量") + @Excel(name = "待复核数量") + private BigDecimal waitCheckQuantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("分配仓库id") + private Long warehouseId; + + @ApiModelProperty("分配仓库编码") + @Excel(name = "分配仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("分配库区id") + @Excel(name = "分配库区id") + private Long storageSectionId; + + @ApiModelProperty("分配库区编码") + @Excel(name = "分配库区编码") + private String storageCode; + + @ApiModelProperty("分配库区名称") + @Excel(name = "分配库区名称") + private String storageName; + + @ApiModelProperty("分配库位id") + @Excel(name = "分配库位id") + private Long storageLocationId; + + @ApiModelProperty("分配库位编码") + @Excel(name = "分配库位编码") + private String storageLocationCode; + + @ApiModelProperty("分配库位名称") + @Excel(name = "分配库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成拣货单: 1-是 2-否") + @Excel(name = "是否生成拣货单: 1-是 2-否") + private Integer genPickingOrder; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List children; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailBaseDO.java new file mode 100644 index 000000000..dbc0dc89a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailBaseDO.java @@ -0,0 +1,34 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title StockBaseDO + * @description: TODO + * @date 2024/5/23 20:30 + **/ +@Data +public class OutMaterialDetailBaseDO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailDO.java new file mode 100644 index 000000000..0cbf9ff15 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/repository/todo/OutMaterialDetailDO.java @@ -0,0 +1,241 @@ +package com.mhd.wms.domain.outMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class OutMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已分配数量") + @Excel(name = "已分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("分配仓库id") + private Long warehouseId; + + @ApiModelProperty("分配仓库编码") + @Excel(name = "分配仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("分配库区id") + @Excel(name = "分配库区id") + private Long storageSectionId; + + @ApiModelProperty("分配库区编码") + @Excel(name = "分配库区编码") + private String storageCode; + + @ApiModelProperty("分配库区名称") + @Excel(name = "分配库区名称") + private String storageName; + + @ApiModelProperty("分配库位id") + @Excel(name = "分配库位id") + private Long storageLocationId; + + @ApiModelProperty("分配库位编码") + @Excel(name = "分配库位编码") + private String storageLocationCode; + + @ApiModelProperty("分配库位名称") + @Excel(name = "分配库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + private Long parentUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成拣货单: 1-是 2-否") + @Excel(name = "是否生成拣货单: 1-是 2-否") + private Integer genPickingOrder; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("出单号集合") + @Excel(name = "出单号集合") + private List outOrderNumberList; + + @ApiModelProperty("取消分配数量") + @Excel(name = "取消分配数量") + private BigDecimal cancelAllocationQuantity; + + @ApiModelProperty("订单物料明细id") + private List materialDetailIds; + + @ApiModelProperty("作业数量(例如:分配数量 拣货数量 复核数量)") + @Excel(name = "作业数量(例如:分配数量 拣货数量 复核数量)") + private BigDecimal actualQuantity; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java new file mode 100644 index 000000000..7ddef5c48 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetail/service/OutMaterialDetailDomainService.java @@ -0,0 +1,64 @@ +package com.mhd.wms.domain.outMaterialDetail.service; + +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class OutMaterialDetailDomainService { + + @Autowired + private IOutMaterialDetailService outMaterialDetailService; + + + /** + * 分页查询物料明细列表 + */ + public List queryList(OutMaterialDetailDO outMaterialDetailDO) { + return outMaterialDetailService.queryList(outMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(OutMaterialDetailDO outMaterialDetailDO) { + + return outMaterialDetailService.insert(outMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(OutMaterialDetailDO outMaterialDetailDO) { + return outMaterialDetailService.update(outMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return outMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public OutMaterialDetailPO getInfo(Long materialDetailId) + { + return outMaterialDetailService.getInfo(materialDetailId); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/entity/OutMaterialDetailSerialNumber.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/entity/OutMaterialDetailSerialNumber.java new file mode 100644 index 000000000..665c30f27 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/entity/OutMaterialDetailSerialNumber.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 出库单物料明细序列号对象 out_material_detail_serial_number + * + * @author gen + * @date 2024-06-03 + */ + +@Data +public class OutMaterialDetailSerialNumber extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细序列号id") + @TableId(type = IdType.AUTO) + private Long outMaterialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("来源物料明细id") + @Excel(name = "来源物料明细id") + private Long materialDetailUniqueId; + + @ApiModelProperty("类型:1-拣货序列号") + @Excel(name = "类型:1-拣货序列号") + private Integer type; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/facade/IOutMaterialDetailSerialNumberService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/facade/IOutMaterialDetailSerialNumberService.java new file mode 100644 index 000000000..318b198c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/facade/IOutMaterialDetailSerialNumberService.java @@ -0,0 +1,52 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; + +import java.util.List; + +/** + * 出库单物料明细序列号Service接口 + * + * @author gen + * @date 2024-06-03 + */ +public interface IOutMaterialDetailSerialNumberService extends IService +{ + /** + * 分页查询出库单物料明细序列号列表 + */ + public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO); + + /** + * 新增出库单物料明细序列号 + */ + public Boolean insert(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO); + + /** + * 修改出库单物料明细序列号 + */ + public Boolean update(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO); + + /** + * 批量删除出库单物料明细序列号 + */ + public Boolean delete(Long[] outMaterialDetailSerialNumberIds); + + + /** + * 查询出库单物料明细序列号 + */ + public OutMaterialDetailSerialNumberPO getInfo(Long outMaterialDetailSerialNumberId); + + /** + * @description 批量删除并新增 + * @author ZhouGY + * @date 2024/7/30 10:41 + * @param outMaterialDetailSerialNumberList + * @return Boolean + */ + public Boolean batchDeleteAndInsert(List outMaterialDetailSerialNumberList); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/mapper/OutMaterialDetailSerialNumberMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/mapper/OutMaterialDetailSerialNumberMapper.java new file mode 100644 index 000000000..4fe2db788 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/mapper/OutMaterialDetailSerialNumberMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; + +import java.util.List; + +/** + * 出库单物料明细序列号Mapper接口 + * + * @author gen + * @date 2024-06-03 + */ +public interface OutMaterialDetailSerialNumberMapper extends BaseMapper +{ + /** + * 查询出库单物料明细序列号列表 + */ + public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/persistence/OutMaterialDetailSerialNumberImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/persistence/OutMaterialDetailSerialNumberImpl.java new file mode 100644 index 000000000..02e85cac0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/persistence/OutMaterialDetailSerialNumberImpl.java @@ -0,0 +1,99 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.mapper.OutMaterialDetailSerialNumberMapper; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 出库单物料明细序列号Service业务层处理 + * + * @author gen + * @date 2024-06-03 + */ +@Service +public class OutMaterialDetailSerialNumberImpl extends ServiceImpl implements IOutMaterialDetailSerialNumberService { + @Autowired + private OutMaterialDetailSerialNumberMapper outMaterialDetailSerialNumberMapper; + + /** + * 查询出库单物料明细序列号列表 + */ + @Override + public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) + { + return outMaterialDetailSerialNumberMapper.queryList(outMaterialDetailSerialNumberDO); + } + + /** + * 新增出库单物料明细序列号 + */ + @Override + public Boolean insert(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + BeanUtils.copyProperties(outMaterialDetailSerialNumberDO,outMaterialDetailSerialNumber); + return this.save(outMaterialDetailSerialNumber); + } + + /** + * 修改出库单物料明细序列号 + */ + @Override + public Boolean update(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + BeanUtils.copyProperties(outMaterialDetailSerialNumberDO,outMaterialDetailSerialNumber); + return this.updateById(outMaterialDetailSerialNumber); + } + + /** + * 批量删除出库单物料明细序列号 + */ + @Override + public Boolean delete(Long[] outMaterialDetailSerialNumberIds ) { + List list = new ArrayList<>(); + for (Long id : outMaterialDetailSerialNumberIds) { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + outMaterialDetailSerialNumber.setOutMaterialDetailSerialNumberId(id); + outMaterialDetailSerialNumber.setDelFlag(2); + list.add(outMaterialDetailSerialNumber); + } + return this.updateBatchById(list); + } + + /** + * 修改出库单物料明细序列号 + */ + @Override + public OutMaterialDetailSerialNumberPO getInfo(Long outMaterialDetailSerialNumberId) { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = this.getById(outMaterialDetailSerialNumberId); + OutMaterialDetailSerialNumberPO outMaterialDetailSerialNumberPO = new OutMaterialDetailSerialNumberPO(); + BeanUtils.copyProperties(outMaterialDetailSerialNumber,outMaterialDetailSerialNumberPO); + return outMaterialDetailSerialNumberPO; + } + + /** + * @description 批量删除并新增 + * @author ZhouGY + * @date 2024/7/30 10:41 + * @param outMaterialDetailSerialNumberList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchDeleteAndInsert(List outMaterialDetailSerialNumberList){ + //根据Id先删除旧的 + List outMaterialDetailSerialNumberIdList = outMaterialDetailSerialNumberList.stream().map(OutMaterialDetailSerialNumber::getOutMaterialDetailSerialNumberId).distinct().collect(Collectors.toList()); + outMaterialDetailSerialNumberMapper.deleteBatchIds(outMaterialDetailSerialNumberIdList); + return saveBatch(outMaterialDetailSerialNumberList); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/po/OutMaterialDetailSerialNumberPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/po/OutMaterialDetailSerialNumberPO.java new file mode 100644 index 000000000..bb14314e9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/po/OutMaterialDetailSerialNumberPO.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 出库单物料明细序列号对象 out_material_detail_serial_number + * + * @author gen + * @date 2024-06-03 + */ + +@Data +@ApiModel(value = "出库单物料明细序列号对象", description = "出库单物料明细序列号响应对象") +public class OutMaterialDetailSerialNumberPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细序列号id") + private Long outMaterialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("来源物料明细id") + @Excel(name = "来源物料明细id") + private Long materialDetailUniqueId; + + @ApiModelProperty("类型:1-拣货序列号") + @Excel(name = "类型:1-拣货序列号") + private Integer type; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/todo/OutMaterialDetailSerialNumberDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/todo/OutMaterialDetailSerialNumberDO.java new file mode 100644 index 000000000..2505471e0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/repository/todo/OutMaterialDetailSerialNumberDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 出库单物料明细序列号对象 out_material_detail_serial_number + * + * @author gen + * @date 2024-06-03 + */ + +@Data +public class OutMaterialDetailSerialNumberDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细序列号id") + private Long outMaterialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("来源物料明细id") + @Excel(name = "来源物料明细id") + private Long materialDetailUniqueId; + + @ApiModelProperty("类型:1-拣货序列号") + @Excel(name = "类型:1-拣货序列号") + private Integer type; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/service/OutMaterialDetailSerialNumberDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/service/OutMaterialDetailSerialNumberDomainService.java new file mode 100644 index 000000000..b2a411c66 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outMaterialDetailSerialNumber/service/OutMaterialDetailSerialNumberDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.outMaterialDetailSerialNumber.service; + +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库单物料明细序列号 + * + * @author gen + * @date 2024-06-03 + */ +@Service +@Slf4j +public class OutMaterialDetailSerialNumberDomainService { + + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + + + /** + * 分页查询出库单物料明细序列号列表 + */ + public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + return outMaterialDetailSerialNumberService.queryList(outMaterialDetailSerialNumberDO); + } + + + /** + * 新增出库单物料明细序列号 + */ + public Boolean insert(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + + return outMaterialDetailSerialNumberService.insert(outMaterialDetailSerialNumberDO); + } + + /** + * 修改出库单物料明细序列号 + */ + public Boolean update(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) { + return outMaterialDetailSerialNumberService.update(outMaterialDetailSerialNumberDO); + } + + /** + * 批量删除出库单物料明细序列号 + */ + public Boolean delete(Long[] outMaterialDetailSerialNumberIds) { + return outMaterialDetailSerialNumberService.delete(outMaterialDetailSerialNumberIds); + } + + /** + * 获取出库单物料明细序列号详细信息 + */ + public OutMaterialDetailSerialNumberPO getInfo(Long outMaterialDetailSerialNumberId) + { + return outMaterialDetailSerialNumberService.getInfo(outMaterialDetailSerialNumberId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/entity/OutOrderAbnormal.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/entity/OutOrderAbnormal.java new file mode 100644 index 000000000..c3a97fdf7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/entity/OutOrderAbnormal.java @@ -0,0 +1,85 @@ +package com.mhd.wms.domain.outOrderAbnormal.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 出库异常单对象 out_order_abnormal + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class OutOrderAbnormal extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库异常单id") + @TableId(type = IdType.AUTO) + private Long outOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货作业单号") + @Excel(name = "拣货作业单号") + private String outTaskOrderNumber; + + @ApiModelProperty("类型:1-拣货 2-复核") + @Excel(name = "类型:1-拣货 2-复核") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("异常数量 = 作业数量 - 计划数量") + @Excel(name = "异常数量 = 作业数量 - 计划数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-拣货异常 2-复核异常") + @Excel(name = "异常类型: 1-拣货异常 2-复核异常") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/facade/IOutOrderAbnormalService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/facade/IOutOrderAbnormalService.java new file mode 100644 index 000000000..3d2cf0f1d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/facade/IOutOrderAbnormalService.java @@ -0,0 +1,54 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.outOrderAbnormal.entity.OutOrderAbnormal; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; + +import java.util.List; + +/** + * 出库异常单Service接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface IOutOrderAbnormalService extends IService +{ + /** + * 分页查询出库异常单列表 + */ + public List queryList(OutOrderAbnormalDO outOrderAbnormalDO); + + /** + * 新增出库异常单 + */ + public Boolean insert(OutOrderAbnormalDO outOrderAbnormalDO); + + /** + * 修改出库异常单 + */ + public Boolean update(OutOrderAbnormalDO outOrderAbnormalDO); + + /** + * 批量删除出库异常单 + */ + public Boolean delete(Long[] outOrderAbnormalIds); + + + /** + * 查询出库异常单 + */ + public OutOrderAbnormalPO getInfo(Long outOrderAbnormalId); + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/5/22 21:15 + * @param outOrderAbnormalBaseDO + * @param type 1-拣货 2-复核 + * @return Boolean + */ + public Boolean genOutOrderAbnormal(OutOrderAbnormalBaseDO outOrderAbnormalBaseDO, Integer type); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/mapper/OutOrderAbnormalMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/mapper/OutOrderAbnormalMapper.java new file mode 100644 index 000000000..3f4c71901 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/mapper/OutOrderAbnormalMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.outOrderAbnormal.entity.OutOrderAbnormal; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; + +import java.util.List; + +/** + * 出库异常单Mapper接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface OutOrderAbnormalMapper extends BaseMapper +{ + /** + * 查询出库异常单列表 + */ + public List queryList(OutOrderAbnormalDO outOrderAbnormalDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java new file mode 100644 index 000000000..8182204bd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/persistence/OutOrderAbnormalImpl.java @@ -0,0 +1,211 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outOrderAbnormal.entity.OutOrderAbnormal; +import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; +import com.mhd.wms.domain.outOrderAbnormal.repository.mapper.OutOrderAbnormalMapper; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 出库异常单Service业务层处理 + * + * @author gen + * @date 2024-05-28 + */ +@Service +public class OutOrderAbnormalImpl extends ServiceImpl implements IOutOrderAbnormalService { + @Autowired + private OutOrderAbnormalMapper outOrderAbnormalMapper; + @Autowired + private OutMaterialDetailMapper outMaterialDetailMapper; + @Autowired + private PickingMaterialDetailMapper pickingMaterialDetailMapper; + + /** + * 查询出库异常单列表 + */ + @Override + public List queryList(OutOrderAbnormalDO outOrderAbnormalDO) + { + return outOrderAbnormalMapper.queryList(outOrderAbnormalDO); + } + + /** + * 新增出库异常单 + */ + @Override + public Boolean insert(OutOrderAbnormalDO outOrderAbnormalDO) { + OutOrderAbnormal outOrderAbnormal = new OutOrderAbnormal(); + BeanUtils.copyProperties(outOrderAbnormalDO,outOrderAbnormal); + return this.save(outOrderAbnormal); + } + + /** + * 修改出库异常单 + */ + @Override + public Boolean update(OutOrderAbnormalDO outOrderAbnormalDO) { + OutOrderAbnormal outOrderAbnormal = new OutOrderAbnormal(); + BeanUtils.copyProperties(outOrderAbnormalDO,outOrderAbnormal); + return this.updateById(outOrderAbnormal); + } + + /** + * 批量删除出库异常单 + */ + @Override + public Boolean delete(Long[] outOrderAbnormalIds ) { + List list = new ArrayList<>(); + for (Long id : outOrderAbnormalIds) { + OutOrderAbnormal outOrderAbnormal = new OutOrderAbnormal(); + outOrderAbnormal.setOutOrderAbnormalId(id); + outOrderAbnormal.setDelFlag(2); + list.add(outOrderAbnormal); + } + return this.updateBatchById(list); + } + + /** + * 修改出库异常单 + */ + @Override + public OutOrderAbnormalPO getInfo(Long outOrderAbnormalId) { + OutOrderAbnormal outOrderAbnormal = this.getById(outOrderAbnormalId); + OutOrderAbnormalPO outOrderAbnormalPO = new OutOrderAbnormalPO(); + BeanUtils.copyProperties(outOrderAbnormal,outOrderAbnormalPO); + return outOrderAbnormalPO; + } + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/5/22 21:15 + * @param outOrderAbnormalBaseDO + * @param type 1-拣货 2-复核 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genOutOrderAbnormal(OutOrderAbnormalBaseDO outOrderAbnormalBaseDO, Integer type){ + List outOrderAbnormalList = new ArrayList<>(); + if (1 == type){ + List outMaterialDetailList = pickingMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(PickingMaterialDetail::getPickingOrderNumber, outOrderAbnormalBaseDO.getPickingOrderNumber())); + //拣货数量与计划数量不符,完成收货会生成拣货异常记录 + outOrderAbnormalList.addAll(genPickingOrderMaterialDetailList(outOrderAbnormalBaseDO, outMaterialDetailList)); + }else if (2 == type) { + List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOutOrderNumber, outOrderAbnormalBaseDO.getOutOrderNumber())); + //复核数量与拣货数量不符,完成收货会生成复核异常记录 + outOrderAbnormalList.addAll(genCheckOrderMaterialDetailList(outOrderAbnormalBaseDO, outMaterialDetailList)); + }else { + throw new ServiceException("异常类型错误"); + } + if (!CollectionUtils.isEmpty(outOrderAbnormalList)){ + return saveBatch(outOrderAbnormalList); + } + return true; + } + + /** + * @description 拣货数量与分配数量不符,完成收货会生成拣货异常记录 + * @author ZhouGY + * @date 2024/5/24 11:45 + * @param OutOrderAbnormalBaseDO + * @param pickingMaterialDetailList + * @return List + */ + private List genPickingOrderMaterialDetailList(OutOrderAbnormalBaseDO OutOrderAbnormalBaseDO, List pickingMaterialDetailList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outOrderAbnormalList = new ArrayList<>(); + for (PickingMaterialDetail pickingMaterialDetail : pickingMaterialDetailList){ + //拣货 + if (pickingMaterialDetail.getPickingQuantity().compareTo(pickingMaterialDetail.getQuantity()) != 0){ + //判断是否存在异常 根据设置的是否允许超收 取值动态赋值 先默认写死 收货异常 + OutOrderAbnormal outOrderAbnormal = new OutOrderAbnormal(); + //赋值基础数据 + BeanUtils.copyProperties(OutOrderAbnormalBaseDO, outOrderAbnormal); + //赋值物料信息 + BeanUtils.copyProperties(pickingMaterialDetail, outOrderAbnormal, IgnoreNullUtil.getNullPropertyNames(pickingMaterialDetail)); + outOrderAbnormal.setAbnormalNumber(OrderSequence.getOrderCode("JHYC")); + outOrderAbnormal.setAbnormalType(1); + outOrderAbnormal.setActualQuantity(pickingMaterialDetail.getPickingQuantity()); + if (pickingMaterialDetail.getPickingQuantity().compareTo(pickingMaterialDetail.getQuantity()) > 0){ + //拣货数量大于分配数量 + outOrderAbnormal.setAbnormalReason("拣货数量大于分配数量"); + }else if (pickingMaterialDetail.getPickingQuantity().compareTo(pickingMaterialDetail.getQuantity()) < 0){ + //拣货数量小于分配数量 + outOrderAbnormal.setAbnormalReason("拣货数量小于分配数量"); + } + outOrderAbnormal.setAbnormalActualQuantity(pickingMaterialDetail.getPickingQuantity().subtract(pickingMaterialDetail.getQuantity())); + outOrderAbnormal.setCreateBy(loginUser.getUserid()); + outOrderAbnormal.setCreateByName(loginUser.getUsername()); + outOrderAbnormal.setCreateTime(new Date()); + outOrderAbnormalList.add(outOrderAbnormal); + } + } + return outOrderAbnormalList; + } + + /** + * @description 复核数量与拣货数量不符,完成收货会生成复核异常记录 + * @author ZhouGY + * @date 2024/5/24 11:45 + * @param OutOrderAbnormalBaseDO + * @param outMaterialDetailList + * @return List + */ + private List genCheckOrderMaterialDetailList(OutOrderAbnormalBaseDO OutOrderAbnormalBaseDO, List outMaterialDetailList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outOrderAbnormalList = new ArrayList<>(); + for (OutMaterialDetail outMaterialDetail : outMaterialDetailList){ + //复核 + if (outMaterialDetail.getCheckQuantity().compareTo(outMaterialDetail.getQuantity()) != 0){ + //判断是否存在异常 根据设置的是否允许超收 取值动态赋值 先默认写死 收货异常 + OutOrderAbnormal outOrderAbnormal = new OutOrderAbnormal(); + //赋值基础数据 + BeanUtils.copyProperties(OutOrderAbnormalBaseDO, outOrderAbnormal); + //赋值物料信息 + BeanUtils.copyProperties(outMaterialDetail, outOrderAbnormal, IgnoreNullUtil.getNullPropertyNames(outMaterialDetail)); + outOrderAbnormal.setAbnormalNumber(OrderSequence.getOrderCode("FSYC")); + outOrderAbnormal.setAbnormalType(2);//复核异常 + outOrderAbnormal.setActualQuantity(outMaterialDetail.getCheckQuantity()); + if (outMaterialDetail.getCheckQuantity().compareTo(outMaterialDetail.getPickingQuantity()) > 0){ + //复核数量大于拣货数量 + outOrderAbnormal.setAbnormalReason("复核数量大于拣货数量"); + }else if (outMaterialDetail.getCheckQuantity().compareTo(outMaterialDetail.getPickingQuantity()) < 0){ + //复核数量小于拣货数量 + outOrderAbnormal.setAbnormalReason("复核数量小于拣货数量"); + } + outOrderAbnormal.setAbnormalActualQuantity(outMaterialDetail.getCheckQuantity().subtract(outMaterialDetail.getPickingQuantity())); + outOrderAbnormal.setCreateBy(loginUser.getUserid()); + outOrderAbnormal.setCreateByName(loginUser.getUsername()); + outOrderAbnormal.setCreateTime(new Date()); + outOrderAbnormalList.add(outOrderAbnormal); + } + } + return outOrderAbnormalList; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java new file mode 100644 index 000000000..6321169c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/po/OutOrderAbnormalPO.java @@ -0,0 +1,117 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 出库异常单对象 out_order_abnormal + * + * @author gen + * @date 2024-05-28 + */ + +@Data +@ApiModel(value = "出库异常单对象", description = "出库异常单响应对象") +public class OutOrderAbnormalPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库异常单id") + private Long outOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货作业单号") + @Excel(name = "拣货作业单号") + private String outTaskOrderNumber; + + @ApiModelProperty("类型:1-拣货 2-复核") + @Excel(name = "类型:1-拣货 2-复核") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("异常数量 = 作业数量 - 计划数量") + @Excel(name = "异常数量 = 作业数量 - 计划数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-拣货异常 2-复核异常") + @Excel(name = "异常类型: 1-拣货异常 2-复核异常") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalBaseDO.java new file mode 100644 index 000000000..9f9f97217 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalBaseDO.java @@ -0,0 +1,42 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title StockBaseDO + * @description: TODO + * @date 2024/5/23 20:30 + **/ +@Data +public class OutOrderAbnormalBaseDO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货作业单号") + @Excel(name = "拣货作业单号") + private String outTaskOrderNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalDO.java new file mode 100644 index 000000000..6c9328db7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/repository/todo/OutOrderAbnormalDO.java @@ -0,0 +1,119 @@ +package com.mhd.wms.domain.outOrderAbnormal.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 出库异常单对象 out_order_abnormal + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class OutOrderAbnormalDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库异常单id") + private Long outOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货作业单号") + @Excel(name = "拣货作业单号") + private String outTaskOrderNumber; + + @ApiModelProperty("类型:1-拣货 2-复核") + @Excel(name = "类型:1-拣货 2-复核") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("异常数量 = 作业数量 - 计划数量") + @Excel(name = "异常数量 = 作业数量 - 计划数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-拣货异常 2-复核异常") + @Excel(name = "异常类型: 1-拣货异常 2-复核异常") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/service/OutOrderAbnormalDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/service/OutOrderAbnormalDomainService.java new file mode 100644 index 000000000..a41e7c6ed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/outOrderAbnormal/service/OutOrderAbnormalDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.outOrderAbnormal.service; + +import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库异常单 + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class OutOrderAbnormalDomainService { + + @Autowired + private IOutOrderAbnormalService outOrderAbnormalService; + + + /** + * 分页查询出库异常单列表 + */ + public List queryList(OutOrderAbnormalDO outOrderAbnormalDO) { + return outOrderAbnormalService.queryList(outOrderAbnormalDO); + } + + + /** + * 新增出库异常单 + */ + public Boolean insert(OutOrderAbnormalDO outOrderAbnormalDO) { + + return outOrderAbnormalService.insert(outOrderAbnormalDO); + } + + /** + * 修改出库异常单 + */ + public Boolean update(OutOrderAbnormalDO outOrderAbnormalDO) { + return outOrderAbnormalService.update(outOrderAbnormalDO); + } + + /** + * 批量删除出库异常单 + */ + public Boolean delete(Long[] outOrderAbnormalIds) { + return outOrderAbnormalService.delete(outOrderAbnormalIds); + } + + /** + * 获取出库异常单详细信息 + */ + public OutOrderAbnormalPO getInfo(Long outOrderAbnormalId) + { + return outOrderAbnormalService.getInfo(outOrderAbnormalId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/entity/OverStock.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/entity/OverStock.java new file mode 100644 index 000000000..75ef17eaf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/entity/OverStock.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.overStock.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class OverStock extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("越库管理id") + @TableId(type = IdType.AUTO) + private Long overStockId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long type; + + @ApiModelProperty("越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + @Excel(name = "越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + private Integer status; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库行号") + @Excel(name = "入库行号") + private String inOrderLine; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库行号") + @Excel(name = "出库行号") + private String outOrderLine; + + @ApiModelProperty("越库数") + @Excel(name = "越库数") + private BigDecimal overStockNumber; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/facade/IOverStockService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/facade/IOverStockService.java new file mode 100644 index 000000000..7af7050b1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/facade/IOverStockService.java @@ -0,0 +1,73 @@ +package com.mhd.wms.domain.overStock.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.overStock.entity.OverStock; +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; + +import java.util.List; + +/** + * 越库管理Service接口 + * + * @author gen + * @date 2024-07-23 + */ +public interface IOverStockService extends IService +{ + /** + * 分页查询越库管理列表 + */ + public List queryList(OverStockDO overStockDO); + + /** + * 新增越库管理 + */ + public Boolean insert(OverStockDO overStockDO); + + /** + * 修改越库管理 + */ + public Boolean update(OverStockDO overStockDO); + + /** + * 批量删除越库管理 + */ + public Boolean delete(Long[] overStockIds); + + + /** + * 查询越库管理 + */ + public OverStockPO getInfo(Long overStockId); + + /** + * @description:查询越库管理入库出库详情列表 + * @param overStockDO + * @return: com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO + * @author: lianzj + * @time: 2024-07-26 10:05:49 + */ + OverStockInOrderOutOrderListPO overStockInOrderOutOrderDetailList(OverStockDO overStockDO); + + /** + * @description:执行越库 + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:10:24 + */ + boolean executeOverStock(ExecuteOverStockDO executeOverStockDO); + + /** + * @description:取消越库标记(分拨) + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:57:09 + */ + boolean cancelOverStock(ExecuteOverStockDO executeOverStockDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/mapper/OverStockMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/mapper/OverStockMapper.java new file mode 100644 index 000000000..4dd1d6ab5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/mapper/OverStockMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.overStock.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.overStock.entity.OverStock; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; + +import java.util.List; + +/** + * 越库管理Mapper接口 + * + * @author gen + * @date 2024-07-23 + */ +public interface OverStockMapper extends BaseMapper +{ + /** + * 查询越库管理列表 + */ + public List queryList(OverStockDO overStockDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/persistence/OverStockImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/persistence/OverStockImpl.java new file mode 100644 index 000000000..75be45992 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/persistence/OverStockImpl.java @@ -0,0 +1,453 @@ +package com.mhd.wms.domain.overStock.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.mapper.InMaterialDetailMapper; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.overStock.entity.OverStock; +import com.mhd.wms.domain.overStock.repository.facade.IOverStockService; +import com.mhd.wms.domain.overStock.repository.mapper.OverStockMapper; +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderDetailPO; +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 越库管理Service业务层处理 + * + * @author gen + * @date 2024-07-23 + */ +@Service +public class OverStockImpl extends ServiceImpl implements IOverStockService { + @Autowired + private OverStockMapper overStockMapper; + @Autowired + private StockInOrderMapper stockInOrderMapper; + @Autowired + private StockOutOrderMapper stockOutOrderMapper; + @Autowired + private InMaterialDetailMapper inMaterialDetailMapper; + @Autowired + private OutMaterialDetailMapper outMaterialDetailMapper; + + /** + * 查询越库管理列表 + */ + @Override + public List queryList(OverStockDO overStockDO) + { + return overStockMapper.queryList(overStockDO); + } + + /** + * 新增越库管理 + */ + @Override + @Transactional + public Boolean insert(OverStockDO overStockDO) { + Boolean flag = true; + OverStock overStock = new OverStock(); + BeanUtils.copyProperties(overStockDO,overStock); + LoginUser loginUser = SecurityUtils.getLoginUser(); + overStock.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + overStock.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + overStock.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + overStock.setCreateBy(loginUser.getUserid()); + overStock.setCreateByName(loginUser.getUsername()); + overStock.setCreateTime(new Date()); + //入库单号 + List inOrderNumberList = new ArrayList<>(); + if (StringUtils.isNotEmpty(overStockDO.getInOrderNumber())) { + inOrderNumberList = Arrays.asList(overStockDO.getInOrderNumber().split(",")); + } + //出库单号 + List outOrderNumberList = new ArrayList<>(); + if (StringUtils.isNotEmpty(overStockDO.getOutOrderNumber())) { + outOrderNumberList = Arrays.asList(overStockDO.getOutOrderNumber().split(",")); + } + //入库单表 + List stockInOrderList = stockInOrderMapper.selectList(new QueryWrapper().lambda() + .eq(BaseVOEntity::getDelFlag,1).in(StockInOrder::getInOrderNumber,inOrderNumberList)); + //出库单表 + List stockOutOrderList = stockOutOrderMapper.selectList(new QueryWrapper().lambda() + .eq(BaseVOEntity::getDelFlag,1).in(StockOutOrder::getOutOrderNumber,outOrderNumberList)); + + if (overStockDO.getType() != null && overStockDO.getType() == 1) { + if (CollectionUtils.isEmpty(inOrderNumberList)) { + throw new ServiceException("入库单号不能为空!"); + } + if (CollectionUtils.isEmpty(outOrderNumberList)) { + throw new ServiceException("出库单号不能为空!"); + } + //入库单计划数量 + BigDecimal inOrderNum = stockInOrderList.stream().map(StockInOrder::getQuantity).reduce(BigDecimal.ZERO,BigDecimal::add); + //出库单计划数量 + BigDecimal outOrderNum = stockOutOrderList.stream().map(StockOutOrder::getQuantity).reduce(BigDecimal.ZERO,BigDecimal::add); + if (inOrderNum.compareTo(BigDecimal.ZERO) == 0 || outOrderNum.compareTo(BigDecimal.ZERO) == 0) { + throw new ServiceException("入库单计划数量与出库单计划数量不能为0!"); + } + if (inOrderNum.compareTo(outOrderNum) != 0) { + throw new ServiceException("入库单计划数量与出库单计划数量不一致!"); + } + flag = this.save(overStock); + } else if (overStockDO.getType() != null && overStockDO.getType() == 2) { + if (CollectionUtils.isEmpty(inOrderNumberList) && CollectionUtils.isEmpty(outOrderNumberList)) { + throw new ServiceException("入库单号与出库单号不能为空!"); + } + flag = this.save(overStock); + } + //修改入库表和出库表 + if (!CollectionUtils.isEmpty(stockInOrderList)) { + for (int i = 0; i < stockInOrderList.size(); i++) { + StockInOrder stockInOrder = stockInOrderList.get(i); + stockInOrder.setOverStockId(overStock.getOverStockId()); + stockInOrder.setOverStockStatus(1); + if (overStockDO.getType() == 1) { + stockInOrder.setOverStockType(1L); + } else if (overStockDO.getType() == 2) { + stockInOrder.setOverStockType(2L); + } + stockInOrderMapper.updateById(stockInOrder); + List inMaterialDetailList = inMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(InMaterialDetail::getInOrderNumber,stockInOrder.getInOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(inMaterialDetailList)) { + for (int j = 0; j < inMaterialDetailList.size(); j++) { + InMaterialDetail inMaterialDetail = inMaterialDetailList.get(j); + inMaterialDetail.setOverStockId(overStock.getOverStockId()); + inMaterialDetail.setOverStockStatus(1); + if (overStockDO.getType() == 1) { + inMaterialDetail.setOverStockType(1L); + } else if (overStockDO.getType() == 2) { + inMaterialDetail.setOverStockType(2L); + } + inMaterialDetailMapper.updateById(inMaterialDetail); + } + } + } + } + if (!CollectionUtils.isEmpty(stockOutOrderList)) { + for (int i = 0; i < stockOutOrderList.size(); i++) { + StockOutOrder stockOutOrder = stockOutOrderList.get(i); + stockOutOrder.setOverStockId(overStock.getOverStockId()); + stockOutOrder.setOverStockStatus(1); + if (overStockDO.getType() == 1) { + stockOutOrder.setOverStockType(1L); + } else if (overStockDO.getType() == 2) { + stockOutOrder.setOverStockType(2L); + } + stockOutOrderMapper.updateById(stockOutOrder); + List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(BaseVOEntity::getDelFlag,1).eq(OutMaterialDetail::getOutOrderNumber,stockOutOrder.getOutOrderNumber())); + if (!CollectionUtils.isEmpty(outMaterialDetailList)) { + for (int j = 0; j < outMaterialDetailList.size(); j++) { + OutMaterialDetail outMaterialDetail = outMaterialDetailList.get(j); + outMaterialDetail.setOverStockId(overStock.getOverStockId()); + outMaterialDetail.setOverStockStatus(1); + if (overStockDO.getType() == 1) { + outMaterialDetail.setOverStockType(1L); + } else if (overStockDO.getType() == 2) { + outMaterialDetail.setOverStockType(2L); + } + outMaterialDetailMapper.updateById(outMaterialDetail); + } + } + } + } + return flag; + } + + /** + * 修改越库管理 + */ + @Override + public Boolean update(OverStockDO overStockDO) { + OverStock overStock = new OverStock(); + BeanUtils.copyProperties(overStockDO,overStock); + return this.updateById(overStock); + } + + /** + * 批量删除越库管理 + */ + @Override + public Boolean delete(Long[] overStockIds ) { + List list = new ArrayList<>(); + for (Long id : overStockIds) { + OverStock overStock = new OverStock(); + overStock.setOverStockId(id); + overStock.setDelFlag(2); + list.add(overStock); + } + return this.updateBatchById(list); + } + + /** + * 修改越库管理 + */ + @Override + public OverStockPO getInfo(Long overStockId) { + OverStock overStock = this.getById(overStockId); + OverStockPO overStockPO = new OverStockPO(); + BeanUtils.copyProperties(overStock,overStockPO); + return overStockPO; + } + + /** + * @description:查询越库管理入库出库详情列表 + * @param overStockDO + * @return: com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO + * @author: lianzj + * @time: 2024-07-26 10:06:12 + */ + @Override + public OverStockInOrderOutOrderListPO overStockInOrderOutOrderDetailList(OverStockDO overStockDO) { + OverStockInOrderOutOrderListPO overStockInOrderOutOrderListPO = new OverStockInOrderOutOrderListPO(); + //查询入库单详情列表 + List inMaterialDetailList = inMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(InMaterialDetail::getOverStockId,overStockDO.getOverStockId()).eq(InMaterialDetail::getOverStockStatus,1).eq(BaseVOEntity::getDelFlag,1)); + List inOrderDetailPOList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(inMaterialDetailList)) { + for (InMaterialDetail inMaterialDetail:inMaterialDetailList + ) { + OverStockInOrderOutOrderDetailPO overStockInOrderDetailPO = new OverStockInOrderOutOrderDetailPO(); + BeanUtils.copyProperties(inMaterialDetail,overStockInOrderDetailPO); + StockInOrder stockInOrder = stockInOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockInOrder::getInOrderNumber,inMaterialDetail.getInOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockInOrder)) { + overStockInOrderDetailPO.setOrderTypeName(stockInOrder.getOrderTypeName()); + overStockInOrderDetailPO.setOrderTypeCode(stockInOrder.getOrderTypeCode()); + overStockInOrderDetailPO.setExpectTime(stockInOrder.getExpectTime()); + } + inOrderDetailPOList.add(overStockInOrderDetailPO); + } + overStockInOrderOutOrderListPO.setInOrderDetailPOList(inOrderDetailPOList); + } + //查询出库单详情列表 + List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOverStockId,overStockDO.getOverStockId()).eq(OutMaterialDetail::getOverStockStatus,1).eq(BaseVOEntity::getDelFlag,1)); + List outOrderDetailPOList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(outMaterialDetailList)) { + for (OutMaterialDetail outMaterialDetail:outMaterialDetailList + ) { + OverStockInOrderOutOrderDetailPO overStockOutOrderDetailPO = new OverStockInOrderOutOrderDetailPO(); + BeanUtils.copyProperties(outMaterialDetail,overStockOutOrderDetailPO); + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber,outMaterialDetail.getOutOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockOutOrder)) { + overStockOutOrderDetailPO.setOrderTypeName(stockOutOrder.getOrderTypeName()); + overStockOutOrderDetailPO.setOrderTypeCode(stockOutOrder.getOrderTypeCode()); + overStockOutOrderDetailPO.setExpectTime(stockOutOrder.getExpectTime()); + } + outOrderDetailPOList.add(overStockOutOrderDetailPO); + } + overStockInOrderOutOrderListPO.setOutOrderDetailPOList(outOrderDetailPOList); + } + return overStockInOrderOutOrderListPO; + } + + /** + * @description:执行越库 + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:10:41 + */ + @Override + @Transactional + public boolean executeOverStock(ExecuteOverStockDO executeOverStockDO) { + if (CollectionUtils.isEmpty(executeOverStockDO.getInOrderDetailPOList()) || CollectionUtils.isEmpty(executeOverStockDO.getOutOrderDetailPOList())) { + throw new ServiceException("执行越库时出入库单必须同时存在"); + } + //入库单数量 + BigDecimal inOrderNum = executeOverStockDO.getInOrderDetailPOList().stream().map(OverStockInOrderOutOrderDetailPO::getQuantity).reduce(BigDecimal.ZERO,BigDecimal::add); + //出库单数量 + BigDecimal outOrderNum = executeOverStockDO.getOutOrderDetailPOList().stream().map(OverStockInOrderOutOrderDetailPO::getQuantity).reduce(BigDecimal.ZERO,BigDecimal::add); + if (inOrderNum.compareTo(outOrderNum) != 0) { + throw new ServiceException("入库数量与出库数量不一致不能执行越库!"); + } + //入库单执行越库 + for (int i = 0; i < executeOverStockDO.getInOrderDetailPOList().size(); i++) { + OverStockInOrderOutOrderDetailPO inOrderDetailPO = executeOverStockDO.getInOrderDetailPOList().get(i); + InMaterialDetail inMaterialDetail = inMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(InMaterialDetail::getMaterialDetailId,inOrderDetailPO.getMaterialDetailId()) + .eq(InMaterialDetail::getOverStockStatus,1) +// .eq(InMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(inMaterialDetail)) { + if (inMaterialDetail.getOverStockType() == 2) { + throw new ServiceException("分拨越库类型不允许执行越库"); + } + inMaterialDetail.setOverStockStatus(2); + inMaterialDetailMapper.updateById(inMaterialDetail); + StockInOrder stockInOrder = stockInOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockInOrder::getInOrderNumber,inMaterialDetail.getInOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockInOrder)) { + stockInOrder.setOverStockStatus(2); + stockInOrder.setStatus(5); + stockInOrderMapper.updateById(stockInOrder); + } + } else { + throw new ServiceException("未查询到执行越库入库单!"); + } + } + //出库单执行越库 + for (int i = 0; i < executeOverStockDO.getOutOrderDetailPOList().size(); i++) { + OverStockInOrderOutOrderDetailPO outOrderDetailPO = executeOverStockDO.getOutOrderDetailPOList().get(i); + OutMaterialDetail outMaterialDetail = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getMaterialDetailId,outOrderDetailPO.getMaterialDetailId()) + .eq(OutMaterialDetail::getOverStockStatus,1) +// .eq(OutMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(outMaterialDetail)) { + if (outMaterialDetail.getOverStockType() == 2) { + throw new ServiceException("分拨越库类型不允许执行越库"); + } + outMaterialDetail.setOverStockStatus(2); + outMaterialDetailMapper.updateById(outMaterialDetail); + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber,outMaterialDetail.getOutOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockOutOrder)) { + stockOutOrder.setOverStockStatus(2); + stockOutOrder.setStatus(9); + stockOutOrderMapper.updateById(stockOutOrder); + } + } else { + throw new ServiceException("未查询到执行越库出库单!"); + } + } + return true; + } + + /** + * @description:取消越库标记(分拨) + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:57:24 + */ + @Override + @Transactional + public boolean cancelOverStock(ExecuteOverStockDO executeOverStockDO) { + if (CollectionUtils.isEmpty(executeOverStockDO.getInOrderDetailPOList()) && CollectionUtils.isEmpty(executeOverStockDO.getOutOrderDetailPOList())) { + throw new ServiceException("取消越库标记时出入库单不能为空"); + } + //取消入库单越库标记 + if (!CollectionUtils.isEmpty(executeOverStockDO.getInOrderDetailPOList())) { + for (int i = 0; i < executeOverStockDO.getInOrderDetailPOList().size(); i++) { + OverStockInOrderOutOrderDetailPO inOrderDetailPO = executeOverStockDO.getInOrderDetailPOList().get(i); + InMaterialDetail inMaterialDetail = inMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(InMaterialDetail::getMaterialDetailId,inOrderDetailPO.getMaterialDetailId()) + .eq(InMaterialDetail::getOverStockStatus,1) +// .eq(InMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(inMaterialDetail)) { + if (inMaterialDetail.getOverStockType() == 1) { + throw new ServiceException("直接越库类型不允许执行取消越库标记"); + } + inMaterialDetail.setOverStockStatus(0); + inMaterialDetail.setOverStockId(0L); + inMaterialDetail.setOverStockType(0L); + inMaterialDetailMapper.updateById(inMaterialDetail); + StockInOrder stockInOrder = stockInOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockInOrder::getInOrderNumber,inMaterialDetail.getInOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockInOrder)) { + stockInOrder.setOverStockStatus(0); + stockInOrder.setOverStockId(0L); + stockInOrder.setOverStockType(0L); + stockInOrderMapper.updateById(stockInOrder); + } + } else { + throw new ServiceException("未查询到分拨越库入库单!"); + } + } + //判断是否还有出库单,若无,删掉越库单 + List outMaterialDetailList = outMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOverStockId,executeOverStockDO.getInOrderDetailPOList().get(0).getOverStockId()) + .eq(OutMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (CollectionUtils.isEmpty(outMaterialDetailList)) { + //删除越库管理 + OverStock overStock = overStockMapper.selectOne(new QueryWrapper().lambda() + .eq(OverStock::getOverStockId,executeOverStockDO.getInOrderDetailPOList().get(0).getOverStockId()) + .eq(OverStock::getType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(overStock)) { + overStock.setDelFlag(2); + overStockMapper.updateById(overStock); + } + } + } + //取消出库单越库标记 + if (!CollectionUtils.isEmpty(executeOverStockDO.getOutOrderDetailPOList())) { + for (int i = 0; i < executeOverStockDO.getOutOrderDetailPOList().size(); i++) { + OverStockInOrderOutOrderDetailPO outOrderDetailPO = executeOverStockDO.getOutOrderDetailPOList().get(i); + OutMaterialDetail outMaterialDetail = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getMaterialDetailId,outOrderDetailPO.getMaterialDetailId()) + .eq(OutMaterialDetail::getOverStockStatus,1) +// .eq(OutMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(outMaterialDetail)) { + if (outMaterialDetail.getOverStockType() == 1) { + throw new ServiceException("直接越库类型不允许执行取消越库标记"); + } + outMaterialDetail.setOverStockStatus(0); + outMaterialDetail.setOverStockId(0L); + outMaterialDetail.setOverStockType(0L); + outMaterialDetailMapper.updateById(outMaterialDetail); + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber,outMaterialDetail.getOutOrderNumber()).eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(stockOutOrder)) { + stockOutOrder.setOverStockStatus(0); + stockOutOrder.setOverStockId(0L); + stockOutOrder.setOverStockType(0L); + stockOutOrderMapper.updateById(stockOutOrder); + } + } else { + throw new ServiceException("未查询到分拨越库出库单!"); + } + } + //判断是否有入库单,若无,删除越库单 + List inMaterialDetailList = inMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(InMaterialDetail::getOverStockId,executeOverStockDO.getInOrderDetailPOList().get(0).getOverStockId()) + .eq(InMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (CollectionUtils.isEmpty(inMaterialDetailList)) { + //删除越库管理 + OverStock overStock = overStockMapper.selectOne(new QueryWrapper().lambda() + .eq(OverStock::getOverStockId,executeOverStockDO.getOutOrderDetailPOList().get(0).getOverStockId()) + .eq(OverStock::getType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (ObjectUtil.isNotNull(overStock)) { + overStock.setDelFlag(2); + overStockMapper.updateById(overStock); + } + } + } + return true; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderDetailPO.java new file mode 100644 index 000000000..1df0c543a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderDetailPO.java @@ -0,0 +1,102 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * TODO + * + * @author lianzj + * @version 1.0 + * @date 2024-07-27 11:19:36 + */ +@Data +public class OverStockInOrderOutOrderDetailPO { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("业务唯一id") + private Long uniqueId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("预计时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderListPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderListPO.java new file mode 100644 index 000000000..6c4319f22 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockInOrderOutOrderListPO.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * TODO 入库单出库单列表PO + * + * @author lianzj + * @version 1.0 + * @date 2024-07-26 10:00:32 + */ +@Data +public class OverStockInOrderOutOrderListPO { + + @ApiModelProperty(value = "入库单列表") + private List inOrderDetailPOList; + + @ApiModelProperty(value = "出库单列表") + private List outOrderDetailPOList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockPO.java new file mode 100644 index 000000000..7dd05df70 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/OverStockPO.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +@ApiModel(value = "越库管理对象", description = "越库管理响应对象") +public class OverStockPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("越库管理id") + private Long overStockId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long type; + + @ApiModelProperty("越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + @Excel(name = "越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + private Integer status; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库行号") + @Excel(name = "入库行号") + private String inOrderLine; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库行号") + @Excel(name = "出库行号") + private String outOrderLine; + + @ApiModelProperty("越库数") + @Excel(name = "越库数") + private BigDecimal overStockNumber; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockDetailPO.java new file mode 100644 index 000000000..dc355dafd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockDetailPO.java @@ -0,0 +1,30 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class QueryOrderOverStockDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单明细") + private List inMaterialDetailList; + + @ApiModelProperty("出库单明细") + private List outMaterialDetailList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockPO.java new file mode 100644 index 000000000..39c00c9f5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/QueryOrderOverStockPO.java @@ -0,0 +1,96 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class QueryOrderOverStockPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("入库单数") + @Excel(name = "入库单数") + private Integer inOrderNum; + + @ApiModelProperty("计划入库数") + @Excel(name = "计划入库数") + private BigDecimal inOrderQuantity; + + @ApiModelProperty("最早预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderLatestExpectTime; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库单数") + @Excel(name = "出库单数") + private Integer outOrderNum; + + @ApiModelProperty("计划出库数") + @Excel(name = "计划出库数") + private BigDecimal outOrderQuantity; + + @ApiModelProperty("最早预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderLatestExpectTime; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/ReceiptOverStockPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/ReceiptOverStockPO.java new file mode 100644 index 000000000..f6c80f465 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/po/ReceiptOverStockPO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.domain.overStock.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +@ApiModel(value = "越库管理对象", description = "越库管理响应对象") +public class ReceiptOverStockPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("入库单数") + @Excel(name = "入库单数") + private Integer inOrderNum; + + @ApiModelProperty("计划入库数") + @Excel(name = "计划入库数") + private BigDecimal inOrderQuantity; + + @ApiModelProperty("最早预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderLatestExpectTime; + + @ApiModelProperty("出库单数") + @Excel(name = "出库单数") + private Integer outOrderNum; + + @ApiModelProperty("计划出库数") + @Excel(name = "计划出库数") + private BigDecimal outOrderQuantity; + + @ApiModelProperty("最早预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderLatestExpectTime; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ExecuteOverStockDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ExecuteOverStockDO.java new file mode 100644 index 000000000..76b3a3ffc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ExecuteOverStockDO.java @@ -0,0 +1,24 @@ +package com.mhd.wms.domain.overStock.repository.todo; + +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * TODO + * + * @author lianzj + * @version 1.0 + * @date 2024-07-26 15:06:56 + */ +@Data +public class ExecuteOverStockDO { + @ApiModelProperty(value = "入库单列表") + + private List inOrderDetailPOList; + + @ApiModelProperty(value = "出库单列表") + private List outOrderDetailPOList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/OverStockDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/OverStockDO.java new file mode 100644 index 000000000..7a1a44e58 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/OverStockDO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.overStock.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class OverStockDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("越库管理id") + private Long overStockId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long type; + + @ApiModelProperty("越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + @Excel(name = "越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + private Integer status; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库行号") + @Excel(name = "入库行号") + private String inOrderLine; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库行号") + @Excel(name = "出库行号") + private String outOrderLine; + + @ApiModelProperty("越库数") + @Excel(name = "越库数") + private BigDecimal overStockNumber; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java new file mode 100644 index 000000000..a5ffd9009 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/QueryOrderOverStockDO.java @@ -0,0 +1,140 @@ +package com.mhd.wms.domain.overStock.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class QueryOrderOverStockDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String inOrderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String inOrderTypeName; + + @ApiModelProperty("预计到货时间 开始") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 开始", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderExpectStartTime; + + @ApiModelProperty("预计到货时间 结束") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 结束", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderExpectEndTime; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String outOrderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String outOrderTypeName; + + @ApiModelProperty("预计出货时间 开始") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 开始", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderExpectStartTime; + + @ApiModelProperty("预计出货时间 结束") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 结束", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderExpectEndTime; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private List shipperIdList; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private List materialBaseInfoIdList; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer inStatus; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-拣货中 6-波次中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-拣货中 6-波次中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer outStatus; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ReceiptOverStockDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ReceiptOverStockDO.java new file mode 100644 index 000000000..9c1f5040a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/repository/todo/ReceiptOverStockDO.java @@ -0,0 +1,108 @@ +package com.mhd.wms.domain.overStock.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class ReceiptOverStockDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("入库单数") + @Excel(name = "入库单数") + private Integer inOrderNum; + + @ApiModelProperty("计划入库数") + @Excel(name = "计划入库数") + private BigDecimal inOrderQuantity; + + @ApiModelProperty("最早预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderLatestExpectTime; + + @ApiModelProperty("出库单数") + @Excel(name = "出库单数") + private Integer outOrderNum; + + @ApiModelProperty("计划出库数") + @Excel(name = "计划出库数") + private BigDecimal outOrderQuantity; + + @ApiModelProperty("最早预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderLatestExpectTime; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/service/OverStockDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/service/OverStockDomainService.java new file mode 100644 index 000000000..babcc4818 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/overStock/service/OverStockDomainService.java @@ -0,0 +1,857 @@ +package com.mhd.wms.domain.overStock.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.utils.FieldChecker; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail; +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.overStock.entity.OverStock; +import com.mhd.wms.domain.overStock.repository.facade.IOverStockService; +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockDetailPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 越库管理 + * + * @author gen + * @date 2024-07-23 + */ +@Service +@Slf4j +public class OverStockDomainService { + + @Autowired + private IOverStockService overStockService; + @Autowired + private IMaterialInventoryService iMaterialInventoryService; + @Autowired + private IInMaterialDetailService inMaterialDetailService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; + @Autowired + private IStockInOrderService stockInOrderService; + @Autowired + private IStockOutOrderService stockOutOrderService; + + /** + * 分页查询越库管理列表 + */ + public List queryList(OverStockDO overStockDO) { + return overStockService.queryList(overStockDO); + } + + + /** + * 新增越库管理 + */ + public Boolean insert(OverStockDO overStockDO) { + + return overStockService.insert(overStockDO); + } + + /** + * 修改越库管理 + */ + public Boolean update(OverStockDO overStockDO) { + return overStockService.update(overStockDO); + } + + /** + * 批量删除越库管理 + */ + public Boolean delete(Long[] overStockIds) { + return overStockService.delete(overStockIds); + } + + /** + * 获取越库管理详细信息 + */ + public OverStockPO getInfo(Long overStockId) + { + return overStockService.getInfo(overStockId); + } + + /** + * @description:查询单据越库列表 + * @param queryOrderOverStockDO + * @return: java.util.List + * @author: lianzj + * @time: 2024-07-23 17:26:26 + */ + public List getByInAndOutOrder(QueryOrderOverStockDO queryOrderOverStockDO) { + List receiptOverStockPOList = new ArrayList<>(); + int result = handleRequest(queryOrderOverStockDO); + queryOrderOverStockDO.setInStatus(2); + queryOrderOverStockDO.setOutStatus(2); + queryOrderOverStockDO.setOverStockStatus(0); + switch (result){ + case 1: + //根据入库单查询条件 先查询入库单单数据 再根据入库单物料明细 查询对应出库信息 + receiptOverStockPOList = getByInOrder(queryOrderOverStockDO); + break; + case 2: + //根据出库单查询条件 先查询出库单单数据 再根据出库单物料明细 查询对应入库信息 + receiptOverStockPOList = getByOutOrder(queryOrderOverStockDO); + break; + case 3: + //查询入出库单单数据 + receiptOverStockPOList = getAllByInAndOutOrder(queryOrderOverStockDO); + break; + } + return receiptOverStockPOList; + } + + /** + * @description 根据入库单查询条件 先查询入库单单数据 再根据入库单物料明细 查询对应出库信息 + * @author ZhouGY + * @date 2024/7/25 13:48 + * @param queryOrderOverStockDO + * @return List + */ + public List getByInOrder(QueryOrderOverStockDO queryOrderOverStockDO){ + List inMaterialDetailPOList = inMaterialDetailService.queryInOrderList(queryOrderOverStockDO); + Map> inMaterialDetailPOListMap = inMaterialDetailPOList.stream().collect(Collectors.groupingBy(inMaterialDetailPO -> inMaterialDetailPO.getShipperId() + "_" + inMaterialDetailPO.getMaterialBaseInfoId())); + // 将 Map 的键集合进行拆分,处理可能的异常情况 + List shipperIdList = inMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 0 ? Long.parseLong(parts[0]) : 0L; + }) + .collect(Collectors.toList()); + + List materialBaseInfoIdListList = inMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 1 ? Long.parseLong(parts[1]) : 0L; + }) + .collect(Collectors.toList()); + queryOrderOverStockDO.setShipperIdList(shipperIdList); + queryOrderOverStockDO.setMaterialBaseInfoIdList(materialBaseInfoIdListList); + List outMaterialDetailPOList = outMaterialDetailService.queryOutOrderList(queryOrderOverStockDO); + Map> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(outMaterialDetailPO -> outMaterialDetailPO.getShipperId() + "_" + outMaterialDetailPO.getMaterialBaseInfoId())); + List queryOrderOverStockPOList = new ArrayList<>(); + for (Map.Entry> inMaterialDetailPOMap : inMaterialDetailPOListMap.entrySet()){ + String[] keys = inMaterialDetailPOMap.getKey().split("_"); + Long shipperId = Long.parseLong(keys[0]); + Long materialBaseInfoId = Long.parseLong(keys[1]); + List inMaterialDetailPOs = inMaterialDetailPOMap.getValue(); + QueryOrderOverStockPO queryOrderOverStockPO = new QueryOrderOverStockPO(); + queryOrderOverStockPO.setShipperId(shipperId); + queryOrderOverStockPO.setShipperCode(inMaterialDetailPOs.get(0).getShipperCode()); + queryOrderOverStockPO.setShipperName(inMaterialDetailPOs.get(0).getShipperName()); + queryOrderOverStockPO.setMaterialBaseInfoId(materialBaseInfoId); + queryOrderOverStockPO.setMaterialCode(inMaterialDetailPOs.get(0).getMaterialCode()); + queryOrderOverStockPO.setMaterialName(inMaterialDetailPOs.get(0).getMaterialName()); + //需要根据货主加物料 查询库存表 + BigDecimal inventoryQuantity = iMaterialInventoryService.sumInventoryQuantityByShipperAndMaterialCode(shipperId, materialBaseInfoId); + if (ObjectUtil.isNull(inventoryQuantity)) inventoryQuantity = BigDecimal.ZERO; + queryOrderOverStockPO.setInventoryQuantity(inventoryQuantity); + //统计入库单数 + int inOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setInOrderNum(inOrderNum); + //统计计划入库数量 + BigDecimal inOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setInOrderQuantity(inOrderQuantity); + List inMaterialDetailPOSortByExpectTimes = inMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(InMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(inMaterialDetailPOSortByExpectTimes)){ + InMaterialDetailPO inMaterialDetailFirstPO = inMaterialDetailPOSortByExpectTimes.get(0); + InMaterialDetailPO inMaterialDetailLastPO = inMaterialDetailPOSortByExpectTimes.get(inMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setInOrderEarlyExpectTime(inMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setInOrderLatestExpectTime(inMaterialDetailLastPO.getExpectTime()); + } + List outMaterialDetailPOs = outMaterialDetailPOListMap.get(inMaterialDetailPOMap.getKey()); + if (CollectionUtil.isEmpty(outMaterialDetailPOs)){ + queryOrderOverStockPO.setInOrderNum(0); + queryOrderOverStockPO.setOutOrderQuantity(BigDecimal.ZERO); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(null); + queryOrderOverStockPO.setOutOrderLatestExpectTime(null); + }else { + //统计出库单数 + int outOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setInOrderNum(outOrderNum); + //统计计划出库数量 + BigDecimal outOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setOutOrderQuantity(outOrderQuantity); + List outMaterialDetailPOSortByExpectTimes = outMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(OutMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(outMaterialDetailPOSortByExpectTimes)){ + OutMaterialDetailPO outMaterialDetailFirstPO = outMaterialDetailPOSortByExpectTimes.get(0); + OutMaterialDetailPO outMaterialDetailLastPO = outMaterialDetailPOSortByExpectTimes.get(outMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(outMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setOutOrderLatestExpectTime(outMaterialDetailLastPO.getExpectTime()); + } + } + queryOrderOverStockPOList.add(queryOrderOverStockPO); + } + return queryOrderOverStockPOList; + } + + /** + * @description 根据出库单查询条件 先查询出库单单数据 再根据出库单物料明细 查询对应入库信息 + * @author ZhouGY + * @date 2024/7/25 13:48 + * @param queryOrderOverStockDO + * @return List + */ + public List getByOutOrder(QueryOrderOverStockDO queryOrderOverStockDO){ + List outMaterialDetailPOList = outMaterialDetailService.queryOutOrderList(queryOrderOverStockDO); + Map> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(outMaterialDetailPO -> outMaterialDetailPO.getShipperId() + "_" + outMaterialDetailPO.getMaterialBaseInfoId())); + // 将 Map 的键集合进行拆分,处理可能的异常情况 + List shipperIdList = outMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 0 ? Long.parseLong(parts[0]) : 0L; + }) + .collect(Collectors.toList()); + + List materialBaseInfoIdListList = outMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 1 ? Long.parseLong(parts[1]) : 0L; + }) + .collect(Collectors.toList()); + queryOrderOverStockDO.setShipperIdList(shipperIdList); + queryOrderOverStockDO.setMaterialBaseInfoIdList(materialBaseInfoIdListList); + List inMaterialDetailPOList = inMaterialDetailService.queryInOrderList(queryOrderOverStockDO); + Map> inMaterialDetailPOListMap = inMaterialDetailPOList.stream().collect(Collectors.groupingBy(inMaterialDetailPO -> inMaterialDetailPO.getShipperId() + "_" + inMaterialDetailPO.getMaterialBaseInfoId())); + List queryOrderOverStockPOList = new ArrayList<>(); + for (Map.Entry> outMaterialDetailPOMap : outMaterialDetailPOListMap.entrySet()){ + String[] keys = outMaterialDetailPOMap.getKey().split("_"); + Long shipperId = Long.parseLong(keys[0]); + Long materialBaseInfoId = Long.parseLong(keys[1]); + List outMaterialDetailPOs = outMaterialDetailPOMap.getValue(); + QueryOrderOverStockPO queryOrderOverStockPO = new QueryOrderOverStockPO(); + queryOrderOverStockPO.setShipperId(shipperId); + queryOrderOverStockPO.setShipperCode(outMaterialDetailPOs.get(0).getShipperCode()); + queryOrderOverStockPO.setShipperName(outMaterialDetailPOs.get(0).getShipperName()); + queryOrderOverStockPO.setMaterialBaseInfoId(materialBaseInfoId); + queryOrderOverStockPO.setMaterialCode(outMaterialDetailPOs.get(0).getMaterialCode()); + queryOrderOverStockPO.setMaterialName(outMaterialDetailPOs.get(0).getMaterialName()); + //需要根据货主加物料 查询库存表 + BigDecimal inventoryQuantity = iMaterialInventoryService.sumInventoryQuantityByShipperAndMaterialCode(shipperId, materialBaseInfoId); + if (ObjectUtil.isNull(inventoryQuantity)) inventoryQuantity = BigDecimal.ZERO; + queryOrderOverStockPO.setInventoryQuantity(inventoryQuantity); + //统计出库单数 + int outOrderNum = outMaterialDetailPOs.stream().map(OutMaterialDetailPO::getOutOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setOutOrderNum(outOrderNum); + //统计计划出库数量 + BigDecimal outOrderQuantity = outMaterialDetailPOs.stream().map(OutMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setOutOrderQuantity(outOrderQuantity); + List outMaterialDetailPOSortByExpectTimes = outMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(OutMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(outMaterialDetailPOSortByExpectTimes)){ + OutMaterialDetailPO outMaterialDetailFirstPO = outMaterialDetailPOSortByExpectTimes.get(0); + OutMaterialDetailPO outMaterialDetailLastPO = outMaterialDetailPOSortByExpectTimes.get(outMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(outMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setOutOrderLatestExpectTime(outMaterialDetailLastPO.getExpectTime()); + } + List inMaterialDetailPOs = inMaterialDetailPOListMap.get(outMaterialDetailPOMap.getKey()); + if (CollectionUtil.isEmpty(inMaterialDetailPOs)){ + //统计入库单数 + queryOrderOverStockPO.setInOrderNum(0); + //统计计划入库数量 + queryOrderOverStockPO.setInOrderQuantity(BigDecimal.ZERO); + queryOrderOverStockPO.setInOrderEarlyExpectTime(null); + queryOrderOverStockPO.setInOrderLatestExpectTime(null); + queryOrderOverStockPOList.add(queryOrderOverStockPO); + }else { + List inMaterialDetailPOSortByExpectTimes = inMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(InMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(inMaterialDetailPOSortByExpectTimes)){ + InMaterialDetailPO inMaterialDetailFirstPO = inMaterialDetailPOSortByExpectTimes.get(0); + InMaterialDetailPO inMaterialDetailLastPO = inMaterialDetailPOSortByExpectTimes.get(inMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setInOrderEarlyExpectTime(inMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setInOrderLatestExpectTime(inMaterialDetailLastPO.getExpectTime()); + } + //统计入库单数 + int inOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setInOrderNum(inOrderNum); + //统计计划入库数量 + BigDecimal inOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setInOrderQuantity(inOrderQuantity); + + } + queryOrderOverStockPOList.add(queryOrderOverStockPO); + } + return queryOrderOverStockPOList; + } + + + /** + * @description 根据入库单查询条件 先查询入库单单数据 再根据入库单物料明细 查询对应出库信息 + * @author ZhouGY + * @date 2024/7/25 13:48 + * @return List + */ + public List getAllByInAndOutOrder(QueryOrderOverStockDO queryOrderOverStockDO){ + Map queryOrderOverStockPOMap = new HashMap<>(); + //查询入库单 + List inMaterialDetailPOList = inMaterialDetailService.queryInOrderList(queryOrderOverStockDO); + if (CollectionUtil.isNotEmpty(inMaterialDetailPOList)){ + Map> inMaterialDetailPOListMap = inMaterialDetailPOList.stream().collect(Collectors.groupingBy(inMaterialDetailPO -> inMaterialDetailPO.getShipperId() + "_" + inMaterialDetailPO.getMaterialBaseInfoId())); + // 将 Map 的键集合进行拆分,处理可能的异常情况 + List shipperIdList = inMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 0 ? Long.parseLong(parts[0]) : 0L; + }) + .collect(Collectors.toList()); + + List materialBaseInfoIdListList = inMaterialDetailPOListMap.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 1 ? Long.parseLong(parts[1]) : 0L; + }) + .collect(Collectors.toList()); + queryOrderOverStockDO.setShipperIdList(shipperIdList); + queryOrderOverStockDO.setMaterialBaseInfoIdList(materialBaseInfoIdListList); + List outMaterialDetailPOList = outMaterialDetailService.queryOutOrderList(queryOrderOverStockDO); + Map> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(outMaterialDetailPO -> outMaterialDetailPO.getShipperId() + "_" + outMaterialDetailPO.getMaterialBaseInfoId())); + + for (Map.Entry> inMaterialDetailPOMap : inMaterialDetailPOListMap.entrySet()){ + String[] keys = inMaterialDetailPOMap.getKey().split("_"); + Long shipperId = Long.parseLong(keys[0]); + Long materialBaseInfoId = Long.parseLong(keys[1]); + List inMaterialDetailPOs = inMaterialDetailPOMap.getValue(); + QueryOrderOverStockPO queryOrderOverStockPO = new QueryOrderOverStockPO(); + queryOrderOverStockPO.setShipperId(shipperId); + queryOrderOverStockPO.setShipperCode(inMaterialDetailPOs.get(0).getShipperCode()); + queryOrderOverStockPO.setShipperName(inMaterialDetailPOs.get(0).getShipperName()); + queryOrderOverStockPO.setMaterialBaseInfoId(materialBaseInfoId); + queryOrderOverStockPO.setMaterialCode(inMaterialDetailPOs.get(0).getMaterialCode()); + queryOrderOverStockPO.setMaterialName(inMaterialDetailPOs.get(0).getMaterialName()); + //需要根据货主加物料 查询库存表 + BigDecimal inventoryQuantity = iMaterialInventoryService.sumInventoryQuantityByShipperAndMaterialCode(shipperId, materialBaseInfoId); + if (ObjectUtil.isNull(inventoryQuantity)) inventoryQuantity = BigDecimal.ZERO; + queryOrderOverStockPO.setInventoryQuantity(inventoryQuantity); + //统计入库单数 + int inOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setInOrderNum(inOrderNum); + //统计计划入库数量 + BigDecimal inOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setInOrderQuantity(inOrderQuantity); + List inMaterialDetailPOSortByExpectTimes = inMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(InMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(inMaterialDetailPOSortByExpectTimes)){ + InMaterialDetailPO inMaterialDetailFirstPO = inMaterialDetailPOSortByExpectTimes.get(0); + InMaterialDetailPO inMaterialDetailLastPO = inMaterialDetailPOSortByExpectTimes.get(inMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setInOrderEarlyExpectTime(inMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setInOrderLatestExpectTime(inMaterialDetailLastPO.getExpectTime()); + } + + List outMaterialDetailPOs = outMaterialDetailPOListMap.get(inMaterialDetailPOMap.getKey()); + if (CollectionUtil.isEmpty(outMaterialDetailPOs)){ + queryOrderOverStockPO.setOutOrderNum(0); + queryOrderOverStockPO.setOutOrderQuantity(BigDecimal.ZERO); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(null); + queryOrderOverStockPO.setOutOrderLatestExpectTime(null); + }else { + //统计出库单数 + int outOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setOutOrderNum(outOrderNum); + //统计计划出库数量 + BigDecimal outOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setOutOrderQuantity(outOrderQuantity); + List outMaterialDetailPOSortByExpectTimes = outMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(OutMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(outMaterialDetailPOSortByExpectTimes)){ + OutMaterialDetailPO outMaterialDetailFirstPO = outMaterialDetailPOSortByExpectTimes.get(0); + OutMaterialDetailPO outMaterialDetailLastPO = outMaterialDetailPOSortByExpectTimes.get(outMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(outMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setOutOrderLatestExpectTime(outMaterialDetailLastPO.getExpectTime()); + } + } + queryOrderOverStockPOMap.put(inMaterialDetailPOMap.getKey(), queryOrderOverStockPO); + + } + } + //查询出库单 + List outMaterialDetailPOList2 = outMaterialDetailService.queryOutOrderList(queryOrderOverStockDO); + if (CollectionUtil.isNotEmpty(outMaterialDetailPOList2)){ + Map> outMaterialDetailPOListMap2 = outMaterialDetailPOList2.stream().collect(Collectors.groupingBy(outMaterialDetailPO -> outMaterialDetailPO.getShipperId() + "_" + outMaterialDetailPO.getMaterialBaseInfoId())); + // 将 Map 的键集合进行拆分,处理可能的异常情况 + List shipperIdList = outMaterialDetailPOListMap2.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 0 ? Long.parseLong(parts[0]) : 0L; + }) + .collect(Collectors.toList()); + + List materialBaseInfoIdListList = outMaterialDetailPOListMap2.keySet().stream() + .map(key -> { + String[] parts = key.split("_"); + return parts.length > 1 ? Long.parseLong(parts[1]) : 0L; + }) + .collect(Collectors.toList()); + queryOrderOverStockDO.setShipperIdList(shipperIdList); + queryOrderOverStockDO.setMaterialBaseInfoIdList(materialBaseInfoIdListList); + List inMaterialDetailPOList2 = inMaterialDetailService.queryInOrderList(queryOrderOverStockDO); + Map> inMaterialDetailPOListMap2 = inMaterialDetailPOList2.stream().collect(Collectors.groupingBy(inMaterialDetailPO -> inMaterialDetailPO.getShipperId() + "_" + inMaterialDetailPO.getMaterialBaseInfoId())); + + for (Map.Entry> outMaterialDetailPOMap : outMaterialDetailPOListMap2.entrySet()){ + String[] keys = outMaterialDetailPOMap.getKey().split("_"); + Long shipperId = Long.parseLong(keys[0]); + Long materialBaseInfoId = Long.parseLong(keys[1]); + List outMaterialDetailPOs = outMaterialDetailPOMap.getValue(); + QueryOrderOverStockPO queryOrderOverStockPO = queryOrderOverStockPOMap.get(outMaterialDetailPOMap.getKey()); + if (ObjectUtil.isNull(queryOrderOverStockPO)){ + queryOrderOverStockPO = new QueryOrderOverStockPO(); + queryOrderOverStockPO.setShipperId(shipperId); + queryOrderOverStockPO.setShipperCode(outMaterialDetailPOs.get(0).getShipperCode()); + queryOrderOverStockPO.setShipperName(outMaterialDetailPOs.get(0).getShipperName()); + queryOrderOverStockPO.setMaterialBaseInfoId(materialBaseInfoId); + queryOrderOverStockPO.setMaterialCode(outMaterialDetailPOs.get(0).getMaterialCode()); + queryOrderOverStockPO.setMaterialName(outMaterialDetailPOs.get(0).getMaterialName()); + //需要根据货主加物料 查询库存表 + BigDecimal inventoryQuantity = iMaterialInventoryService.sumInventoryQuantityByShipperAndMaterialCode(shipperId, materialBaseInfoId); + if (ObjectUtil.isNull(inventoryQuantity)) inventoryQuantity = BigDecimal.ZERO; + queryOrderOverStockPO.setInventoryQuantity(inventoryQuantity); + queryOrderOverStockPO.setOutOrderNum(0); + queryOrderOverStockPO.setOutOrderQuantity(BigDecimal.ZERO); + queryOrderOverStockPO.setInOrderNum(0); + queryOrderOverStockPO.setInOrderQuantity(BigDecimal.ZERO); + } + + //统计出库单数 + int outOrderNum = outMaterialDetailPOs.stream().map(OutMaterialDetailPO::getOutOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setOutOrderNum(queryOrderOverStockPO.getOutOrderNum() + outOrderNum); + //统计计划出库数量 + BigDecimal outOrderQuantity = outMaterialDetailPOs.stream().map(OutMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setOutOrderQuantity(queryOrderOverStockPO.getOutOrderQuantity().add(outOrderQuantity)); + List outMaterialDetailPOSortByExpectTimes = outMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(OutMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(outMaterialDetailPOSortByExpectTimes)){ + OutMaterialDetailPO outMaterialDetailFirstPO = outMaterialDetailPOSortByExpectTimes.get(0); + OutMaterialDetailPO outMaterialDetailLastPO = outMaterialDetailPOSortByExpectTimes.get(outMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setOutOrderEarlyExpectTime(outMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setOutOrderLatestExpectTime(outMaterialDetailLastPO.getExpectTime()); + } + + List inMaterialDetailPOs = inMaterialDetailPOListMap2.get(outMaterialDetailPOMap.getKey()); + if (CollectionUtil.isEmpty(inMaterialDetailPOs)){ + //统计入库单数 + queryOrderOverStockPO.setInOrderNum(0); + //统计计划入库数量 + queryOrderOverStockPO.setInOrderQuantity(BigDecimal.ZERO); + queryOrderOverStockPO.setInOrderEarlyExpectTime(null); + queryOrderOverStockPO.setInOrderLatestExpectTime(null); + }else { + List inMaterialDetailPOSortByExpectTimes = inMaterialDetailPOs.stream().filter(p -> ObjectUtil.isNotNull(p.getExpectTime())) + .sorted(Comparator.comparing(InMaterialDetailPO::getExpectTime)).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(inMaterialDetailPOSortByExpectTimes)){ + InMaterialDetailPO inMaterialDetailFirstPO = inMaterialDetailPOSortByExpectTimes.get(0); + InMaterialDetailPO inMaterialDetailLastPO = inMaterialDetailPOSortByExpectTimes.get(inMaterialDetailPOSortByExpectTimes.size() - 1); + queryOrderOverStockPO.setInOrderEarlyExpectTime(inMaterialDetailFirstPO.getExpectTime()); + queryOrderOverStockPO.setInOrderLatestExpectTime(inMaterialDetailLastPO.getExpectTime()); + } + //统计入库单数 + int inOrderNum = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getInOrderNumber).collect(Collectors.toSet()).size(); + queryOrderOverStockPO.setInOrderNum(queryOrderOverStockPO.getInOrderNum() + inOrderNum); + //统计计划入库数量 + BigDecimal inOrderQuantity = inMaterialDetailPOs.stream().map(InMaterialDetailPO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + queryOrderOverStockPO.setInOrderQuantity(queryOrderOverStockPO.getInOrderQuantity().add(inOrderQuantity)); + } + queryOrderOverStockPOMap.put(outMaterialDetailPOMap.getKey(), queryOrderOverStockPO); + } + } + //封装数据 + List queryOrderOverStockPOList = new ArrayList<>(); + for (Map.Entry queryOrderOverStockPO : queryOrderOverStockPOMap.entrySet()){ + queryOrderOverStockPOList.add(queryOrderOverStockPO.getValue()); + } + return queryOrderOverStockPOList; + } + + /** + * @description 获取越库单据详情 + * @author ZhouGY + * @date 2024/7/25 18:03 + * @param queryOrderOverStockDO + * @return QueryOrderOverStockDetailPO + */ + public QueryOrderOverStockDetailPO getByOrderDetail(QueryOrderOverStockDO queryOrderOverStockDO){ + queryOrderOverStockDO.setInStatus(2); + queryOrderOverStockDO.setOutStatus(2); + queryOrderOverStockDO.setOverStockStatus(0); + List inMaterialDetailPOList = inMaterialDetailService.queryInOrderList(queryOrderOverStockDO); + List outMaterialDetailPOList = outMaterialDetailService.queryOutOrderList(queryOrderOverStockDO); + QueryOrderOverStockDetailPO orderOverStockDetailPO = new QueryOrderOverStockDetailPO(); + orderOverStockDetailPO.setInMaterialDetailList(inMaterialDetailPOList); + orderOverStockDetailPO.setOutMaterialDetailList(outMaterialDetailPOList); + return orderOverStockDetailPO; + } + + /** + * @description 处理字段 根据字段输入值 判断 + * @author ZhouGY + * @date 2024/7/24 17:39 + * @param queryOrderOverStockDO + * @return int 1-入库单 2-出库单 3-入出库 + */ + private int handleRequest (QueryOrderOverStockDO queryOrderOverStockDO){ + if (ObjectUtil.isNotNull(queryOrderOverStockDO.getShipperId())){ + return 3; + } + if (ObjectUtil.isNotNull(queryOrderOverStockDO.getMaterialBaseInfoId())){ + return 3; + } + if (FieldChecker.checkFields(queryOrderOverStockDO, "inOrderNumber", "inOrderTypeCode", "inOrderExpectStartTime", "inOrderExpectEndTime")){ + return 1; + } + if (FieldChecker.checkFields(queryOrderOverStockDO, "outOrderNumber", "outOrderTypeCode", "outOrderExpectStartTime", "outOrderExpectEndTime")){ + return 1; + } + return 3; + } + + /** + * @description:查询越库管理入库出库详情列表 + * @param overStockDO + * @return: com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO + * @author: lianzj + * @time: 2024-07-26 10:03:39 + */ + public OverStockInOrderOutOrderListPO overStockInOrderOutOrderDetailList(OverStockDO overStockDO) { + return overStockService.overStockInOrderOutOrderDetailList(overStockDO); + } + + /** + * @description:执行越库 + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:10:10 + */ + public boolean executeOverStock(ExecuteOverStockDO executeOverStockDO) { + return overStockService.executeOverStock(executeOverStockDO); + } + + /** + * @description:取消越库标记(分拨) + * @param executeOverStockDO + * @return: boolean + * @author: lianzj + * @time: 2024-07-26 15:56:51 + */ + public boolean cancelOverStock(ExecuteOverStockDO executeOverStockDO) { + return overStockService.cancelOverStock(executeOverStockDO); + } + + /** + * @description:取消越库任务(直接) + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 11:25:51 + */ + @Transactional + public boolean cancelOverStockDirectByIds(Long[] overStockIds) { + List list = new ArrayList<>(); + for (Long id : overStockIds) { + OverStock overStock = new OverStock(); + overStock.setOverStockId(id); + overStock.setDelFlag(2); + list.add(overStock); + //删除入库物料明细 + List inMaterialDetails = new ArrayList<>(); + List inMaterialDetailList = inMaterialDetailService.list(new QueryWrapper().lambda() + .eq(InMaterialDetail::getOverStockId,id) + .eq(InMaterialDetail::getOverStockStatus,1) +// .eq(InMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(inMaterialDetailList)) { + for (int i = 0; i < inMaterialDetailList.size(); i++) { + InMaterialDetail inMaterialDetail = inMaterialDetailList.get(i); + if (inMaterialDetail.getOverStockType() == 2) { + throw new ServiceException("分拨4越库类型不允许取消越库任务"); + } + inMaterialDetail.setOverStockType(0L); + inMaterialDetail.setOverStockStatus(0); + inMaterialDetail.setOverStockId(id); + inMaterialDetails.add(inMaterialDetail); + } + inMaterialDetailService.updateBatchById(inMaterialDetails); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到入库物料明细数据!"); + } + //删除入库单 + List stockInOrders = new ArrayList<>(); + List stockInOrderList = stockInOrderService.list(new QueryWrapper().lambda() + .eq(StockInOrder::getOverStockId,id) + .eq(StockInOrder::getOverStockStatus,1) + .eq(StockInOrder::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockInOrderList)) { + for (int i = 0; i < stockInOrderList.size(); i++) { + StockInOrder stockInOrder = stockInOrderList.get(i); + stockInOrder.setOverStockType(0L); + stockInOrder.setOverStockStatus(0); + stockInOrder.setOverStockId(id); + stockInOrders.add(stockInOrder); + } + stockInOrderService.updateBatchById(stockInOrders); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到入库单数据!"); + } + //删除出库物料明细 + List outMaterialDetails = new ArrayList<>(); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOverStockId,id) + .eq(OutMaterialDetail::getOverStockStatus,1) +// .eq(OutMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(outMaterialDetailList)) { + for (int i = 0; i < outMaterialDetailList.size(); i++) { + OutMaterialDetail outMaterialDetail = outMaterialDetailList.get(i); + if (outMaterialDetail.getOverStockType() == 2) { + throw new ServiceException("分拨4越库类型不允许取消越库任务"); + } + outMaterialDetail.setOverStockType(0L); + outMaterialDetail.setOverStockStatus(0); + outMaterialDetail.setOverStockId(id); + outMaterialDetails.add(outMaterialDetail); + } + outMaterialDetailService.updateBatchById(outMaterialDetails); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到出库物料明细数据!"); + } + //删除出库单 + List stockOutOrders = new ArrayList<>(); + List stockOutOrderList = stockOutOrderService.list(new QueryWrapper().lambda() + .eq(StockOutOrder::getOverStockId,id) + .eq(StockOutOrder::getOverStockStatus,1) + .eq(StockOutOrder::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockOutOrderList)) { + for (int i = 0; i < stockOutOrderList.size(); i++) { + StockOutOrder stockOutOrder = stockOutOrderList.get(i); + stockOutOrder.setOverStockType(0L); + stockOutOrder.setOverStockStatus(0); + stockOutOrder.setOverStockId(id); + stockOutOrders.add(stockOutOrder); + } + stockOutOrderService.updateBatchById(stockOutOrders); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到出库单数据!"); + } + } + return overStockService.updateBatchById(list); + } + + /** + * @description:取消越库标记(分拨) + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 15:34:17 + */ + @Transactional + public boolean cancelOverStockSignByIds(Long[] overStockIds) { + List list = new ArrayList<>(); + for (Long id : overStockIds) { + OverStock overStock = new OverStock(); + overStock.setOverStockId(id); + overStock.setDelFlag(2); + list.add(overStock); + + List inMaterialDetails = new ArrayList<>(); + List inMaterialDetailList = inMaterialDetailService.list(new QueryWrapper().lambda() + .eq(InMaterialDetail::getOverStockId,id) + .eq(InMaterialDetail::getOverStockStatus,1) +// .eq(InMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + List outMaterialDetails = new ArrayList<>(); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOverStockId,id) + .eq(OutMaterialDetail::getOverStockStatus,1) +// .eq(OutMaterialDetail::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (CollectionUtil.isEmpty(inMaterialDetailList) && CollectionUtil.isEmpty(outMaterialDetailList)) { + throw new ServiceException("根据越库id["+id+"]未查询到入库单或者出库单数据!"); + } + //删除入库物料明细 + if (!CollectionUtils.isEmpty(inMaterialDetailList)) { + for (int i = 0; i < inMaterialDetailList.size(); i++) { + InMaterialDetail inMaterialDetail = inMaterialDetailList.get(i); + if (inMaterialDetail.getOverStockType() == 1) { + throw new ServiceException("直接越库类型不允许执行取消越库标记"); + } + inMaterialDetail.setOverStockType(0L); + inMaterialDetail.setOverStockStatus(0); + inMaterialDetail.setOverStockId(id); + inMaterialDetails.add(inMaterialDetail); + } + inMaterialDetailService.updateBatchById(inMaterialDetails); + } + //删除入库单 + List stockInOrders = new ArrayList<>(); + List stockInOrderList = stockInOrderService.list(new QueryWrapper().lambda() + .eq(StockInOrder::getOverStockId,id) + .eq(StockInOrder::getOverStockStatus,1) + .eq(StockInOrder::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockInOrderList)) { + for (int i = 0; i < stockInOrderList.size(); i++) { + StockInOrder stockInOrder = stockInOrderList.get(i); + stockInOrder.setOverStockType(0L); + stockInOrder.setOverStockStatus(0); + stockInOrder.setOverStockId(id); + stockInOrders.add(stockInOrder); + } + stockInOrderService.updateBatchById(stockInOrders); + } + //删除出库物料明细 + if (!CollectionUtils.isEmpty(outMaterialDetailList)) { + for (int i = 0; i < outMaterialDetailList.size(); i++) { + OutMaterialDetail outMaterialDetail = outMaterialDetailList.get(i); + if (outMaterialDetail.getOverStockType() == 1) { + throw new ServiceException("直接越库类型不允许执行取消越库标记"); + } + outMaterialDetail.setOverStockType(0L); + outMaterialDetail.setOverStockStatus(0); + outMaterialDetail.setOverStockId(id); + outMaterialDetails.add(outMaterialDetail); + } + outMaterialDetailService.updateBatchById(outMaterialDetails); + } + //删除出库单 + List stockOutOrders = new ArrayList<>(); + List stockOutOrderList = stockOutOrderService.list(new QueryWrapper().lambda() + .eq(StockOutOrder::getOverStockId,id) + .eq(StockOutOrder::getOverStockStatus,1) + .eq(StockOutOrder::getOverStockType,2) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockOutOrderList)) { + for (int i = 0; i < stockOutOrderList.size(); i++) { + StockOutOrder stockOutOrder = stockOutOrderList.get(i); + stockOutOrder.setOverStockType(0L); + stockOutOrder.setOverStockStatus(0); + stockOutOrder.setOverStockId(id); + stockOutOrders.add(stockOutOrder); + } + stockOutOrderService.updateBatchById(stockOutOrders); + } + } + return overStockService.updateBatchById(list); + } + + /** + * @description:执行越库 + * @param overStockIds + * @return: boolean + * @author: lianzj + * @time: 2024-07-27 15:37:24 + */ + @Transactional + public boolean executeOverStockByIds(Long[] overStockIds) { + List list = new ArrayList<>(); + for (Long id : overStockIds) { + OverStock overStock = new OverStock(); + overStock.setOverStockId(id); + overStock.setDelFlag(1); + list.add(overStock); + //执行入库物料明细 + List inMaterialDetails = new ArrayList<>(); + List inMaterialDetailList = inMaterialDetailService.list(new QueryWrapper().lambda() + .eq(InMaterialDetail::getOverStockId,id) + .eq(InMaterialDetail::getOverStockStatus,1) + .eq(InMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(inMaterialDetailList)) { + for (int i = 0; i < inMaterialDetailList.size(); i++) { + InMaterialDetail inMaterialDetail = inMaterialDetailList.get(i); + inMaterialDetail.setOverStockStatus(2); + inMaterialDetail.setOverStockId(id); + inMaterialDetails.add(inMaterialDetail); + } + inMaterialDetailService.updateBatchById(inMaterialDetails); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到入库物料明细数据!"); + } + //执行入库单 + List stockInOrders = new ArrayList<>(); + List stockInOrderList = stockInOrderService.list(new QueryWrapper().lambda() + .eq(StockInOrder::getOverStockId,id) + .eq(StockInOrder::getOverStockStatus,1) + .eq(StockInOrder::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockInOrderList)) { + for (int i = 0; i < stockInOrderList.size(); i++) { + StockInOrder stockInOrder = stockInOrderList.get(i); + stockInOrder.setOverStockStatus(2); + stockInOrder.setOverStockId(id); + stockInOrder.setStatus(5); + stockInOrders.add(stockInOrder); + } + stockInOrderService.updateBatchById(stockInOrders); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到入库单数据!"); + } + //执行出库物料明细 + List outMaterialDetails = new ArrayList<>(); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .eq(OutMaterialDetail::getOverStockId,id) + .eq(OutMaterialDetail::getOverStockStatus,1) + .eq(OutMaterialDetail::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(outMaterialDetailList)) { + for (int i = 0; i < outMaterialDetailList.size(); i++) { + OutMaterialDetail outMaterialDetail = outMaterialDetailList.get(i); + outMaterialDetail.setOverStockStatus(2); + outMaterialDetail.setOverStockId(id); + outMaterialDetails.add(outMaterialDetail); + } + outMaterialDetailService.updateBatchById(outMaterialDetails); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到出库物料明细数据!"); + } + //执行出库单 + List stockOutOrders = new ArrayList<>(); + List stockOutOrderList = stockOutOrderService.list(new QueryWrapper().lambda() + .eq(StockOutOrder::getOverStockId,id) + .eq(StockOutOrder::getOverStockStatus,1) + .eq(StockOutOrder::getOverStockType,1) + .eq(BaseVOEntity::getDelFlag,1)); + if (!CollectionUtils.isEmpty(stockOutOrderList)) { + for (int i = 0; i < stockOutOrderList.size(); i++) { + StockOutOrder stockOutOrder = stockOutOrderList.get(i); + stockOutOrder.setOverStockStatus(2); + stockOutOrder.setOverStockId(id); + stockOutOrder.setStatus(9); + stockOutOrders.add(stockOutOrder); + } + stockOutOrderService.updateBatchById(stockOutOrders); + } else { + throw new ServiceException("根据越库id["+id+"]未查询到出库单数据!"); + } + } + return overStockService.updateBatchById(list); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/entity/PickingMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/entity/PickingMaterialDetail.java new file mode 100644 index 000000000..1a5b8f3f1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/entity/PickingMaterialDetail.java @@ -0,0 +1,191 @@ +package com.mhd.wms.domain.pickingMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 拣货单物料明细对象 picking_material_detail + * + * @author gen + * @date 2024-06-08 + */ + +@Data +public class PickingMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("出库单唯一Id") + private Long outUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java new file mode 100644 index 000000000..88d9c733d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/facade/IPickingMaterialDetailService.java @@ -0,0 +1,75 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; + +import java.util.List; + +/** + * 拣货单物料明细Service接口 + * + * @author gen + * @date 2024-06-08 + */ +public interface IPickingMaterialDetailService extends IService +{ + /** + * 分页查询拣货单物料明细列表 + */ + public List queryList(PickingMaterialDetailDO pickingMaterialDetailDO); + + /** + * 新增拣货单物料明细 + */ + public Boolean insert(PickingMaterialDetailDO pickingMaterialDetailDO); + + /** + * 修改拣货单物料明细 + */ + public Boolean update(PickingMaterialDetailDO pickingMaterialDetailDO); + + /** + * 批量删除拣货单物料明细 + */ + public Boolean delete(Long[] pickingMaterialDetailIds); + + + /** + * 查询拣货单物料明细 + */ + public PickingMaterialDetailPO getInfo(Long pickingMaterialDetailId); + + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param pickingOrderDO + * @return Boolean + */ + public PickingOrderPO batchPickingUpdate(PickingOrderDO pickingOrderDO); + + /** + * @description 波次单分配,将分配数量分配给其下子单的 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param orderNumber + * @param type 1-分配 2-拣货 + * @return Boolean + */ + public Boolean waveAssignUpdate(String orderNumber, Integer type); + + /** + * @description 根据拣货单明细唯一id 增加拣货数量 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param pickingMaterialDetailDOByUpdate + * @return Boolean + */ + public Boolean addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java new file mode 100644 index 000000000..9934bc012 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/mapper/PickingMaterialDetailMapper.java @@ -0,0 +1,33 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate; + +import java.util.List; + +/** + * 拣货单物料明细Mapper接口 + * + * @author gen + * @date 2024-06-08 + */ +public interface PickingMaterialDetailMapper extends BaseMapper +{ + /** + * 查询拣货单物料明细列表 + */ + public List queryList(PickingMaterialDetailDO pickingMaterialDetailDO); + + /** + * @description 根据拣货单增加拣货数量 + * @author ZhouGY + * @date 2024/7/17 15:51 + * @param pickingMaterialDetailDOByUpdate + * @return List + */ + public int addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java new file mode 100644 index 000000000..d3ae71a12 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/persistence/PickingMaterialDetailImpl.java @@ -0,0 +1,371 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; +import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.sowingDistributionDetails.entity.SowingDistributionDetails; +import com.mhd.wms.domain.sowingDistributionDetails.repository.facade.ISowingDistributionDetailsService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 拣货单物料明细Service业务层处理 + * + * @author gen + * @date 2024-06-08 + */ +@Service +public class PickingMaterialDetailImpl extends ServiceImpl implements IPickingMaterialDetailService{ + @Autowired + private PickingMaterialDetailMapper pickingMaterialDetailMapper; + @Autowired + private OutMaterialDetailMapper outMaterialDetailMapper; + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + @Autowired + private ISowingDistributionDetailsService waveOutOrderRelevanceService; + + /** + * 查询拣货单物料明细列表 + */ + @Override + public List queryList(PickingMaterialDetailDO pickingMaterialDetailDO) + { + return pickingMaterialDetailMapper.queryList(pickingMaterialDetailDO); + } + + /** + * 新增拣货单物料明细 + */ + @Override + public Boolean insert(PickingMaterialDetailDO pickingMaterialDetailDO) { + PickingMaterialDetail pickingMaterialDetail = new PickingMaterialDetail(); + BeanUtils.copyProperties(pickingMaterialDetailDO,pickingMaterialDetail); + return this.save(pickingMaterialDetail); + } + + /** + * 修改拣货单物料明细 + */ + @Override + public Boolean update(PickingMaterialDetailDO pickingMaterialDetailDO) { + PickingMaterialDetail pickingMaterialDetail = new PickingMaterialDetail(); + BeanUtils.copyProperties(pickingMaterialDetailDO,pickingMaterialDetail); + return this.updateById(pickingMaterialDetail); + } + + /** + * 批量删除拣货单物料明细 + */ + @Override + public Boolean delete(Long[] pickingMaterialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : pickingMaterialDetailIds) { + PickingMaterialDetail pickingMaterialDetail = new PickingMaterialDetail(); + pickingMaterialDetail.setMaterialDetailId(id); + pickingMaterialDetail.setDelFlag(2); + list.add(pickingMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改拣货单物料明细 + */ + @Override + public PickingMaterialDetailPO getInfo(Long pickingMaterialDetailId) { + PickingMaterialDetail pickingMaterialDetail = this.getById(pickingMaterialDetailId); + PickingMaterialDetailPO pickingMaterialDetailPO = new PickingMaterialDetailPO(); + BeanUtils.copyProperties(pickingMaterialDetail,pickingMaterialDetailPO); + return pickingMaterialDetailPO; + } + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param pickingOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public PickingOrderPO batchPickingUpdate(PickingOrderDO pickingOrderDO) { + List pickingMaterialDetailDOList = pickingOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(pickingMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + List pickingMaterialDetailDbList = pickingMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrderDO.getPickingOrderNumber())); + Map materialDetailMap = pickingMaterialDetailDbList.stream().collect(Collectors.toMap(PickingMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List pickingMaterialDetailList = new ArrayList<>(); + // 批量新增或修改序列号 + List outMaterialDetailSerialNumberList = new ArrayList<>(); + BigDecimal totalPickingQuantity = BigDecimal.ZERO; + int totalPickingMaterialQuantity = 0; + for (PickingMaterialDetailDO pickingMaterialDetailDO : pickingMaterialDetailDOList){ + PickingMaterialDetail pickingMaterialDetailDb = materialDetailMap.get(pickingMaterialDetailDO.getMaterialDetailId()); + if (pickingMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + PickingMaterialDetail pickingMaterialDetail = new PickingMaterialDetail(); + pickingMaterialDetail.setMaterialDetailId(pickingMaterialDetailDO.getMaterialDetailId()); + pickingMaterialDetail.setUpdateBy(loginUser.getUserid()); + pickingMaterialDetail.setUpdateByName(loginUser.getUsername()); + pickingMaterialDetail.setUpdateTime(new Date()); + BigDecimal actualQuantity = pickingMaterialDetailDO.getActualQuantity(); + pickingMaterialDetail.setPickingQuantity(pickingMaterialDetailDb.getPickingQuantity().add(actualQuantity)); + pickingMaterialDetailList.add(pickingMaterialDetail); + + //判断是否开启了序列号管理 + if (pickingMaterialDetailDb.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(pickingMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + pickingMaterialDetailDb.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + outMaterialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(pickingMaterialDetailDO)); + } + + totalPickingQuantity = totalPickingQuantity.add(actualQuantity); + } + //保存物料明细信息 + saveOrUpdateBatch(pickingMaterialDetailList); + //批量新增或修改序列号 + if (!CollectionUtils.isEmpty(outMaterialDetailSerialNumberList)){ + outMaterialDetailSerialNumberService.saveBatch(outMaterialDetailSerialNumberList); + } + PickingOrderPO pickingOrderPO = new PickingOrderPO(); + BeanUtils.copyProperties(pickingOrderDO,pickingOrderPO); + pickingOrderPO.setPickingQuantity(totalPickingQuantity); + pickingOrderPO.setPickingMaterialQuantity(totalPickingMaterialQuantity); + return pickingOrderPO; + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param pickingMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumber(PickingMaterialDetailDO pickingMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改序列号 + List outMaterialDetailSerialNumberList = new ArrayList<>(); + List outMaterialDetailSerialNumberDOList = pickingMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(outMaterialDetailSerialNumberDOList)){ + for (OutMaterialDetailSerialNumberDO OutMaterialDetailSerialNumberDO : outMaterialDetailSerialNumberDOList){ + if (ObjectUtil.isNotNull(OutMaterialDetailSerialNumberDO.getOutMaterialDetailSerialNumberId())){ + continue; + } + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + BeanUtils.copyProperties(OutMaterialDetailSerialNumberDO, outMaterialDetailSerialNumber); + outMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + outMaterialDetailSerialNumber.setMaterialDetailUniqueId(pickingMaterialDetailDO.getUniqueId()); + outMaterialDetailSerialNumber.setType(1); + outMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + outMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + outMaterialDetailSerialNumber.setCreateTime(new Date()); + outMaterialDetailSerialNumberList.add(outMaterialDetailSerialNumber); + } + } + return outMaterialDetailSerialNumberList; + } + + /** + * @description 波次单,将分配、拣货数量分配给其下子单的 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param orderNumber + * @param type 1-分配 2-拣货 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean waveAssignUpdate(String orderNumber, Integer type) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List pickingMaterialDetailDbList = pickingMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(PickingMaterialDetail::getPickingOrderNumber, orderNumber)); + //获取播种分货明细表信息 + List sowingDistributionDetailsList = waveOutOrderRelevanceService.list(new QueryWrapper().lambda() + .eq(SowingDistributionDetails::getOrderNumber, orderNumber) + .eq(SowingDistributionDetails::getDelFlag, 1)); + List sowingDistributionDetailsUpdateList = new ArrayList<>(); + for (PickingMaterialDetail pickingMaterialDetail : pickingMaterialDetailDbList){ + //获取要分配的子单出库单信息 + Map waveOutOrderRelevanceMap = + sowingDistributionDetailsList.stream().collect(Collectors.toMap(p -> p.getOrderNumber() + + "_" + p.getOrderNumber() + + "_" + p.getMaterialCode(), Function.identity(), (key1, key2) -> key1)); + if (type == 1){ + //修改子单的分配数量 + sowingDistributionDetailsUpdateList.addAll(setAllocationQuantity(pickingMaterialDetail, waveOutOrderRelevanceMap)); + }else { + //修改子单的拣货数量 + sowingDistributionDetailsUpdateList.addAll(setPickingQuantity(pickingMaterialDetail, waveOutOrderRelevanceMap)); + } + } + List outMaterialDetailDOList = new ArrayList<>(); + for (SowingDistributionDetails sowingDistributionDetails : sowingDistributionDetailsList){ + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setMaterialDetailId(sowingDistributionDetails.getMaterialDetailId()); + outMaterialDetailDO.setAllocationQuantity(sowingDistributionDetails.getAllocationQuantity()); + outMaterialDetailDO.setPickingQuantity(sowingDistributionDetails.getPickingQuantity()); + outMaterialDetailDO.setUpdateBy(sowingDistributionDetails.getUpdateBy()); + outMaterialDetailDO.setUpdateByName(sowingDistributionDetails.getUpdateByName()); + outMaterialDetailDOList.add(outMaterialDetailDO); + } + OutMaterialDetailDO outMaterialDetailDOUpdate = new OutMaterialDetailDO(); + outMaterialDetailDOUpdate.setUpdateBy(loginUser.getUserid()); + outMaterialDetailDOUpdate.setUpdateByName(loginUser.getUsername()); + outMaterialDetailDOUpdate.setUpdateTime(new Date()); + outMaterialDetailDOUpdate.setChildren(outMaterialDetailDOList); + if (type == 1){ + //批量更新子单的分配数量 + outMaterialDetailMapper.batchAddAllocationQuantityByIds(outMaterialDetailDOUpdate); + }else { + //批量更新子单的拣货数量 + outMaterialDetailMapper.batchAddPickingQuantityByIds(outMaterialDetailDOUpdate); + } + return waveOutOrderRelevanceService.updateBatchById(sowingDistributionDetailsUpdateList); + } + + /** + * @description 根据拣货单明细唯一id 增加拣货数量 + * @author ZhouGY + * @date 2024/7/17 15:51 + * @param pickingMaterialDetailDOByUpdate + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean addQuantity(PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate){ + int count = pickingMaterialDetailMapper.addQuantity(pickingMaterialDetailDOByUpdate); + if (count == 0){ + throw new ServiceException("更新拣货单拣货数量失败"); + } + return true; + } + + /** + * @description 设置分配数量 + * @author ZhouGY + * @date 2024/6/7 10:39 + * @param pickingMaterialDetail + * @param waveOutOrderRelevanceMap + * @return List + */ + private List setAllocationQuantity(PickingMaterialDetail pickingMaterialDetail, Map waveOutOrderRelevanceMap){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List sowingDistributionDetailsList = new ArrayList<>(); + BigDecimal allocationQuantity = pickingMaterialDetail.getPickingQuantity(); //待分配数量 + for (Map.Entry entry : waveOutOrderRelevanceMap.entrySet()){ + //波次单没有分配数量直接跳过 + if (allocationQuantity.compareTo(BigDecimal.ZERO) <= 0){ + continue; + } + SowingDistributionDetails sowingDistributionDetailsUpdate = new SowingDistributionDetails(); + sowingDistributionDetailsUpdate.setSowingDistributionDetailsId(entry.getValue().getSowingDistributionDetailsId()); + //该Id用于批量更新源数据 + sowingDistributionDetailsUpdate.setMaterialDetailId(entry.getValue().getMaterialDetailId()); + //比较波次单的中分配数量是否大于该子单的计划数量 + if (allocationQuantity.compareTo(entry.getValue().getQuantity()) > 0){ + sowingDistributionDetailsUpdate.setAllocationQuantity(entry.getValue().getQuantity()); + allocationQuantity = allocationQuantity.subtract(entry.getValue().getQuantity()); + }else { + //分配数量不足 分配后将待分配数量置为0 + sowingDistributionDetailsUpdate.setAllocationQuantity(allocationQuantity); + allocationQuantity = BigDecimal.ZERO; + } + sowingDistributionDetailsUpdate.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetailsUpdate.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetailsUpdate.setUpdateTime(new Date()); + sowingDistributionDetailsList.add(sowingDistributionDetailsUpdate); + } + return sowingDistributionDetailsList; + } + + /** + * @description 设置拣货数量 + * @author ZhouGY + * @date 2024/6/7 10:39 + * @param pickingMaterialDetail + * @param waveOutOrderRelevanceMap + * @return List + */ + private List setPickingQuantity(PickingMaterialDetail pickingMaterialDetail, Map waveOutOrderRelevanceMap){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List sowingDistributionDetailsList = new ArrayList<>(); + BigDecimal pickingQuantity = pickingMaterialDetail.getPickingQuantity(); //待分配数量 + for (Map.Entry entry : waveOutOrderRelevanceMap.entrySet()){ + //波次单没有拣货数量直接跳过 + if (pickingQuantity.compareTo(BigDecimal.ZERO) <= 0){ + continue; + } + SowingDistributionDetails sowingDistributionDetailsUpdate = new SowingDistributionDetails(); + sowingDistributionDetailsUpdate.setSowingDistributionDetailsId(entry.getValue().getSowingDistributionDetailsId()); + //比较波次单的中拣货数量是否大于该子单的分配数量 + if (pickingQuantity.compareTo(entry.getValue().getAllocationQuantity()) > 0){ + sowingDistributionDetailsUpdate.setPickingQuantity(entry.getValue().getAllocationQuantity()); + pickingQuantity = pickingQuantity.subtract(entry.getValue().getAllocationQuantity()); + }else { + //分配数量不足 分配后将待分配数量置为0 + sowingDistributionDetailsUpdate.setPickingQuantity(pickingQuantity); + pickingQuantity = BigDecimal.ZERO; + } + sowingDistributionDetailsUpdate.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetailsUpdate.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetailsUpdate.setUpdateTime(new Date()); + sowingDistributionDetailsList.add(sowingDistributionDetailsUpdate); + } + return sowingDistributionDetailsList; + } + + /** + * @description 判断拣货数量是否完成 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param pickingQuantity + * @return Integer + */ + private Integer judgePickingQuantity(BigDecimal pickingQuantity, BigDecimal quantity){ + if (pickingQuantity.compareTo(BigDecimal.ZERO) == 0) { + return 1; + }else if (pickingQuantity.compareTo(quantity) == 0) { + return 3; + } else { + return 2; + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java new file mode 100644 index 000000000..9ba614111 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/po/PickingMaterialDetailPO.java @@ -0,0 +1,198 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单物料明细对象 picking_material_detail + * + * @author gen + * @date 2024-06-08 + */ + +@Data +@ApiModel(value = "拣货单物料明细对象", description = "拣货单物料明细响应对象") +public class PickingMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("出库单唯一Id") + private Long outUniqueId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDO.java new file mode 100644 index 000000000..f8b9df26d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDO.java @@ -0,0 +1,208 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单物料明细对象 picking_material_detail + * + * @author gen + * @date 2024-06-08 + */ + +@Data +public class PickingMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("出库单唯一Id") + private Long outUniqueId; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("业务唯一id集合") + @Excel(name = "业务唯一id集合") + private List uniqueIdList; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("作业数量:拣货数量") + @Excel(name = "作业数量:拣货数量") + private BigDecimal actualQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDOByUpdate.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDOByUpdate.java new file mode 100644 index 000000000..b3978ca46 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/repository/todo/PickingMaterialDetailDOByUpdate.java @@ -0,0 +1,37 @@ +package com.mhd.wms.domain.pickingMaterialDetail.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 拣货单物料明细对象 picking_material_detail + * + * @author gen + * @date 2024-06-08 + */ + +@Data +public class PickingMaterialDetailDOByUpdate implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "更新者") + private Long updateBy; + + @ApiModelProperty(name = "创建者姓名") + private String updateByName; + + @ApiModelProperty(value = "更新时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + @ApiModelProperty(name = "拣货单物料明细对象") + private List pickingMaterialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/service/PickingMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/service/PickingMaterialDetailDomainService.java new file mode 100644 index 000000000..d10a2ed5f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingMaterialDetail/service/PickingMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.pickingMaterialDetail.service; + +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 拣货单物料明细 + * + * @author gen + * @date 2024-06-08 + */ +@Service +@Slf4j +public class PickingMaterialDetailDomainService { + + @Autowired + private IPickingMaterialDetailService pickingMaterialDetailService; + + + /** + * 分页查询拣货单物料明细列表 + */ + public List queryList(PickingMaterialDetailDO pickingMaterialDetailDO) { + return pickingMaterialDetailService.queryList(pickingMaterialDetailDO); + } + + + /** + * 新增拣货单物料明细 + */ + public Boolean insert(PickingMaterialDetailDO pickingMaterialDetailDO) { + + return pickingMaterialDetailService.insert(pickingMaterialDetailDO); + } + + /** + * 修改拣货单物料明细 + */ + public Boolean update(PickingMaterialDetailDO pickingMaterialDetailDO) { + return pickingMaterialDetailService.update(pickingMaterialDetailDO); + } + + /** + * 批量删除拣货单物料明细 + */ + public Boolean delete(Long[] pickingMaterialDetailIds) { + return pickingMaterialDetailService.delete(pickingMaterialDetailIds); + } + + /** + * 获取拣货单物料明细详细信息 + */ + public PickingMaterialDetailPO getInfo(Long pickingMaterialDetailId) + { + return pickingMaterialDetailService.getInfo(pickingMaterialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/entity/PickingOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/entity/PickingOrder.java new file mode 100644 index 000000000..75edfa675 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/entity/PickingOrder.java @@ -0,0 +1,122 @@ +package com.mhd.wms.domain.pickingOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 拣货单对象 picking_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class PickingOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单id") + @TableId(type = IdType.AUTO) + private Long pickingOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + @Excel(name = "拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + private Integer status; + + @ApiModelProperty("拣货单类型: 1-普通拣货单 2-波次拣货单") + @Excel(name = "拣货单类型: 1-普通拣货单 2-波次拣货单") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/facade/IPickingOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/facade/IPickingOrderService.java new file mode 100644 index 000000000..98ea9a016 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/facade/IPickingOrderService.java @@ -0,0 +1,80 @@ +package com.mhd.wms.domain.pickingOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; + +import java.util.List; + +/** + * 拣货单Service接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface IPickingOrderService extends IService +{ + /** + * 分页查询拣货单列表 + */ + public List queryList(PickingOrderDO pickingOrderDO); + + /** + * 新增拣货单 + */ + public Boolean insert(PickingOrderDO pickingOrderDO); + + /** + * 批量新增拣货单 + * @param pickingOrderDOList + * @return + */ + public Boolean batchInsert(List pickingOrderDOList); + + /** + * 修改拣货单 + */ + public Boolean update(PickingOrderDO pickingOrderDO); + + /** + * 批量删除拣货单 + */ + public Boolean delete(Long[] pickingOrderIds); + + + /** + * 查询拣货单 + */ + public PickingOrderPO getInfo(Long pickingOrderId); + + /** + * @description 根据id和类型获取指定拣货单信息 + * @author ZhouGY + * @date 2024/6/5 10:26 + * @param pickingOrderId + * @param type + * @return PickingOrderPO + */ + public PickingOrderPO getInfoByIdAndType(Long pickingOrderId, Integer type); + + + /** + * @description 根据单号和类型获取指定拣货单信息 + * @author ZhouGY + * @date 2024/8/21 16:45 + * @param orderNumber + * @param type + * @return PickingOrderPO + */ + public PickingOrderPO getInfoByOrderNumberAndType(String orderNumber, Integer type); + + /** + * @description 根据拣货单号 更新拣货单拣货数量失败 + * @author ZhouGY + * @date 2024/7/17 16:13 + * @param pickingOrderDO + * @return Boolean + */ + public Boolean addQuantity(PickingOrderDO pickingOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/mapper/PickingOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/mapper/PickingOrderMapper.java new file mode 100644 index 000000000..241a7513f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/mapper/PickingOrderMapper.java @@ -0,0 +1,57 @@ +package com.mhd.wms.domain.pickingOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; + +import java.util.List; + +/** + * 拣货单Mapper接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface PickingOrderMapper extends BaseMapper +{ + /** + * 查询拣货单列表 + */ + public List queryList(PickingOrderDO pickingOrderDO); + + /** + * 根据Id关联出库单查询 + */ + public PickingOrderPO queryOutOrderById(Long pickingOrderId); + + + /** + * 根据Id关联波次单查询 + */ + public PickingOrderPO queryWaveOrderById(Long pickingOrderId); + + /** + * 根据单号关联出库单查询 + */ + public PickingOrderPO queryOutOrderByOrderNumber(String pickingOrderId); + + /** + * 根据单号关联波次单查询 + */ + public PickingOrderPO queryWaveOrderByOrderNumber(String pickingOrderId); + + + + + + /** + * @description 根据拣货单增加拣货数量 + * @author ZhouGY + * @date 2024/7/17 15:51 + * @param pickingOrderDO + * @return List + */ + public int addQuantity(PickingOrderDO pickingOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/persistence/PickingOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/persistence/PickingOrderImpl.java new file mode 100644 index 000000000..aaccfc333 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/persistence/PickingOrderImpl.java @@ -0,0 +1,179 @@ +package com.mhd.wms.domain.pickingOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService; +import com.mhd.wms.domain.pickingOrder.repository.mapper.PickingOrderMapper; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 拣货单Service业务层处理 + * + * @author gen + * @date 2024-05-28 + */ +@Service +public class PickingOrderImpl extends ServiceImpl implements IPickingOrderService { + @Autowired + private PickingOrderMapper pickingOrderMapper; + + /** + * 查询拣货单列表 + */ + @Override + public List queryList(PickingOrderDO pickingOrderDO) + { + return pickingOrderMapper.queryList(pickingOrderDO); + } + + /** + * 新增拣货单 + */ + @Override + public Boolean insert(PickingOrderDO pickingOrderDO) { + PickingOrder pickingOrder = new PickingOrder(); + BeanUtils.copyProperties(pickingOrderDO,pickingOrder); + return this.save(pickingOrder); + } + + + /** + * @description 批量生成 + * @author ZhouGY + * @date 2024/5/28 16:46 + * @param pickingOrderDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List pickingOrderDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long userId = loginUser.getUserid(); + String userName = loginUser.getUsername(); + Date date = new Date(); + List pickingOrderList = new ArrayList<>(); + for (PickingOrderDO pickingOrderDO : pickingOrderDOList){ + PickingOrder pickingOrder = new PickingOrder(); + BeanUtils.copyProperties(pickingOrderDO,pickingOrder, "status","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + pickingOrder.setCreateBy(userId); + pickingOrder.setCreateByName(userName); + pickingOrder.setCreateTime(date); + pickingOrder.setUpdateBy(userId); + pickingOrder.setUpdateByName(userName); + pickingOrder.setUpdateTime(date); + pickingOrderList.add(pickingOrder); + } + + return saveBatch(pickingOrderList); + } + + /** + * 修改拣货单 + */ + @Override + public Boolean update(PickingOrderDO pickingOrderDO) { + PickingOrder pickingOrder = new PickingOrder(); + BeanUtils.copyProperties(pickingOrderDO,pickingOrder); + return this.updateById(pickingOrder); + } + + /** + * 批量删除拣货单 + */ + @Override + public Boolean delete(Long[] pickingOrderIds ) { + List list = new ArrayList<>(); + for (Long id : pickingOrderIds) { + PickingOrder pickingOrder = new PickingOrder(); + pickingOrder.setPickingOrderId(id); + pickingOrder.setDelFlag(2); + list.add(pickingOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改拣货单 + */ + @Override + public PickingOrderPO getInfo(Long pickingOrderId) { + PickingOrder pickingOrder = this.getById(pickingOrderId); + PickingOrderPO pickingOrderPO = new PickingOrderPO(); + BeanUtils.copyProperties(pickingOrder,pickingOrderPO); + return pickingOrderPO; + } + + /** + * @description 根据id和类型获取指定拣货单信息 + * @author ZhouGY + * @date 2024/6/5 10:26 + * @param pickingOrderId + * @param type + * @return PickingOrderPO + */ + @Override + public PickingOrderPO getInfoByIdAndType(Long pickingOrderId, Integer type) { + PickingOrderPO pickingOrderPO = null; + if (type == 1){ + pickingOrderPO = pickingOrderMapper.queryOutOrderById(pickingOrderId); + }else { + pickingOrderPO = pickingOrderMapper.queryWaveOrderById(pickingOrderId); + } + if (pickingOrderPO == null){ + throw new ServiceException("拣货单不存在"); + } + return pickingOrderPO; + } + + /** + * @description 根据单号和类型获取指定拣货单信息 + * @author ZhouGY + * @date 2024/6/5 10:26 + * @param orderNumber + * @param type + * @return PickingOrderPO + */ + @Override + public PickingOrderPO getInfoByOrderNumberAndType(String orderNumber, Integer type) { + PickingOrderPO pickingOrderPO = null; + if (type == 1){ + pickingOrderPO = pickingOrderMapper.queryOutOrderByOrderNumber(orderNumber); + }else { + pickingOrderPO = pickingOrderMapper.queryWaveOrderByOrderNumber(orderNumber); + } + if (pickingOrderPO == null){ + throw new ServiceException("拣货单不存在"); + } + return pickingOrderPO; + } + + /** + * @description 根据拣货单号 更新拣货单拣货数量失败 + * @author ZhouGY + * @date 2024/7/17 16:13 + * @param pickingOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean addQuantity(PickingOrderDO pickingOrderDO) { + int count = pickingOrderMapper.addQuantity(pickingOrderDO); + if (count == 0){ + throw new ServiceException("更新拣货单拣货数量失败"); + } + return true; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/AllocationSowingWallPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/AllocationSowingWallPO.java new file mode 100644 index 000000000..695af9a71 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/AllocationSowingWallPO.java @@ -0,0 +1,31 @@ +package com.mhd.wms.domain.pickingOrder.repository.po; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title AllocationSowingWallDO + * @description: 播种分货 + * @date 2024/6/5 14:29 + **/ +@Data +public class AllocationSowingWallPO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("物料编码/物料条码/序列号") + @Excel(name = "物料编码/物料条码/序列号") + private String materialNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/PickingOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/PickingOrderPO.java new file mode 100644 index 000000000..cd41e9b41 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/po/PickingOrderPO.java @@ -0,0 +1,127 @@ +package com.mhd.wms.domain.pickingOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 拣货单对象 picking_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +@ApiModel(value = "拣货单对象", description = "拣货单响应对象") +public class PickingOrderPO extends StockOutOrderBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单id") + private Long pickingOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + @Excel(name = "拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + private Integer status; + + @ApiModelProperty("拣货单类型: 1-普通拣货单 2-波次拣货单") + @Excel(name = "拣货单类型: 1-普通拣货单 2-波次拣货单") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/todo/PickingOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/todo/PickingOrderDO.java new file mode 100644 index 000000000..26f598f16 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/repository/todo/PickingOrderDO.java @@ -0,0 +1,171 @@ +package com.mhd.wms.domain.pickingOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 拣货单对象 picking_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class PickingOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单id") + private Long pickingOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + @Excel(name = "拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + private Integer status; + + @ApiModelProperty("拣货单类型: 1-普通拣货单 2-波次拣货单") + @Excel(name = "拣货单类型: 1-普通拣货单 2-波次拣货单") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("拣货单id集合") + private List pickingOrderIdList; + + @ApiModelProperty("作业数量(当前拣货作业数量)") + @Excel(name = "作业数量 (当前拣货作业数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业拣货物料种数(当前拣货作业物料种数)") + @Excel(name = "作业拣货物料种数(当前拣货作业物料种数)") + private Integer actualPickingMaterialQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/PickingOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/PickingOrderDomainService.java new file mode 100644 index 000000000..35966e2cb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/PickingOrderDomainService.java @@ -0,0 +1,752 @@ +package com.mhd.wms.domain.pickingOrder.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.facade.IMobilizeManageService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.pickingMaterialDetail.entity.PickingMaterialDetail; +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; +import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.facade.IStockOutTaskOrderService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderService; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 拣货单 + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class PickingOrderDomainService { + + @Autowired + private IPickingOrderService pickingOrderService; + @Autowired + private IPickingMaterialDetailService pickingMaterialDetailService; + @Autowired + private IStockOutTaskOrderService stockOutTaskOrderService; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IWaveOrderService waveOrderService; + @Autowired + private IWaveOutOrderService waveOutOrderService; + @Autowired + private IHandoverTaskOrderService handoverTaskOrderService; + @Autowired + private IOutOrderAbnormalService outOrderAbnormalService; + @Autowired + private IMobilizeManageService iMobilizeManageService; + @Autowired + private IMobilizeManageDetailService iMobilizeManageDetailService; + @Autowired + private StockInOrderDomainService stockInOrderDomainService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Autowired + private IdGenerator idGenerator; + @Autowired + private PushSyncBmsDomainService pushSyncBmsDomainService; + @Resource + private OutMaterialDetailMapper outMaterialDetailMapper; + + + + /** + * 分页查询拣货单列表 + */ + public List queryList(PickingOrderDO pickingOrderDO) { + return pickingOrderService.queryList(pickingOrderDO); + } + + + /** + * 新增拣货单 + */ + public Boolean insert(PickingOrderDO pickingOrderDO) { + + return pickingOrderService.insert(pickingOrderDO); + } + + /** + * 批量生成新增拣货单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List pickingOrderDOList) { + pickingOrderService.batchInsert(pickingOrderDOList); + List pickingMaterialDetailList = new ArrayList<>(); + for (PickingOrderDO pickingOrderDO : pickingOrderDOList){ + pickingOrderDO.getMaterialDetailList().forEach(p -> { + //生成物料明细修改实体 + PickingMaterialDetail pickingMaterialDetail = genPickingMaterialDetail(p); + pickingMaterialDetailList.add(pickingMaterialDetail); + }); + } + return pickingMaterialDetailService.saveBatch(pickingMaterialDetailList); + } + + /** + * @description 生成物料明细实体 + * @author ZhouGY + * @date 2024/5/31 9:28 + * @param pickingMaterialDetailDO + * @return OutMaterialDetail + */ + private PickingMaterialDetail genPickingMaterialDetail(PickingMaterialDetailDO pickingMaterialDetailDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + PickingMaterialDetail pickingMaterialDetail = new PickingMaterialDetail(); + BeanUtils.copyProperties(pickingMaterialDetailDO, pickingMaterialDetail, "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + pickingMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + pickingMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + pickingMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + pickingMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + pickingMaterialDetail.setCreateBy(loginUser.getUserid()); + pickingMaterialDetail.setCreateByName(loginUser.getUsername()); + pickingMaterialDetail.setCreateTime(new Date()); + return pickingMaterialDetail; + } + + /** + * 修改拣货单 + */ + public Boolean update(PickingOrderDO pickingOrderDO) { + return pickingOrderService.update(pickingOrderDO); + } + + /** + * 批量删除拣货单 + */ + public Boolean delete(Long[] pickingOrderIds) { + return pickingOrderService.delete(pickingOrderIds); + } + + /** + * 获取拣货单详细信息 + */ + public PickingOrderPO getInfoByIdAndType(Long pickingOrderId, Integer type) { + PickingOrderPO pickingOrderPO = pickingOrderService.getInfoByIdAndType(pickingOrderId, type); + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + List pickingMaterialDetailPOList = pickingMaterialDetailService.queryList(pickingMaterialDetailDO); + pickingOrderPO.setMaterialDetailList(pickingMaterialDetailPOList); + return pickingOrderPO; + } + + /** + * @description 整单下发 + * @author ZhouGY + * @date 2024/5/30 11:48 + * @param pickingOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean allDistribution(PickingOrderDO pickingOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + pickingOrderDO.setTaskDistribution(2); + List pickingOrderPODbList = pickingOrderService.queryList(pickingOrderDO); + if (CollectionUtil.isEmpty(pickingOrderPODbList)){ + throw new ServiceException("收货单不存在或已下发,请重新选择"); + } + //生成拣货作业单 + genStockOutTaskOrderByAllDistribution(pickingOrderDO,pickingOrderPODbList); + //标记拣货单任务已下发 + return pickingOrderService.update(null, new UpdateWrapper().lambda() + .set(PickingOrder::getTaskDistribution, 1) + .set(PickingOrder::getTaskDistributionTime, new Date()) + .set(PickingOrder::getUpdateBy, loginUser.getUserid()) + .set(PickingOrder::getUpdateByName, loginUser.getUsername()) + .set(PickingOrder::getUpdateTime, new Date()) + .in(PickingOrder::getPickingOrderId, pickingOrderDO.getPickingOrderIdList())); + } + + + /** + * @description 明细下发 + * @author ZhouGY + * @date 2024/5/30 11:48 + * @param pickingOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean detailDistribution(PickingOrderDO pickingOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + pickingOrderDO.setTaskDistribution(2); + List pickingOrderPODbList = pickingOrderService.queryList(pickingOrderDO); + if (CollectionUtil.isEmpty(pickingOrderPODbList)){ + throw new ServiceException("拣货单不存在或已下发,请重新选择"); + } + //生成拣货作业单 + genStockOutTaskOrderByDetailDistribution(pickingOrderDO, pickingOrderPODbList); + //标记拣货单任务已下发 + return pickingOrderService.update(null, new UpdateWrapper().lambda() + .set(PickingOrder::getTaskDistribution, 1) + .set(PickingOrder::getUpdateBy, loginUser.getUserid()) + .set(PickingOrder::getUpdateByName, loginUser.getUsername()) + .set(PickingOrder::getUpdateTime, new Date()) + .in(PickingOrder::getPickingOrderId, pickingOrderDO.getPickingOrderIdList())); + } + + /** + * @description 拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean picking(PickingOrderDO pickingOrderDO){ + if (ObjectUtil.isNull(pickingOrderDO.getUpdateTime())){ + throw new ServiceException("拣货单修改时间不能为空"); + } + //TODO 增加锁 锁收货单单号 + PickingOrderPO pickingOrderPODb = pickingOrderService.getInfoByIdAndType(pickingOrderDO.getPickingOrderId(), pickingOrderDO.getType()); + if (pickingOrderPODb == null){ + throw new ServiceException("拣货单不存在"); + } + if (pickingOrderPODb.getStatus() > 3){ + throw new ServiceException("拣货单已完成拣货"); + } + if (pickingOrderPODb.getUpdateTime().compareTo(pickingOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("拣货单【" + pickingOrderPODb.getPickingOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + pickingOrderDO.setOrderNumber(pickingOrderPODb.getOrderNumber()); + pickingOrderDO.setPickingOrderNumber(pickingOrderPODb.getPickingOrderNumber()); + PickingOrderPO pickingOrderPO = pickingMaterialDetailService.batchPickingUpdate(pickingOrderDO); + //修改库存 + updateMaterialInventory(pickingOrderDO); + //设置拣货单拣货需要更新的数据数据 + updatePickingOrder(pickingOrderPO, pickingOrderPODb); + //更新出库单状态 + return updateStockOutOrder(pickingOrderPODb); + } + + /** + * @description 修改库位信息 + * @author ZhouGY + * @date 2024/7/30 15:35 + * @param pickingOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public void updateMaterialInventory(PickingOrderDO pickingOrderDO){ + List materialInventoryOldList = new ArrayList<>(); + List pickingMaterialDetailDOList = pickingOrderDO.getMaterialDetailList(); + for (PickingMaterialDetailDO pickingMaterialDetailDO : pickingMaterialDetailDOList){ + BigDecimal actualQuantity = pickingMaterialDetailDO.getActualQuantity(); + MaterialInventory materialInventoryOldDb = materialInventoryService.getById(pickingMaterialDetailDO.getMaterialInventoryId()); + if (ObjectUtil.isNull(materialInventoryOldDb)){ + throw new ServiceException("物料原库位下的物料库存不存在,不能进行出库"); + } + if (materialInventoryOldDb.getInventoryQuantity().compareTo(actualQuantity) < 0){ + throw new ServiceException("物料原库位下的物料库存不足,不能进行出库"); + } + //原库位 + MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO(); + materialInventoryDOOld.setMaterialInventoryId(pickingMaterialDetailDO.getMaterialInventoryId()); + materialInventoryDOOld.setInventoryQuantity(actualQuantity); + materialInventoryDOOld.setAllocationQuantity(actualQuantity); + materialInventoryOldList.add(materialInventoryDOOld); + } + //原库位 需要减少的库存 + if (!CollectionUtils.isEmpty(materialInventoryOldList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryOldList, 2); + } + } + + /** + * @description 设置拣货单拣货需要更新的数据数据 + * @author ZhouGY + * @date 2024/7/13 10:26 + * @param pickingOrderPO + * @param pickingOrderPODb + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updatePickingOrder(PickingOrderPO pickingOrderPO, PickingOrderPO pickingOrderPODb){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + PickingOrder pickingOrder = new PickingOrder(); + pickingOrder.setPickingOrderId(pickingOrderPODb.getPickingOrderId()); + pickingOrder.setStatus(2); + pickingOrder.setPickingQuantity(pickingOrderPODb.getPickingQuantity().add(pickingOrderPO.getPickingQuantity())); + pickingOrder.setPickingMaterialQuantity(pickingOrderPODb.getPickingMaterialQuantity() + pickingOrderPO.getPickingMaterialQuantity()); + pickingOrder.setUpdateBy(loginUser.getUserid()); + pickingOrder.setUpdateByName(loginUser.getUsername()); + pickingOrder.setUpdateTime(new Date()); + List list = pickingMaterialDetailService.list(new QueryWrapper().lambda().eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrderPODb.getPickingOrderNumber())); + //如果拣货明细中已拣货数量都大于等于计划数量,则改拣货单为拣货完成 + Boolean isPickingComplete = list.stream().allMatch(pickingMaterialDetail -> pickingMaterialDetail.getPickingQuantity().compareTo(pickingMaterialDetail.getQuantity()) >= 0); + if(isPickingComplete){ + pickingOrder.setStatus(3); + } + return pickingOrderService.updateById(pickingOrder); + } + + /** + * @param pickingOrderPODb + * @return StockReceiptOrder + * @description 更新出库单状态 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockOutOrder(PickingOrderPO pickingOrderPODb) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List pickingOrderList = pickingOrderService.list(new QueryWrapper().lambda() + .eq(PickingOrder::getDelFlag, 1) + .eq(PickingOrder::getStatus, 3) + .eq(PickingOrder::getOrderNumber, pickingOrderPODb.getOrderNumber())); + BigDecimal pickingQuantity = pickingOrderList.stream().map(PickingOrder::getPickingQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + if (1 == pickingOrderPODb.getType()){ + int status = 6; + //不需要复核的单子 标记出库单完成 + StockOutOrder stockOutOrderDb = stockOutOrderService.getOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber())); + if (pickingQuantity.compareTo(stockOutOrderDb.getQuantity()) >= 0){ + status = 7; + if (pickingOrderPODb.getReview() == 2){ + status = 9; + //是否生成交接作业单 + genHandoverTaskOrder(pickingOrderPODb); + if ("diao_bo_chu_ku".equals(stockOutOrderDb.getOrderTypeCode())){ + //调拨出库的出库单类型 需要生成入库单 + genStockInOrder(stockOutOrderDb); + } + + } + } + // 根据拣货单明细更新出库单明细 + for(PickingOrder pickingOrder :pickingOrderList){ + List list = pickingMaterialDetailService.list(new QueryWrapper().lambda().eq(PickingMaterialDetail::getPickingOrderNumber, pickingOrder.getPickingOrderNumber())); + + for (PickingMaterialDetail pickingMaterialDetail :list){ + OutMaterialDetail outMaterialDetail = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda().eq(OutMaterialDetail::getUniqueId, pickingMaterialDetail.getOutUniqueId())); + outMaterialDetail.setPickingQuantity(pickingMaterialDetail.getPickingQuantity()); + outMaterialDetailMapper.updateById(outMaterialDetail); + } + } + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setOutOrderNumber(pickingOrderPODb.getOrderNumber()); + //1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 + stockOutOrder.setStatus(status); + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + stockOutOrder.setPickingQuantity(pickingQuantity); + return stockOutOrderService.update(stockOutOrder, + new QueryWrapper().lambda().eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber())); + }else { + //波次单 + WaveOrder waveOrderDb = waveOrderService.getOne(new QueryWrapper().lambda() + .eq(WaveOrder::getDelFlag, 1) + .eq(WaveOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + int waveOrderStatus = 5; + if (pickingQuantity.compareTo(waveOrderDb.getQuantity()) >= 0){ + waveOrderStatus = 6; + } + //出库单 波次单关联表 + List waveOutOrderList = waveOutOrderService.list(new QueryWrapper().lambda() + .eq(WaveOutOrder::getDelFlag, 1) + .eq(WaveOutOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + List outOrderNumberList = waveOutOrderList.stream().map(WaveOutOrder::getOutOrderNumber).collect(Collectors.toList()); + + StockOutOrder stockOutOrder = new StockOutOrder(); + //1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 + stockOutOrder.setStatus(waveOrderStatus == 6 ? 7 : 6); + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + stockOutOrderService.update(stockOutOrder, + new QueryWrapper().lambda().in(StockOutOrder::getOutOrderNumber, outOrderNumberList)); + + if (waveOrderStatus == 6){ + //波次的需要全部拣货完才能,回写出库物料明细表信息,并且所有出库单拣货数量==计划数量 + for(WaveOutOrder waveOutOrder :waveOutOrderList){ + List listWaveOutOrder = waveOutOrderService.list(new QueryWrapper().lambda().eq(WaveOutOrder::getWaveOrderNumber, waveOutOrder.getWaveOrderNumber())); + for (WaveOutOrder waveOutOrder1 :listWaveOutOrder){ + List outMaterialDetails = outMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(OutMaterialDetail::getOutOrderNumber, waveOutOrder1.getOutOrderNumber())); + for (OutMaterialDetail outMaterialDetail :outMaterialDetails){ + outMaterialDetail.setPickingQuantity(outMaterialDetail.getQuantity()); + outMaterialDetailMapper.updateById(outMaterialDetail); + } + //设置出库单拣货数量 + stockOutOrder.setPickingQuantity(pickingQuantity); + stockOutOrderService.update(stockOutOrder, new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber, waveOutOrder1.getOutOrderNumber()) + ); + } + } + } + //波次单 + WaveOrder waveOrder = new WaveOrder(); + waveOrder.setWaveOrderNumber(pickingOrderPODb.getOrderNumber()); + //1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消 + waveOrder.setStatus(waveOrderStatus); + waveOrder.setUpdateBy(loginUser.getUserid()); + waveOrder.setUpdateByName(loginUser.getUsername()); + waveOrder.setUpdateTime(new Date()); + return waveOrderService.update(waveOrder, + new QueryWrapper().lambda().eq(WaveOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + } + } + + /** + * @description 按单生成拣货作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + * @param pickingOrderPOList + */ + @Transactional(rollbackFor = Exception.class) + public void genStockOutTaskOrderByAllDistribution(PickingOrderDO pickingOrderDO, List pickingOrderPOList) { + List stockOutTaskOrderDOList = new ArrayList<>(); + List pickingOrderNumberList = pickingOrderPOList.stream().map(PickingOrderPO::getPickingOrderNumber).collect(Collectors.toList()); + List pickingMaterialDetailAllDbList = pickingMaterialDetailService.list(new QueryWrapper().lambda() + .in(PickingMaterialDetail::getPickingOrderNumber, pickingOrderNumberList)); + Map> pickingMaterialDetailMap = pickingMaterialDetailAllDbList.stream().collect(Collectors.groupingBy(PickingMaterialDetail::getPickingOrderNumber)); + pickingOrderPOList.forEach(pickingOrderPO -> { + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + BeanUtils.copyProperties(pickingOrderPO, stockOutTaskOrderDO); + stockOutTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("JHZYLS")); + stockOutTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("JHZY")); + stockOutTaskOrderDO.setType(1);//按单 + stockOutTaskOrderDO.setWarehouseId(pickingOrderDO.getWarehouseId()); + stockOutTaskOrderDO.setWarehouseCode(pickingOrderDO.getWarehouseCode()); + stockOutTaskOrderDO.setWarehouseName(pickingOrderDO.getWarehouseName()); + stockOutTaskOrderDO.setStorageSectionId(pickingOrderDO.getStorageSectionId()); + stockOutTaskOrderDO.setStorageCode(pickingOrderDO.getStorageCode()); + stockOutTaskOrderDO.setStorageName(pickingOrderDO.getStorageName()); + stockOutTaskOrderDO.setStorageLocationId(pickingOrderDO.getStorageLocationId()); + stockOutTaskOrderDO.setStorageLocationCode(pickingOrderDO.getStorageLocationCode()); + stockOutTaskOrderDO.setStorageLocationName(pickingOrderDO.getStorageLocationName()); + List pickingMaterialDetailDbList = pickingMaterialDetailMap.get(pickingOrderPO.getPickingOrderNumber()); + List taskPickingMaterialDetailDOList = new ArrayList<>(); + pickingMaterialDetailDbList.forEach(materialDetailPO -> { + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(materialDetailPO, taskPickingMaterialDetailDO); + taskPickingMaterialDetailDO.setPickingUniqueId(materialDetailPO.getUniqueId()); + taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO); + }); + stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList); + stockOutTaskOrderDO.setTaskNumber(stockOutTaskOrderDO.getTaskNumber()); + stockOutTaskOrderDOList.add(stockOutTaskOrderDO); + }); + //拣货生成任务下发 + genDeliveTask(pickingOrderDO,stockOutTaskOrderDOList); + stockOutTaskOrderService.genStockPickingTaskOrder(stockOutTaskOrderDOList); + } + + + /** + * @description 按明细生成拣货作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + * @param pickingOrderDO + * @param pickingOrderPODbList + */ + @Transactional(rollbackFor = Exception.class) + public void genStockOutTaskOrderByDetailDistribution(PickingOrderDO pickingOrderDO, List pickingOrderPODbList) { + List orderNumberList = pickingOrderPODbList.stream().map(PickingOrderPO::getPickingOrderNumber).collect(Collectors.toList()); + Map stringPickingOrderPOMap = pickingOrderPODbList.stream().collect(Collectors.toMap(PickingOrderPO::getPickingOrderNumber, Function.identity())); + List pickingMaterialDetailDbList = pickingMaterialDetailService.list(new QueryWrapper().lambda().in(PickingMaterialDetail::getPickingOrderNumber, orderNumberList)); + List stockOutTaskOrderDOList = new ArrayList<>(); + pickingMaterialDetailDbList.forEach(pickingMaterialDetail -> { + PickingOrderPO pickingOrderPO = stringPickingOrderPOMap.get(pickingMaterialDetail.getPickingOrderNumber()); + if (pickingOrderPO == null){ + throw new ServiceException("拣货单不存在"); + } + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + BeanUtils.copyProperties(pickingOrderPO, stockOutTaskOrderDO); + stockOutTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("JHZYLS")); + stockOutTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("JHZY")); + stockOutTaskOrderDO.setType(1);//按单 + stockOutTaskOrderDO.setStorageSectionId(pickingOrderDO.getStorageSectionId()); + stockOutTaskOrderDO.setStorageCode(pickingOrderDO.getStorageCode()); + stockOutTaskOrderDO.setStorageName(pickingOrderDO.getStorageName()); + stockOutTaskOrderDO.setStorageLocationId(pickingOrderDO.getStorageLocationId()); + stockOutTaskOrderDO.setStorageLocationCode(pickingOrderDO.getStorageLocationCode()); + stockOutTaskOrderDO.setStorageLocationName(pickingOrderDO.getStorageLocationName()); + //拣货作业单明细 + List taskPickingMaterialDetailDOList = new ArrayList<>(); + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(pickingMaterialDetail, taskPickingMaterialDetailDO); + taskPickingMaterialDetailDO.setPickingUniqueId(pickingMaterialDetail.getUniqueId()); + taskPickingMaterialDetailDOList.add(taskPickingMaterialDetailDO); + stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailDOList); + stockOutTaskOrderDOList.add(stockOutTaskOrderDO); + }); + //拣货生成任务下发 + genDeliveTask(pickingOrderDO,stockOutTaskOrderDOList); + stockOutTaskOrderService.genStockPickingTaskOrder(stockOutTaskOrderDOList); + } + /** + * @description 完成拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param pickingOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean completePicking(PickingOrderDO pickingOrderDO){ + PickingOrderPO pickingOrderPO = pickingOrderService.getInfoByIdAndType(pickingOrderDO.getPickingOrderId(), pickingOrderDO.getType()); + if (pickingOrderPO == null){ + throw new ServiceException("拣货单不存在"); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockOutOrder::getOutOrderNumber, pickingOrderPO.getOrderNumber()); + StockOutOrder stockOutOrder = stockOutOrderService.getOne(queryWrapper); + if(null == stockOutOrder){ + throw new ServiceException("出库单不存在"); + } + if (1 == pickingOrderPO.getStatus()){ + throw new ServiceException("拣货单【" + pickingOrderPO.getPickingOrderNumber() + "】待拣货,请先进行拣货"); + } + if (3 == pickingOrderPO.getStatus()){ + throw new ServiceException("拣货单【" + pickingOrderPO.getPickingOrderNumber() + "】已完成拣货,请重新选择"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + pickingOrderService.update(null, new UpdateWrapper().lambda() + .set(PickingOrder::getStatus, 3) + .set(PickingOrder::getUpdateBy, loginUser.getUserid()) + .set(PickingOrder::getUpdateByName, loginUser.getUsername()) + .set(PickingOrder::getUpdateTime, new Date()) + .eq(PickingOrder::getPickingOrderId, pickingOrderDO.getPickingOrderId())); + if (pickingOrderPO.getType() == 2){ + //将分配数量分给子单 + pickingMaterialDetailService.waveAssignUpdate(pickingOrderPO.getOrderNumber(), 2); + } + //生成拣货追溯记录 + genInventoryStandingDetail(pickingOrderPO); + //比较是否存在异常 并生成拣货异常信息 + OutOrderAbnormalBaseDO outOrderAbnormalBaseDO = new OutOrderAbnormalBaseDO(); + BeanUtils.copyProperties(pickingOrderPO, outOrderAbnormalBaseDO); + outOrderAbnormalBaseDO.setOutOrderNumber(stockOutOrder.getOutOrderNumber()); + outOrderAbnormalBaseDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + outOrderAbnormalService.genOutOrderAbnormal(outOrderAbnormalBaseDO, 1); + //更新出库单状态 + updateStockOutOrder(pickingOrderPO); + //同步BMS结算系统,生成业务单据 + //这里只有不需要复核的时候才推送,需要复核的在复核流程推送 + if(stockOutOrder.getReview()==2){ +// pushSyncBmsDomainService.pushOutOrder(pickingOrderPO.getOrderNumber()); + } + return true; + } + + /** + * @description 调拨类型的出库单 根据出库单号 生成入库单 + * @author ZhouGY + * @date 2024/7/20 18:47 + * @param stockOutOrder + */ + @Transactional(rollbackFor = Exception.class) + public void genStockInOrder(StockOutOrder stockOutOrder){ + if (!"diao_bo_chu_ku".equals(stockOutOrder.getOrderTypeCode())){ + return; + } + MobilizeManage mobilizeManage = iMobilizeManageService.getOne(new QueryWrapper().lambda().eq(MobilizeManage::getMobilizeCode, stockOutOrder.getMobilizeCode())); + if (ObjectUtil.isNull(mobilizeManage)){ + throw new ServiceException("调拨单不存在,请见调拨单号是否有误"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + MobilizeManageDetailDO mobilizeManageDetailDOQuery = new MobilizeManageDetailDO(); + mobilizeManageDetailDOQuery.setMobilizeCode(mobilizeManage.getMobilizeCode()); + List mobilizeManageDetailPODbList = iMobilizeManageDetailService.queryList(mobilizeManageDetailDOQuery); + Map> mobilizeManageDetailDbMap = mobilizeManageDetailPODbList.stream().collect(Collectors.groupingBy(p -> p + "," + p.getShipperCode())); + List stockInOrderDOList = new ArrayList<>(); + for (Map.Entry> map : mobilizeManageDetailDbMap.entrySet()){ + List mobilizeManageDetailPOList = map.getValue(); + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + stockInOrderDO.setMobilizeCode(mobilizeManage.getMobilizeCode()); + stockInOrderDO.setWarehouseId(mobilizeManage.getInWarehouseId()); + stockInOrderDO.setWarehouseCode(mobilizeManage.getInWarehouseCode()); + stockInOrderDO.setWarehouseName(mobilizeManage.getInWarehouseName()); + stockInOrderDO.setOrganizationId(mobilizeManage.getOrganizationId()); + stockInOrderDO.setOrganizationName(mobilizeManage.getOrganizationName()); + stockInOrderDO.setTopOrganizationId(mobilizeManage.getTopOrganizationId()); + stockInOrderDO.setStatus(2); + MobilizeManageDetailPO mobilizeManageDetailDbPO = mobilizeManageDetailPOList.get(0); + stockInOrderDO.setShipperId(mobilizeManageDetailDbPO.getShipperId()); + stockInOrderDO.setShipperName(mobilizeManageDetailDbPO.getShipperName()); + stockInOrderDO.setOrderTypeCode("diao_po_ru_ku"); + stockInOrderDO.setOrderTypeName("调拨入库"); + stockInOrderDO.setDirectWarehouse(2); + stockInOrderDO.setMaterialQuantity(mobilizeManageDetailPOList.size()); + stockInOrderDO.setCreateBy(loginUser.getUserid()); + stockInOrderDO.setCreateByName(loginUser.getUsername()); + stockInOrderDO.setCreateTime(new Date()); + List inMaterialDetailDOList = JSONUtil.toList(JSONUtil.parseArray(mobilizeManageDetailPOList), InMaterialDetailDO.class); + stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setQuantity(quantity); + stockInOrderDOList.add(stockInOrderDO); + } + stockInOrderDomainService.batchInsert(stockInOrderDOList); + } + + /** + * @description 生成交接作业单 + * @author ZhouGY + * @date 2024/5/31 14:59 + * @param pickingOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genHandoverTaskOrder(PickingOrderPO pickingOrderPO){ + //判断是否生成交接作业单 不需要复核的单子直接生成交接作业单 需要复核的单子复核后在生成 + if (pickingOrderPO.getReview() == 2){ + return; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO(); + handoverTaskOrderDO.setOrganizationId(pickingOrderPO.getOrganizationId()); + handoverTaskOrderDO.setOrganizationName(pickingOrderPO.getOrganizationName()); + handoverTaskOrderDO.setTopOrganizationId(pickingOrderPO.getTopOrganizationId()); + handoverTaskOrderDO.setWarehouseId(pickingOrderPO.getWarehouseId()); + handoverTaskOrderDO.setWarehouseCode(pickingOrderPO.getWarehouseCode()); + handoverTaskOrderDO.setWarehouseName(pickingOrderPO.getWarehouseName()); + handoverTaskOrderDO.setShipperId(pickingOrderPO.getShipperId()); + handoverTaskOrderDO.setShipperName(pickingOrderPO.getShipperName()); + handoverTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("JJZYLS")); + handoverTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("JJZY")); + handoverTaskOrderDO.setStatus(1); + handoverTaskOrderDO.setOrderTypeCode(pickingOrderPO.getOrderTypeCode()); + handoverTaskOrderDO.setOrderTypeName(pickingOrderPO.getOrderTypeName()); + handoverTaskOrderDO.setExpectTime(pickingOrderPO.getExpectTime()); + handoverTaskOrderDO.setOrderNumber(pickingOrderPO.getOrderNumber()); + handoverTaskOrderDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + handoverTaskOrderDO.setCreateBy(loginUser.getUserid()); + handoverTaskOrderDO.setCreateByName(loginUser.getUsername()); + handoverTaskOrderDO.setCreateTime(new Date()); + handoverTaskOrderService.insert(handoverTaskOrderDO);; + } + + /** + * @description 生成拣货追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param pickingOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(PickingOrderPO pickingOrderPO){ + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber()); + List pickingMaterialDetailPOList = pickingMaterialDetailService.queryList(pickingMaterialDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + for (PickingMaterialDetailPO pickingMaterialDetailPO : pickingMaterialDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(pickingOrderPO.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(pickingOrderPO.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(pickingOrderPO.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(pickingMaterialDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(pickingMaterialDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(pickingMaterialDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(pickingMaterialDetailPO.getPickingOrderNumber()); + inventoryStandingDetailDO.setWarehouseId(pickingOrderPO.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(pickingOrderPO.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(pickingOrderPO.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(3); + inventoryStandingDetailDO.setMaterialQuantity(pickingMaterialDetailPO.getPickingQuantity()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + /** + * @description 拣货生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param stockOutTaskOrderDOList + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(PickingOrderDO pickingOrderDO, List stockOutTaskOrderDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (StockOutTaskOrderDO stockOutTaskOrderDO : stockOutTaskOrderDOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(stockOutTaskOrderDO.getTaskNumber()); + deliveTaskDO.setWarehouseId(stockOutTaskOrderDO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(stockOutTaskOrderDO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(stockOutTaskOrderDO.getWarehouseName()); + deliveTaskDO.setTaskType(3); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(pickingOrderDO.getOperatorsBy()); + deliveTaskDO.setOperatorsName(pickingOrderDO.getOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pushSyncBms/PushSyncBmsDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pushSyncBms/PushSyncBmsDomainService.java new file mode 100644 index 000000000..14861f700 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pushSyncBms/PushSyncBmsDomainService.java @@ -0,0 +1,156 @@ +package com.mhd.wms.domain.pushSyncBms; + + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.mhd.common.core.domain.dto.BusinessDataPushDTO; +import com.mhd.common.core.enums.BelongModuleCode; +import com.mhd.common.core.enums.DocumentTypeCode; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.system.api.BmsServiceFeign; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 推送同步BMS 领域服务 + */ +@Service +@Slf4j +public class PushSyncBmsDomainService { + + @Autowired + private BmsServiceFeign bmsServiceFeign; + @Autowired + private IStockInOrderService iStockInOrderService; + @Autowired + private IStockOutOrderService iStockOutOrderService; + @Autowired + private IPickingOrderService iPickingOrderService; + + + /** + * 入库单推送BMS结算系统 + * @param inOrderNumber 入库单号 + */ + public void pushInShelfOrder(String inOrderNumber) { +// 根据入库单号,查询入库单信息,并拼接推送所需参数 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockInOrder::getInOrderNumber, inOrderNumber); + StockInOrder stockInOrder = iStockInOrderService.getOne(queryWrapper); + if(null == stockInOrder){ + throw new ServiceException("入库单信息未找到"); + } + BusinessDataPushDTO common = new BusinessDataPushDTO(); + common.setOrganizationId(stockInOrder.getOrganizationId()); + common.setBelongModuleCode(BelongModuleCode.WMS.getCode()); + common.setDocumentTypeCode(DocumentTypeCode.wms_receipt_order.getCode()); + common.setOriginalBusinessNum(stockInOrder.getInOrderNumber()); + common.setSettlementCustomersCode(stockInOrder.getShipperCode()); + String documentFormJson = splicingStrings(stockInOrder); + common.setDocumentFormJson(documentFormJson); + AjaxResult ajaxResult = bmsServiceFeign.pushSyncData(common); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException(String.valueOf(ajaxResult.get("msg"))); + } + } + + /** + * 拼接入库单信息,转成jsonString并返回 + * @param stockInOrder 入库单 + * @return jsonString + */ + private String splicingStrings(StockInOrder stockInOrder) { + //根据前端维护的单据类型,拼接入库单信息 + Map resultMap = new HashMap<>(); + resultMap.put("receipt_order_no",stockInOrder.getInOrderNumber()); + resultMap.put("receipt_order_type",stockInOrder.getOrderTypeName()); + resultMap.put("payable_amount","0"); + resultMap.put("plan_quantity",stockInOrder.getQuantity()); + resultMap.put("real_quantity",stockInOrder.getQuantity()); + resultMap.put("money","0"); + resultMap.put("create_time",stockInOrder.getCreateTime()); + resultMap.put("receipt_quantity",stockInOrder.getQuantity()); + resultMap.put("receipt_volume",stockInOrder.getVolumeLimit()); + resultMap.put("weight_of_receipt",stockInOrder.getWeightLimit()); + resultMap.put("unit_price","0"); + return JSON.toJSONString(stockInOrder); + } + + + /** + * 出库单推送BMS结算系统 + * @param outOrderNumber 出库单号 + */ + public void pushOutOrder(String outOrderNumber) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StockOutOrder::getOutOrderNumber, outOrderNumber); + StockOutOrder stockOutOrder = iStockOutOrderService.getOne(queryWrapper); + if(null == stockOutOrder){ + throw new ServiceException("出库单信息未找到"); + } + //查询拣货单信息 + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(PickingOrder::getOrderNumber, stockOutOrder.getOutOrderNumber()); + List pickingOrders = iPickingOrderService.list(queryWrapper1); + if(pickingOrders==null || pickingOrders.size()==0){ + throw new ServiceException("拣货单信息未找到"); + } + BusinessDataPushDTO common = new BusinessDataPushDTO(); + common.setOrganizationId(stockOutOrder.getOrganizationId()); + common.setBelongModuleCode(BelongModuleCode.WMS.getCode()); + common.setDocumentTypeCode(DocumentTypeCode.stock_out_order.getCode()); + common.setOriginalBusinessNum(stockOutOrder.getOutOrderNumber()); + common.setSettlementCustomersCode(stockOutOrder.getShipperCode()); + String documentFormJson = splicingOutOrderStrings(stockOutOrder,pickingOrders); + common.setDocumentFormJson(documentFormJson); + AjaxResult ajaxResult = bmsServiceFeign.pushSyncData(common); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException(String.valueOf(ajaxResult.get("msg"))); + } + } + + /** + * 拼接出库单信息,转成jsonString并返回 + * @param stockOutOrder 出库单 + * @return jsonString + */ + private String splicingOutOrderStrings(StockOutOrder stockOutOrder,List pickingOrders) { + //根据前端维护的单据类型,拼接出库单信息 + Map resultMap = new HashMap<>(); + resultMap.put("out_order_number",stockOutOrder.getOutOrderNumber()); + resultMap.put("warehouse_name",stockOutOrder.getWarehouseName()); + resultMap.put("shipper_name",stockOutOrder.getShipperName()); + resultMap.put("quantity",stockOutOrder.getQuantity()); + resultMap.put("allocation_quantity",stockOutOrder.getAllocationQuantity()); + resultMap.put("check_quantity",stockOutOrder.getCheckQuantity()); + resultMap.put("order_type_name",stockOutOrder.getOrderTypeName()); + resultMap.put("mobilize_code",stockOutOrder.getMobilizeCode()); + resultMap.put("outbound_weight",stockOutOrder.getWeightLimit()); + resultMap.put("outbound_volume",stockOutOrder.getVolumeLimit()); + resultMap.put("outbound_quantity",stockOutOrder.getCheckQuantity()); + //将集合pickingOrders遍历分别得到体积、重量的和 + BigDecimal volumeLimit = pickingOrders.stream().map(PickingOrder::getVolumeLimit).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal weightLimit = pickingOrders.stream().map(PickingOrder::getWeightLimit).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal pickingQuantity = pickingOrders.stream().map(PickingOrder::getPickingQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + resultMap.put("picking volume",volumeLimit); + resultMap.put("picking_quantity",pickingQuantity); + resultMap.put("picking_weight",weightLimit); + resultMap.put("unit_price","0"); + return JSON.toJSONString(resultMap); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/entity/PutawayRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/entity/PutawayRule.java new file mode 100644 index 000000000..4d19f8ea0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/entity/PutawayRule.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.putawayRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 上架规则对象 putaway_rule + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class PutawayRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/facade/IPutawayRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/facade/IPutawayRuleService.java new file mode 100644 index 000000000..3d14d0598 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/facade/IPutawayRuleService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.putawayRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.putawayRule.entity.PutawayRule; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; + +import java.util.List; + +/** + * 上架规则Service接口 + * + * @author gen + * @date 2024-07-19 + */ +public interface IPutawayRuleService extends IService +{ + /** + * 分页查询上架规则列表 + */ + public List queryList(PutawayRuleDO putawayRuleDO); + + /** + * 新增上架规则 + */ + public Boolean insert(PutawayRuleDO putawayRuleDO); + + /** + * 修改上架规则 + */ + public Boolean update(PutawayRuleDO putawayRuleDO); + + /** + * 批量删除上架规则 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询上架规则 + */ + public PutawayRulePO getInfo(Long id); + + PutawayRule save(PutawayRuleDO putawayRuleDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/mapper/PutawayRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/mapper/PutawayRuleMapper.java new file mode 100644 index 000000000..25e13c337 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/mapper/PutawayRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.putawayRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.putawayRule.entity.PutawayRule; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; + +import java.util.List; + +/** + * 上架规则Mapper接口 + * + * @author gen + * @date 2024-07-19 + */ +public interface PutawayRuleMapper extends BaseMapper +{ + /** + * 查询上架规则列表 + */ + public List queryList(PutawayRuleDO putawayRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/persistence/PutawayRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/persistence/PutawayRuleImpl.java new file mode 100644 index 000000000..706e6f587 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/persistence/PutawayRuleImpl.java @@ -0,0 +1,110 @@ +package com.mhd.wms.domain.putawayRule.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.putawayRule.entity.PutawayRule; +import com.mhd.wms.domain.putawayRule.repository.facade.IPutawayRuleService; +import com.mhd.wms.domain.putawayRule.repository.mapper.PutawayRuleMapper; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.mapper.PutawayRuleDetailMapper; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 上架规则Service业务层处理 + * + * @author gen + * @date 2024-07-19 + */ +@Service +public class PutawayRuleImpl extends ServiceImpl implements IPutawayRuleService { + @Autowired + private PutawayRuleMapper putawayRuleMapper; + + @Resource + private PutawayRuleDetailMapper putawayRuleDetailMapper; + + /** + * 查询上架规则列表 + */ + @Override + public List queryList(PutawayRuleDO putawayRuleDO) + { + return putawayRuleMapper.queryList(putawayRuleDO); + } + + /** + * 新增上架规则 + */ + @Override + public Boolean insert(PutawayRuleDO putawayRuleDO) { + PutawayRule putawayRule = new PutawayRule(); + BeanUtils.copyProperties(putawayRuleDO,putawayRule); + return this.save(putawayRule); + } + + /** + * 修改上架规则 + */ + @Override + public Boolean update(PutawayRuleDO putawayRuleDO) { + PutawayRule putawayRule = new PutawayRule(); + BeanUtils.copyProperties(putawayRuleDO,putawayRule); + return this.updateById(putawayRule); + } + + /** + * 批量删除上架规则 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + PutawayRule putawayRule = new PutawayRule(); + putawayRule.setId(id); + putawayRule.setDelFlag(2); + list.add(putawayRule); + + } + return this.updateBatchById(list); + } + + /** + * 修改上架规则 + */ + @Override + public PutawayRulePO getInfo(Long id) { + PutawayRule putawayRule = this.getById(id); + PutawayRulePO putawayRulePO = new PutawayRulePO(); + BeanUtils.copyProperties(putawayRule,putawayRulePO); + List putawayRuleDetails = putawayRuleDetailMapper.selectList(new LambdaQueryWrapper() + .eq(PutawayRuleDetail::getPutawayRuleId, id).eq(PutawayRuleDetail::getDelFlag, 1)); + + List putawayRuleDetailPOS = putawayRuleDetails.stream().map(putawayRuleDetail -> { + PutawayRuleDetailPO putawayRuleDetailPO = new PutawayRuleDetailPO(); + BeanUtils.copyProperties(putawayRuleDetail, putawayRuleDetailPO); + return putawayRuleDetailPO; + }).collect(Collectors.toList()); + + putawayRulePO.setPutawayRuleDetailList(putawayRuleDetailPOS); + + return putawayRulePO; + } + + @Override + public PutawayRule save(PutawayRuleDO putawayRuleDO) { + PutawayRule putawayRule = new PutawayRule(); + BeanUtils.copyProperties(putawayRuleDO,putawayRule); + this.save(putawayRule); + return putawayRule; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/po/PutawayRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/po/PutawayRulePO.java new file mode 100644 index 000000000..b468b0aed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/po/PutawayRulePO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.putawayRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 上架规则对象 putaway_rule + * + * @author gen + * @date 2024-07-19 + */ + +@Data +@ApiModel(value = "上架规则对象", description = "上架规则响应对象") +public class PutawayRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + + @ApiModelProperty("上架规则明细") + private List putawayRuleDetailList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/todo/PutawayRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/todo/PutawayRuleDO.java new file mode 100644 index 000000000..f77fdb23d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/repository/todo/PutawayRuleDO.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.putawayRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 上架规则对象 putaway_rule + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class PutawayRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + private List putawayRuleDetailDOS; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/service/PutawayRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/service/PutawayRuleDomainService.java new file mode 100644 index 000000000..cd6a91f32 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRule/service/PutawayRuleDomainService.java @@ -0,0 +1,69 @@ +package com.mhd.wms.domain.putawayRule.service; + +import com.mhd.wms.domain.putawayRule.entity.PutawayRule; +import com.mhd.wms.domain.putawayRule.repository.facade.IPutawayRuleService; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 上架规则 + * + * @author gen + * @date 2024-07-19 + */ +@Service +@Slf4j +public class PutawayRuleDomainService { + + @Autowired + private IPutawayRuleService putawayRuleService; + + + /** + * 分页查询上架规则列表 + */ + public List queryList(PutawayRuleDO putawayRuleDO) { + return putawayRuleService.queryList(putawayRuleDO); + } + + + /** + * 新增上架规则 + */ + public Boolean insert(PutawayRuleDO putawayRuleDO) { + + return putawayRuleService.insert(putawayRuleDO); + } + + /** + * 修改上架规则 + */ + public Boolean update(PutawayRuleDO putawayRuleDO) { + return putawayRuleService.update(putawayRuleDO); + } + + /** + * 批量删除上架规则 + */ + public Boolean delete(Long[] ids) { + return putawayRuleService.delete(ids); + } + + /** + * 获取上架规则详细信息 + */ + public PutawayRulePO getInfo(Long id) + { + return putawayRuleService.getInfo(id); + } + + + public PutawayRule save(PutawayRuleDO putawayRuleDO) { + return putawayRuleService.save(putawayRuleDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/entity/PutawayRuleDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/entity/PutawayRuleDetail.java new file mode 100644 index 000000000..f3bf44e8e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/entity/PutawayRuleDetail.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.putawayRuleDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 上架规则明细对象 putaway_rule_detail + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class PutawayRuleDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("上架规则ID") + @Excel(name = "上架规则ID") + private Long putawayRuleId; + + @ApiModelProperty("主规则ID") + @Excel(name = "主规则ID") + private Integer mainRuleId; + + @ApiModelProperty("主规则") + @Excel(name = "主规则") + private String mainRule; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty("库位空间限制;0不限制1限制") + @Excel(name = "库位空间限制;0不限制1限制") + private Integer storageSpaceLimit; + + @ApiModelProperty("库位空间限制类型ID") + @Excel(name = "库位空间限制类型ID") + private String storageSpaceLimitTypeId; + + @ApiModelProperty("库位空间限制类型") + @Excel(name = "库位空间限制类型") + private String storageSpaceLimitType; + + @ApiModelProperty("可用库位类型;0不限制1限制") + @Excel(name = "可用库位类型;0不限制1限制") + private Integer usableLocationType; + + @ApiModelProperty("包含库位类型ID") + @Excel(name = "包含库位类型ID") + private String locationTypeId; + + @ApiModelProperty("包含库位类型") + @Excel(name = "包含库位类型") + private String locationType; + + @ApiModelProperty("可用库位种类;0不限制1限制") + @Excel(name = "可用库位种类;0不限制1限制") + private Integer usableLocationKind; + + @ApiModelProperty("包含库位种类ID") + @Excel(name = "包含库位种类ID") + private String locationKindId; + + @ApiModelProperty("包含库位种类") + @Excel(name = "包含库位种类") + private String locationKind; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/facade/IPutawayRuleDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/facade/IPutawayRuleDetailService.java new file mode 100644 index 000000000..dda606fc2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/facade/IPutawayRuleDetailService.java @@ -0,0 +1,49 @@ +package com.mhd.wms.domain.putawayRuleDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; + +import java.util.List; + +/** + * 上架规则明细Service接口 + * + * @author gen + * @date 2024-07-20 + */ +public interface IPutawayRuleDetailService extends IService +{ + /** + * 分页查询上架规则明细列表 + */ + public List queryList(PutawayRuleDetailDO putawayRuleDetailDO); + + /** + * 新增上架规则明细 + */ + public Boolean insert(PutawayRuleDetailDO putawayRuleDetailDO); + + /** + * 修改上架规则明细 + */ + public Boolean update(PutawayRuleDetailDO putawayRuleDetailDO); + + /** + * 批量删除上架规则明细 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询上架规则明细 + */ + public PutawayRuleDetailPO getInfo(Long id); + + void deleteByPutawayRuleId(Long id); + + boolean deleteByPutawayRuleIds(Long[] ids); + + List selectListByPutawayRuleId(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/mapper/PutawayRuleDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/mapper/PutawayRuleDetailMapper.java new file mode 100644 index 000000000..de4875a4e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/mapper/PutawayRuleDetailMapper.java @@ -0,0 +1,24 @@ +package com.mhd.wms.domain.putawayRuleDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; + +import java.util.List; + +/** + * 上架规则明细Mapper接口 + * + * @author gen + * @date 2024-07-20 + */ +public interface PutawayRuleDetailMapper extends BaseMapper +{ + /** + * 查询上架规则明细列表 + */ + public List queryList(PutawayRuleDetailDO putawayRuleDetailDO); + + List selectListByPutawayRuleId(List ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/persistence/PutawayRuleDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/persistence/PutawayRuleDetailImpl.java new file mode 100644 index 000000000..7a6f1ef83 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/persistence/PutawayRuleDetailImpl.java @@ -0,0 +1,113 @@ +package com.mhd.wms.domain.putawayRuleDetail.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.facade.IPutawayRuleDetailService; +import com.mhd.wms.domain.putawayRuleDetail.repository.mapper.PutawayRuleDetailMapper; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 上架规则明细Service业务层处理 + * + * @author gen + * @date 2024-07-20 + */ +@Service +public class PutawayRuleDetailImpl extends ServiceImpl implements IPutawayRuleDetailService{ + @Autowired + private PutawayRuleDetailMapper putawayRuleDetailMapper; + + /** + * 查询上架规则明细列表 + */ + @Override + public List queryList(PutawayRuleDetailDO putawayRuleDetailDO) + { + return putawayRuleDetailMapper.queryList(putawayRuleDetailDO); + } + + /** + * 新增上架规则明细 + */ + @Override + public Boolean insert(PutawayRuleDetailDO putawayRuleDetailDO) { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + BeanUtils.copyProperties(putawayRuleDetailDO,putawayRuleDetail); + return this.save(putawayRuleDetail); + } + + /** + * 修改上架规则明细 + */ + @Override + public Boolean update(PutawayRuleDetailDO putawayRuleDetailDO) { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + BeanUtils.copyProperties(putawayRuleDetailDO,putawayRuleDetail); + return this.updateById(putawayRuleDetail); + } + + /** + * 批量删除上架规则明细 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + putawayRuleDetail.setId(id); + putawayRuleDetail.setDelFlag(2); + list.add(putawayRuleDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改上架规则明细 + */ + @Override + public PutawayRuleDetailPO getInfo(Long id) { + PutawayRuleDetail putawayRuleDetail = this.getById(id); + PutawayRuleDetailPO putawayRuleDetailPO = new PutawayRuleDetailPO(); + BeanUtils.copyProperties(putawayRuleDetail,putawayRuleDetailPO); + return putawayRuleDetailPO; + } + + @Override + public void deleteByPutawayRuleId(Long id) { + List putawayRuleDetails = putawayRuleDetailMapper.selectList(new LambdaQueryWrapper() + .eq(PutawayRuleDetail::getPutawayRuleId, id)); + + putawayRuleDetails.stream().forEach(putawayRuleDetail -> { + putawayRuleDetail.setDelFlag(2); + }); + + this.updateBatchById(putawayRuleDetails); + + } + + @Override + public boolean deleteByPutawayRuleIds(Long[] ids) { + List list = new ArrayList<>(); + for (Long id : ids) { + PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail(); + putawayRuleDetail.setId(id); + putawayRuleDetail.setDelFlag(2); + list.add(putawayRuleDetail); + } + return this.updateBatchById(list); + } + + @Override + public List selectListByPutawayRuleId(Long[] ids) { + return putawayRuleDetailMapper.selectListByPutawayRuleId(Arrays.asList(ids)); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/po/PutawayRuleDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/po/PutawayRuleDetailPO.java new file mode 100644 index 000000000..44bb18bfb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/po/PutawayRuleDetailPO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.putawayRuleDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 上架规则明细对象 putaway_rule_detail + * + * @author gen + * @date 2024-07-20 + */ + +@Data +@ApiModel(value = "上架规则明细对象", description = "上架规则明细响应对象") +public class PutawayRuleDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("上架规则ID") + @Excel(name = "上架规则ID") + private Long putawayRuleId; + + @ApiModelProperty("主规则ID") + @Excel(name = "主规则ID") + private Integer mainRuleId; + + @ApiModelProperty("主规则") + @Excel(name = "主规则") + private String mainRule; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty("库位空间限制;0不限制1限制") + @Excel(name = "库位空间限制;0不限制1限制") + private Integer storageSpaceLimit; + + @ApiModelProperty("库位空间限制类型ID") + @Excel(name = "库位空间限制类型ID") + private String storageSpaceLimitTypeId; + + @ApiModelProperty("库位空间限制类型") + @Excel(name = "库位空间限制类型") + private String storageSpaceLimitType; + + @ApiModelProperty("可用库位类型;0不限制1限制") + @Excel(name = "可用库位类型;0不限制1限制") + private Integer usableLocationType; + + @ApiModelProperty("包含库位类型ID") + @Excel(name = "包含库位类型ID") + private String locationTypeId; + + @ApiModelProperty("包含库位类型") + @Excel(name = "包含库位类型") + private String locationType; + + @ApiModelProperty("可用库位种类;0不限制1限制") + @Excel(name = "可用库位种类;0不限制1限制") + private Integer usableLocationKind; + + @ApiModelProperty("包含库位种类ID") + @Excel(name = "包含库位种类ID") + private String locationKindId; + + @ApiModelProperty("包含库位种类") + @Excel(name = "包含库位种类") + private String locationKind; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/todo/PutawayRuleDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/todo/PutawayRuleDetailDO.java new file mode 100644 index 000000000..cf9cf7b12 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/repository/todo/PutawayRuleDetailDO.java @@ -0,0 +1,94 @@ +package com.mhd.wms.domain.putawayRuleDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 上架规则明细对象 putaway_rule_detail + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class PutawayRuleDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("上架规则ID") + @Excel(name = "上架规则ID") + private Long putawayRuleId; + + @ApiModelProperty("主规则ID") + @Excel(name = "主规则ID") + private Integer mainRuleId; + + @ApiModelProperty("主规则") + @Excel(name = "主规则") + private String mainRule; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty("库位空间限制;0不限制1限制") + @Excel(name = "库位空间限制;0不限制1限制") + private Integer storageSpaceLimit; + + @ApiModelProperty("库位空间限制类型ID") + @Excel(name = "库位空间限制类型ID") + private String storageSpaceLimitTypeId; + + @ApiModelProperty("库位空间限制类型") + @Excel(name = "库位空间限制类型") + private String storageSpaceLimitType; + + @ApiModelProperty("可用库位类型;0不限制1限制") + @Excel(name = "可用库位类型;0不限制1限制") + private Integer usableLocationType; + + @ApiModelProperty("包含库位类型ID") + @Excel(name = "包含库位类型ID") + private String locationTypeId; + + @ApiModelProperty("包含库位类型") + @Excel(name = "包含库位类型") + private String locationType; + + @ApiModelProperty("可用库位种类;0不限制1限制") + @Excel(name = "可用库位种类;0不限制1限制") + private Integer usableLocationKind; + + @ApiModelProperty("包含库位种类ID") + @Excel(name = "包含库位种类ID") + private String locationKindId; + + @ApiModelProperty("包含库位种类") + @Excel(name = "包含库位种类") + private String locationKind; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/service/PutawayRuleDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/service/PutawayRuleDetailDomainService.java new file mode 100644 index 000000000..05c4ce95b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/putawayRuleDetail/service/PutawayRuleDetailDomainService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.putawayRuleDetail.service; + +import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail; +import com.mhd.wms.domain.putawayRuleDetail.repository.facade.IPutawayRuleDetailService; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 上架规则明细 + * + * @author gen + * @date 2024-07-20 + */ +@Service +@Slf4j +public class PutawayRuleDetailDomainService { + + @Autowired + private IPutawayRuleDetailService putawayRuleDetailService; + + + /** + * 分页查询上架规则明细列表 + */ + public List queryList(PutawayRuleDetailDO putawayRuleDetailDO) { + return putawayRuleDetailService.queryList(putawayRuleDetailDO); + } + + + /** + * 新增上架规则明细 + */ + public Boolean insert(PutawayRuleDetailDO putawayRuleDetailDO) { + + return putawayRuleDetailService.insert(putawayRuleDetailDO); + } + + /** + * 修改上架规则明细 + */ + public Boolean update(PutawayRuleDetailDO putawayRuleDetailDO) { + return putawayRuleDetailService.update(putawayRuleDetailDO); + } + + /** + * 批量删除上架规则明细 + */ + public Boolean delete(Long[] ids) { + return putawayRuleDetailService.delete(ids); + } + + /** + * 获取上架规则明细详细信息 + */ + public PutawayRuleDetailPO getInfo(Long id) + { + return putawayRuleDetailService.getInfo(id); + } + + + public void deleteByPutawayRuleId(Long id) { + putawayRuleDetailService.deleteByPutawayRuleId(id); + } + + public Boolean saveBatch(List putawayRuleDetails) { + return putawayRuleDetailService.saveBatch(putawayRuleDetails); + } + + public boolean deleteByPutawayRuleIds(Long[] ids) { + return putawayRuleDetailService.deleteByPutawayRuleIds(ids); + } + + public List selectListByPutawayRuleId(Long[] ids) { + return putawayRuleDetailService.selectListByPutawayRuleId(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/entity/QcRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/entity/QcRule.java new file mode 100644 index 000000000..8f58fcae7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/entity/QcRule.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.qcRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 质检规则对象 qc_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/facade/IQcRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/facade/IQcRuleService.java new file mode 100644 index 000000000..f130e0c0a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/facade/IQcRuleService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.qcRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.qcRule.entity.QcRule; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; + +import java.util.List; + +/** + * 质检规则Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IQcRuleService extends IService +{ + /** + * 分页查询质检规则列表 + */ + public List queryList(QcRuleDO qcRuleDO); + + /** + * 新增质检规则 + */ + public Boolean insert(QcRuleDO qcRuleDO); + + /** + * 修改质检规则 + */ + public Boolean update(QcRuleDO qcRuleDO); + + /** + * 批量删除质检规则 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询质检规则 + */ + public QcRulePO getInfo(Long id); + + Long insertToId(QcRuleDO qcRuleDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/mapper/QcRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/mapper/QcRuleMapper.java new file mode 100644 index 000000000..da6b3a270 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/mapper/QcRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.qcRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.qcRule.entity.QcRule; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; + +import java.util.List; + +/** + * 质检规则Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface QcRuleMapper extends BaseMapper +{ + /** + * 查询质检规则列表 + */ + public List queryList(QcRuleDO qcRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/persistence/QcRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/persistence/QcRuleImpl.java new file mode 100644 index 000000000..a3b9bda16 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/persistence/QcRuleImpl.java @@ -0,0 +1,89 @@ +package com.mhd.wms.domain.qcRule.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.qcRule.entity.QcRule; +import com.mhd.wms.domain.qcRule.repository.facade.IQcRuleService; +import com.mhd.wms.domain.qcRule.repository.mapper.QcRuleMapper; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 质检规则Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class QcRuleImpl extends ServiceImpl implements IQcRuleService { + @Autowired + private QcRuleMapper qcRuleMapper; + + /** + * 查询质检规则列表 + */ + @Override + public List queryList(QcRuleDO qcRuleDO) + { + return qcRuleMapper.queryList(qcRuleDO); + } + + /** + * 新增质检规则 + */ + @Override + public Boolean insert(QcRuleDO qcRuleDO) { + QcRule qcRule = new QcRule(); + BeanUtils.copyProperties(qcRuleDO,qcRule); + return this.save(qcRule); + } + + /** + * 修改质检规则 + */ + @Override + public Boolean update(QcRuleDO qcRuleDO) { + QcRule qcRule = new QcRule(); + BeanUtils.copyProperties(qcRuleDO,qcRule); + return this.updateById(qcRule); + } + + /** + * 批量删除质检规则 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + QcRule qcRule = new QcRule(); + qcRule.setId(id); + qcRule.setDelFlag(2); + list.add(qcRule); + } + return this.updateBatchById(list); + } + + /** + * 修改质检规则 + */ + @Override + public QcRulePO getInfo(Long id) { + QcRule qcRule = this.getById(id); + QcRulePO qcRulePO = new QcRulePO(); + BeanUtils.copyProperties(qcRule,qcRulePO); + return qcRulePO; + } + + @Override + public Long insertToId(QcRuleDO qcRuleDO) { + QcRule qcRule = new QcRule(); + BeanUtils.copyProperties(qcRuleDO,qcRule); + this.save(qcRule); + return qcRule.getId(); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/po/QcRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/po/QcRulePO.java new file mode 100644 index 000000000..05db0dd20 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/po/QcRulePO.java @@ -0,0 +1,58 @@ +package com.mhd.wms.domain.qcRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 质检规则对象 qc_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "质检规则对象", description = "质检规则响应对象") +public class QcRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + private List qcRuleDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/todo/QcRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/todo/QcRuleDO.java new file mode 100644 index 000000000..f70c91fda --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/repository/todo/QcRuleDO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.qcRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 质检规则对象 qc_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "质检规则明细") + private List qcRuleDetailDOS; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/service/QcRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/service/QcRuleDomainService.java new file mode 100644 index 000000000..81a0b80d2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRule/service/QcRuleDomainService.java @@ -0,0 +1,68 @@ +package com.mhd.wms.domain.qcRule.service; + +import com.mhd.wms.domain.qcRule.repository.facade.IQcRuleService; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 质检规则 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class QcRuleDomainService { + + @Autowired + private IQcRuleService qcRuleService; + + + /** + * 分页查询质检规则列表 + */ + public List queryList(QcRuleDO qcRuleDO) { + return qcRuleService.queryList(qcRuleDO); + } + + + /** + * 新增质检规则 + */ + public Boolean insert(QcRuleDO qcRuleDO) { + + return qcRuleService.insert(qcRuleDO); + } + + /** + * 修改质检规则 + */ + public Boolean update(QcRuleDO qcRuleDO) { + return qcRuleService.update(qcRuleDO); + } + + /** + * 批量删除质检规则 + */ + public Boolean delete(Long[] ids) { + return qcRuleService.delete(ids); + } + + /** + * 获取质检规则详细信息 + */ + public QcRulePO getInfo(Long id) + { + return qcRuleService.getInfo(id); + } + + + public Long insertToId(QcRuleDO qcRuleDO) { + return qcRuleService.insertToId(qcRuleDO); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/entity/QcRuleDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/entity/QcRuleDetail.java new file mode 100644 index 000000000..8c715a19f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/entity/QcRuleDetail.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.qcRuleDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 质检规则明细对象 qc_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRuleDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("质检规则ID") + @Excel(name = "质检规则ID") + private Long qcRuleId; + + @ApiModelProperty("质检最小范围(不含)") + @Excel(name = "质检最小范围", readConverterExp = "不=含") + private String qcMinRange; + + @ApiModelProperty("质检最大范围(包含)") + @Excel(name = "质检最大范围", readConverterExp = "包=含") + private String qcMaxRange; + + @ApiModelProperty("数量类型ID") + @Excel(name = "数量类型ID") + private String numTypeId; + + @ApiModelProperty("数量类型") + @Excel(name = "数量类型") + private String numType; + + @ApiModelProperty("数量/比例") + @Excel(name = "数量/比例") + private BigDecimal numRatio; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/facade/IQcRuleDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/facade/IQcRuleDetailService.java new file mode 100644 index 000000000..2608a9201 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/facade/IQcRuleDetailService.java @@ -0,0 +1,51 @@ +package com.mhd.wms.domain.qcRuleDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.qcRuleDetail.entity.QcRuleDetail; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; + +import java.util.List; + +/** + * 质检规则明细Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IQcRuleDetailService extends IService +{ + /** + * 分页查询质检规则明细列表 + */ + public List queryList(QcRuleDetailDO qcRuleDetailDO); + + /** + * 新增质检规则明细 + */ + public Boolean insert(QcRuleDetailDO qcRuleDetailDO); + + /** + * 修改质检规则明细 + */ + public Boolean update(QcRuleDetailDO qcRuleDetailDO); + + /** + * 批量删除质检规则明细 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询质检规则明细 + */ + public QcRuleDetailPO getInfo(Long id); + + Long[] selectIdsByQcRuleId(Long id); + + Boolean batchInsert(List qcRuleDetailDOS); + + List selectListByQcRuleId(Long id); + + Long[] selectListByQcRuleIds(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/mapper/QcRuleDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/mapper/QcRuleDetailMapper.java new file mode 100644 index 000000000..5aec8d9a9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/mapper/QcRuleDetailMapper.java @@ -0,0 +1,30 @@ +package com.mhd.wms.domain.qcRuleDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.qcRuleDetail.entity.QcRuleDetail; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 质检规则明细Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface QcRuleDetailMapper extends BaseMapper +{ + /** + * 查询质检规则明细列表 + */ + public List queryList(QcRuleDetailDO qcRuleDetailDO); + + @Select("select id from qc_rule_detail where del_flag = 1 and qc_rule_id = #{id}") + Long[] selectIdsByQcRuleId(Long id); + + List selectListByQcRuleId(Long id); + + Long[] qcRuleDetailMapper(Long[] ids); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/persistence/QcRuleDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/persistence/QcRuleDetailImpl.java new file mode 100644 index 000000000..c6a5b30e4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/persistence/QcRuleDetailImpl.java @@ -0,0 +1,107 @@ +package com.mhd.wms.domain.qcRuleDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.qcRuleDetail.entity.QcRuleDetail; +import com.mhd.wms.domain.qcRuleDetail.repository.facade.IQcRuleDetailService; +import com.mhd.wms.domain.qcRuleDetail.repository.mapper.QcRuleDetailMapper; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 质检规则明细Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class QcRuleDetailImpl extends ServiceImpl implements IQcRuleDetailService{ + @Autowired + private QcRuleDetailMapper qcRuleDetailMapper; + + /** + * 查询质检规则明细列表 + */ + @Override + public List queryList(QcRuleDetailDO qcRuleDetailDO) + { + return qcRuleDetailMapper.queryList(qcRuleDetailDO); + } + + /** + * 新增质检规则明细 + */ + @Override + public Boolean insert(QcRuleDetailDO qcRuleDetailDO) { + QcRuleDetail qcRuleDetail = new QcRuleDetail(); + BeanUtils.copyProperties(qcRuleDetailDO,qcRuleDetail); + return this.save(qcRuleDetail); + } + + /** + * 修改质检规则明细 + */ + @Override + public Boolean update(QcRuleDetailDO qcRuleDetailDO) { + QcRuleDetail qcRuleDetail = new QcRuleDetail(); + BeanUtils.copyProperties(qcRuleDetailDO,qcRuleDetail); + return this.updateById(qcRuleDetail); + } + + /** + * 批量删除质检规则明细 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + QcRuleDetail qcRuleDetail = new QcRuleDetail(); + qcRuleDetail.setId(id); + qcRuleDetail.setDelFlag(2); + list.add(qcRuleDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改质检规则明细 + */ + @Override + public QcRuleDetailPO getInfo(Long id) { + QcRuleDetail qcRuleDetail = this.getById(id); + QcRuleDetailPO qcRuleDetailPO = new QcRuleDetailPO(); + BeanUtils.copyProperties(qcRuleDetail,qcRuleDetailPO); + return qcRuleDetailPO; + } + + @Override + public Long[] selectIdsByQcRuleId(Long id) { + return qcRuleDetailMapper.selectIdsByQcRuleId(id); + } + + @Override + public Boolean batchInsert(List qcRuleDetailDOS) { + List qcRuleDetails = qcRuleDetailDOS.stream().map(qcRuleDetailDO -> { + QcRuleDetail qcRuleDetail = new QcRuleDetail(); + BeanUtils.copyProperties(qcRuleDetailDO, qcRuleDetail); + return qcRuleDetail; + }).collect(Collectors.toList()); + return this.saveBatch(qcRuleDetails); + } + + @Override + public List selectListByQcRuleId(Long id) { + return qcRuleDetailMapper.selectListByQcRuleId(id); + } + + @Override + public Long[] selectListByQcRuleIds(Long[] ids) { + return qcRuleDetailMapper.qcRuleDetailMapper(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/po/QcRuleDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/po/QcRuleDetailPO.java new file mode 100644 index 000000000..23852a090 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/po/QcRuleDetailPO.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.qcRuleDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 质检规则明细对象 qc_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "质检规则明细对象", description = "质检规则明细响应对象") +public class QcRuleDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("质检规则ID") + @Excel(name = "质检规则ID") + private Long qcRuleId; + + @ApiModelProperty("质检最小范围(不含)") + @Excel(name = "质检最小范围", readConverterExp = "不=含") + private String qcMinRange; + + @ApiModelProperty("质检最大范围(包含)") + @Excel(name = "质检最大范围", readConverterExp = "包=含") + private String qcMaxRange; + + @ApiModelProperty("数量类型ID") + @Excel(name = "数量类型ID") + private String numTypeId; + + @ApiModelProperty("数量类型") + @Excel(name = "数量类型") + private String numType; + + @ApiModelProperty("数量/比例") + @Excel(name = "数量/比例") + private BigDecimal numRatio; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/todo/QcRuleDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/todo/QcRuleDetailDO.java new file mode 100644 index 000000000..89d3d22ad --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/repository/todo/QcRuleDetailDO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.domain.qcRuleDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 质检规则明细对象 qc_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRuleDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("质检规则ID") + @Excel(name = "质检规则ID") + private Long qcRuleId; + + @ApiModelProperty("质检最小范围(不含)") + @Excel(name = "质检最小范围", readConverterExp = "不=含") + private String qcMinRange; + + @ApiModelProperty("质检最大范围(包含)") + @Excel(name = "质检最大范围", readConverterExp = "包=含") + private String qcMaxRange; + + @ApiModelProperty("数量类型ID") + @Excel(name = "数量类型ID") + private String numTypeId; + + @ApiModelProperty("数量类型") + @Excel(name = "数量类型") + private String numType; + + @ApiModelProperty("数量/比例") + @Excel(name = "数量/比例") + private BigDecimal numRatio; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/service/QcRuleDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/service/QcRuleDetailDomainService.java new file mode 100644 index 000000000..3a9b81381 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qcRuleDetail/service/QcRuleDetailDomainService.java @@ -0,0 +1,80 @@ +package com.mhd.wms.domain.qcRuleDetail.service; + +import com.mhd.wms.domain.qcRuleDetail.repository.facade.IQcRuleDetailService; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 质检规则明细 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class QcRuleDetailDomainService { + + @Autowired + private IQcRuleDetailService qcRuleDetailService; + + + /** + * 分页查询质检规则明细列表 + */ + public List queryList(QcRuleDetailDO qcRuleDetailDO) { + return qcRuleDetailService.queryList(qcRuleDetailDO); + } + + + /** + * 新增质检规则明细 + */ + public Boolean insert(QcRuleDetailDO qcRuleDetailDO) { + + return qcRuleDetailService.insert(qcRuleDetailDO); + } + + /** + * 修改质检规则明细 + */ + public Boolean update(QcRuleDetailDO qcRuleDetailDO) { + return qcRuleDetailService.update(qcRuleDetailDO); + } + + /** + * 批量删除质检规则明细 + */ + public Boolean delete(Long[] ids) { + return qcRuleDetailService.delete(ids); + } + + /** + * 获取质检规则明细详细信息 + */ + public QcRuleDetailPO getInfo(Long id) + { + return qcRuleDetailService.getInfo(id); + } + + + public Long[] selectIdsByQcRuleId(Long id) { + return qcRuleDetailService.selectIdsByQcRuleId(id); + } + + public Boolean batchInsert(List qcRuleDetailDOS) { + return qcRuleDetailService.batchInsert(qcRuleDetailDOS); + } + + public List selectListByQcRuleId(Long id) { + return qcRuleDetailService.selectListByQcRuleId(id); + } + + public Long[] selectListByQcRuleIds(Long[] ids) { + return qcRuleDetailService.selectListByQcRuleIds(ids); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/entity/QualityInspection.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/entity/QualityInspection.java new file mode 100644 index 000000000..c80815adf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/entity/QualityInspection.java @@ -0,0 +1,137 @@ +package com.mhd.wms.domain.qualityInspection.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 质检管理对象 quality_inspection + * + * @author gen + * @date 2024-05-25 + */ + +@Data +public class QualityInspection extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("质检管理id") + @TableId(type = IdType.AUTO) + private Long qualityInspectionId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("质检单号") + @Excel(name = "质检单号") + private String qualityInspectionNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("订单物料明细id") + @Excel(name = "订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("质检数量") + @Excel(name = "质检数量") + private BigDecimal inspectionQuantity; + + @ApiModelProperty("异常数量") + @Excel(name = "异常数量") + private BigDecimal abnormalQuantity; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("质检人用户ID") + @Excel(name = "质检人用户ID") + private Long qualityInspectionBy; + + @ApiModelProperty("质检人姓名") + @Excel(name = "质检人姓名") + private String qualityInspectionName; + + @ApiModelProperty("质检时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "质检时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date qualityInspectionTime; + + @ApiModelProperty("质检图片url") + @Excel(name = "质检图片url") + private String qualityInspectionUrl; + + @ApiModelProperty("异常处理状态:1-未处理 2-已处理") + @Excel(name = "异常处理状态:1-未处理 2-已处理") + private Integer handleStatus; + + @ApiModelProperty("处理意见") + @Excel(name = "处理意见") + private String handleOpinion; + + @ApiModelProperty("处理人用户ID") + @Excel(name = "处理人用户ID") + private Long handleBy; + + @ApiModelProperty("处理人姓名") + @Excel(name = "处理人姓名") + private String handleByName; + + @ApiModelProperty("处理时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date handleTime; + + @ApiModelProperty("正常数量物料状态编码") + @Excel(name = "正常数量物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("正常数量物料状态名称") + @Excel(name = "正常数量物料状态名称") + private String materialStatusName; + + @ApiModelProperty("异常数量物料状态编码") + @Excel(name = "异常数量物料状态编码") + private String abnormalMaterialStatusCode; + + @ApiModelProperty("异常数量物料状态名称") + @Excel(name = "异常数量物料状态名称") + private String abnormalMaterialStatusName; + + @ApiModelProperty("是否入库: 1-是 2-否") + @Excel(name = "是否入库: 1-是 2-否") + private Integer warehousing; + + @ApiModelProperty("异常图片url") + @Excel(name = "异常图片url") + private String abnormalHandleUrl; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/facade/IQualityInspectionService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/facade/IQualityInspectionService.java new file mode 100644 index 000000000..34c016aa2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/facade/IQualityInspectionService.java @@ -0,0 +1,48 @@ +package com.mhd.wms.domain.qualityInspection.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.qualityInspection.entity.QualityInspection; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; + +import java.util.List; + +/** + * 质检管理Service接口 + * + * @author gen + * @date 2024-05-25 + */ +public interface IQualityInspectionService extends IService +{ + /** + * 分页查询质检管理列表 + */ + public List queryList(QualityInspectionDO qualityInspectionDO); + + /** + * 新增质检管理 + */ + public Boolean insert(QualityInspectionDO qualityInspectionDO); + + /** + * 批量新增质检管理 + */ + public Boolean genQualityInspection(List qualityInspectionDOList); + + /** + * 修改质检管理 + */ + public Boolean update(QualityInspectionDO qualityInspectionDO); + + /** + * 批量删除质检管理 + */ + public Boolean delete(Long[] qualityInspectionIds); + + + /** + * 查询质检管理 + */ + public QualityInspectionPO getInfo(Long qualityInspectionId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/mapper/QualityInspectionMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/mapper/QualityInspectionMapper.java new file mode 100644 index 000000000..fe6e248d1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/mapper/QualityInspectionMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.qualityInspection.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.qualityInspection.entity.QualityInspection; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; + +import java.util.List; + +/** + * 质检管理Mapper接口 + * + * @author gen + * @date 2024-05-25 + */ +public interface QualityInspectionMapper extends BaseMapper +{ + /** + * 查询质检管理列表 + */ + public List queryList(QualityInspectionDO qualityInspectionDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/persistence/QualityInspectionImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/persistence/QualityInspectionImpl.java new file mode 100644 index 000000000..470b995f1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/persistence/QualityInspectionImpl.java @@ -0,0 +1,123 @@ +package com.mhd.wms.domain.qualityInspection.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qualityInspection.entity.QualityInspection; +import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService; +import com.mhd.wms.domain.qualityInspection.repository.mapper.QualityInspectionMapper; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 质检管理Service业务层处理 + * + * @author gen + * @date 2024-05-25 + */ +@Service +public class QualityInspectionImpl extends ServiceImpl implements IQualityInspectionService{ + @Autowired + private QualityInspectionMapper qualityInspectionMapper; + + /** + * 查询质检管理列表 + */ + @Override + public List queryList(QualityInspectionDO qualityInspectionDO) + { + return qualityInspectionMapper.queryList(qualityInspectionDO); + } + + /** + * 新增质检管理 + */ + @Override + public Boolean insert(QualityInspectionDO qualityInspectionDO) { + QualityInspection qualityInspection = new QualityInspection(); + BeanUtils.copyProperties(qualityInspectionDO,qualityInspection); + return this.save(qualityInspection); + } + + /** + * @description 生成质检管理记录 + * @author ZhouGY + * @date 2024/5/25 11:37 + * @param qualityInspectionDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genQualityInspection(List qualityInspectionDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List qualityInspectionList = new ArrayList<>(); + qualityInspectionDOList.forEach(p ->{ + if (p.getQualityInspectionManage() == 1){ + //是否质检管理: 1-是 2-否 + QualityInspection qualityInspection = new QualityInspection(); + BeanUtils.copyProperties(p,qualityInspection); + qualityInspection.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + qualityInspection.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + qualityInspection.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + qualityInspection.setQualityInspectionNumber(OrderSequence.getOrderCode("ZJ")); + BigDecimal inspectionQuantity = p.getQuantity(); + if (p.getQualityInspectionRule() == 2){ + inspectionQuantity = inspectionQuantity.multiply(p.getQualityInspectionRatio()); + } + qualityInspection.setInspectionQuantity(inspectionQuantity); + qualityInspection.setCreateBy(loginUser.getUserid()); + qualityInspection.setCreateByName(loginUser.getUsername()); + qualityInspection.setCreateTime(new Date()); + qualityInspectionList.add(qualityInspection); + } + }); + + return saveBatch(qualityInspectionList); + } + + /** + * 修改质检管理 + */ + @Override + public Boolean update(QualityInspectionDO qualityInspectionDO) { + QualityInspection qualityInspection = new QualityInspection(); + BeanUtils.copyProperties(qualityInspectionDO,qualityInspection); + return this.updateById(qualityInspection); + } + + /** + * 批量删除质检管理 + */ + @Override + public Boolean delete(Long[] qualityInspectionIds ) { + List list = new ArrayList<>(); + for (Long id : qualityInspectionIds) { + QualityInspection qualityInspection = new QualityInspection(); + qualityInspection.setQualityInspectionId(id); + qualityInspection.setDelFlag(2); + list.add(qualityInspection); + } + return this.updateBatchById(list); + } + + /** + * 修改质检管理 + */ + @Override + public QualityInspectionPO getInfo(Long qualityInspectionId) { + QualityInspection qualityInspection = this.getById(qualityInspectionId); + QualityInspectionPO qualityInspectionPO = new QualityInspectionPO(); + BeanUtils.copyProperties(qualityInspection,qualityInspectionPO); + return qualityInspectionPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/po/QualityInspectionPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/po/QualityInspectionPO.java new file mode 100644 index 000000000..284c2dd9a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/po/QualityInspectionPO.java @@ -0,0 +1,201 @@ +package com.mhd.wms.domain.qualityInspection.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 质检管理对象 quality_inspection + * + * @author gen + * @date 2024-05-25 + */ + +@Data +@ApiModel(value = "质检管理对象", description = "质检管理响应对象") +public class QualityInspectionPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("质检管理id") + private Long qualityInspectionId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("质检单号") + @Excel(name = "质检单号") + private String qualityInspectionNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("订单物料明细id") + @Excel(name = "订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("质检数量") + @Excel(name = "质检数量") + private BigDecimal inspectionQuantity; + + @ApiModelProperty("异常数量") + @Excel(name = "异常数量") + private BigDecimal abnormalQuantity; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("质检人用户ID") + @Excel(name = "质检人用户ID") + private Long qualityInspectionBy; + + @ApiModelProperty("质检人姓名") + @Excel(name = "质检人姓名") + private String qualityInspectionName; + + @ApiModelProperty("质检时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "质检时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date qualityInspectionTime; + + @ApiModelProperty("质检图片url") + @Excel(name = "质检图片url") + private String qualityInspectionUrl; + + @ApiModelProperty("异常处理状态:1-未处理 2-已处理") + @Excel(name = "异常处理状态:1-未处理 2-已处理") + private Integer handleStatus; + + @ApiModelProperty("处理意见") + @Excel(name = "处理意见") + private String handleOpinion; + + @ApiModelProperty("处理人用户ID") + @Excel(name = "处理人用户ID") + private Long handleBy; + + @ApiModelProperty("处理人姓名") + @Excel(name = "处理人姓名") + private String handleByName; + + @ApiModelProperty("处理时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date handleTime; + + @ApiModelProperty("正常数量物料状态编码") + @Excel(name = "正常数量物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("正常数量物料状态名称") + @Excel(name = "正常数量物料状态名称") + private String materialStatusName; + + @ApiModelProperty("异常数量物料状态编码") + @Excel(name = "异常数量物料状态编码") + private String abnormalMaterialStatusCode; + + @ApiModelProperty("异常数量物料状态名称") + @Excel(name = "异常数量物料状态名称") + private String abnormalMaterialStatusName; + + @ApiModelProperty("是否入库: 1-是 2-否") + @Excel(name = "是否入库: 1-是 2-否") + private Integer warehousing; + + @ApiModelProperty("异常图片url") + @Excel(name = "异常图片url") + private String abnormalHandleUrl; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/todo/QualityInspectionDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/todo/QualityInspectionDO.java new file mode 100644 index 000000000..fef43e7b8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/repository/todo/QualityInspectionDO.java @@ -0,0 +1,204 @@ +package com.mhd.wms.domain.qualityInspection.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 质检管理对象 quality_inspection + * + * @author gen + * @date 2024-05-25 + */ + +@Data +public class QualityInspectionDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("质检管理id") + private Long qualityInspectionId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("质检单号") + @Excel(name = "质检单号") + private String qualityInspectionNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("订单物料明细id") + @Excel(name = "订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("质检数量") + @Excel(name = "质检数量") + private BigDecimal inspectionQuantity; + + @ApiModelProperty("异常数量") + @Excel(name = "异常数量") + private BigDecimal abnormalQuantity; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("质检人用户ID") + @Excel(name = "质检人用户ID") + private Long qualityInspectionBy; + + @ApiModelProperty("质检人姓名") + @Excel(name = "质检人姓名") + private String qualityInspectionName; + + @ApiModelProperty("质检时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "质检时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date qualityInspectionTime; + + @ApiModelProperty("质检图片url") + @Excel(name = "质检图片url") + private String qualityInspectionUrl; + + @ApiModelProperty("异常处理状态:1-未处理 2-已处理") + @Excel(name = "异常处理状态:1-未处理 2-已处理") + private Integer handleStatus; + + @ApiModelProperty("处理意见") + @Excel(name = "处理意见") + private String handleOpinion; + + @ApiModelProperty("处理人用户ID") + @Excel(name = "处理人用户ID") + private Long handleBy; + + @ApiModelProperty("处理人姓名") + @Excel(name = "处理人姓名") + private String handleByName; + + @ApiModelProperty("处理时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date handleTime; + + @ApiModelProperty("正常数量物料状态编码") + @Excel(name = "正常数量物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("正常数量物料状态名称") + @Excel(name = "正常数量物料状态名称") + private String materialStatusName; + + @ApiModelProperty("异常数量物料状态编码") + @Excel(name = "异常数量物料状态编码") + private String abnormalMaterialStatusCode; + + @ApiModelProperty("异常数量物料状态名称") + @Excel(name = "异常数量物料状态名称") + private String abnormalMaterialStatusName; + + @ApiModelProperty("是否入库: 1-是 2-否") + @Excel(name = "是否入库: 1-是 2-否") + private Integer warehousing; + + @ApiModelProperty("异常图片url") + @Excel(name = "异常图片url") + private String abnormalHandleUrl; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/service/QualityInspectionDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/service/QualityInspectionDomainService.java new file mode 100644 index 000000000..e13f1c589 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/qualityInspection/service/QualityInspectionDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.qualityInspection.service; + +import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 质检管理 + * + * @author gen + * @date 2024-05-25 + */ +@Service +@Slf4j +public class QualityInspectionDomainService { + + @Autowired + private IQualityInspectionService qualityInspectionService; + + + /** + * 分页查询质检管理列表 + */ + public List queryList(QualityInspectionDO qualityInspectionDO) { + return qualityInspectionService.queryList(qualityInspectionDO); + } + + + /** + * 新增质检管理 + */ + public Boolean insert(QualityInspectionDO qualityInspectionDO) { + + return qualityInspectionService.insert(qualityInspectionDO); + } + + /** + * 修改质检管理 + */ + public Boolean update(QualityInspectionDO qualityInspectionDO) { + return qualityInspectionService.update(qualityInspectionDO); + } + + /** + * 批量删除质检管理 + */ + public Boolean delete(Long[] qualityInspectionIds) { + return qualityInspectionService.delete(qualityInspectionIds); + } + + /** + * 获取质检管理详细信息 + */ + public QualityInspectionPO getInfo(Long qualityInspectionId) + { + return qualityInspectionService.getInfo(qualityInspectionId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/entity/ReceiptMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/entity/ReceiptMaterialDetail.java new file mode 100644 index 000000000..0a60ce242 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/entity/ReceiptMaterialDetail.java @@ -0,0 +1,218 @@ +package com.mhd.wms.domain.receiptMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 receipt_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ReceiptMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已收货数量") + @Excel(name = "已收货数量") + private BigDecimal alreadyReceiptQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细id") + @Excel(name = "入库单物料明细id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 收货后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成上架单: 1-是 2-否") + @Excel(name = "是否生成上架单: 1-是 2-否") + private Integer genStockShelf; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/facade/IReceiptMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/facade/IReceiptMaterialDetailService.java new file mode 100644 index 000000000..ba14406e7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/facade/IReceiptMaterialDetailService.java @@ -0,0 +1,76 @@ +package com.mhd.wms.domain.receiptMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; + +import java.util.List; + +/** + * 物料明细Service接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface IReceiptMaterialDetailService extends IService +{ + /** + * 分页查询物料明细列表 + */ + public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO); + + /** + * 分页查询物料明细列表 + */ + public List queryListChildren(ReceiptMaterialDetailDO receiptMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean insert(ReceiptMaterialDetailDO receiptMaterialDetailDO); + + /** + * 修改物料明细 + */ + public Boolean update(ReceiptMaterialDetailDO receiptMaterialDetailDO); + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询物料明细 + */ + public ReceiptMaterialDetailPO getInfo(Long materialDetailId); + + /** + * @description 批量收货修改物流明细 + * @author ZhouGY + * @date 2024/6/18 17:00 + * @param stockReceiptOrderDO + * @return StockReceiptOrderPO + */ + public void batchReceiptUpdate(StockReceiptOrderDO stockReceiptOrderDO); + + /** + * @description 根据收货单号修改明细上架状态 + * @author liyc + * @date 2024/8/20 14:00 + * @param receiptOrderNumber + * @return void + */ + public void updateDetailForGenStockShelf(String receiptOrderNumber); + + /** + * @description 无单收货 新增收货单 包含序列号和更多属性 + * @author ZhouGY + * @date 2024/7/17 22:08 + * @param stockReceiptOrderDO + * @return Boolean + */ + public Boolean noOrderReceiptInsert(StockReceiptOrderDO stockReceiptOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/mapper/ReceiptMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/mapper/ReceiptMaterialDetailMapper.java new file mode 100644 index 000000000..4c887608b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/mapper/ReceiptMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.receiptMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; + +import java.util.List; + +/** + * 物料明细Mapper接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface ReceiptMaterialDetailMapper extends BaseMapper +{ + /** + * 查询物料明细列表 + */ + public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java new file mode 100644 index 000000000..21a076543 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java @@ -0,0 +1,429 @@ +package com.mhd.wms.domain.receiptMaterialDetail.repository.persistence; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail; +import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService; +import com.mhd.wms.domain.receiptMaterialDetail.repository.mapper.ReceiptMaterialDetailMapper; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder; +import com.mhd.wms.domain.stockReceiptOrder.repository.mapper.StockReceiptOrderMapper; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 物料明细Service业务层处理 + * + * @author gen + * @date 2024-06-17 + */ +@Service +public class ReceiptMaterialDetailImpl extends ServiceImpl implements IReceiptMaterialDetailService{ + @Autowired + private ReceiptMaterialDetailMapper receiptMaterialDetailMapper; + @Autowired + private StockReceiptOrderMapper stockReceiptOrderMapper; + @Autowired + private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService; + @Autowired + private IMaterialMoreDetailService IMaterialMoreDetailService; + @Autowired + private IdGenerator idGenerator; + @Resource + private SystemServiceFeign systemServiceFeign; + /** + * 查询物料明细列表 + */ + @Override + public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) + { + return receiptMaterialDetailMapper.queryList(receiptMaterialDetailDO); + } + + + /** + * 查询物料明细列表 + */ + @Override + public List queryListChildren(ReceiptMaterialDetailDO receiptMaterialDetailDO) + { + List receiptMaterialDetailPOList = receiptMaterialDetailMapper.queryList(receiptMaterialDetailDO); + + //回显带上更多属性值 + receiptMaterialDetailPOList.forEach(receiptMaterialDetailPO -> { + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + materialMoreDetailDO.setMaterialDetailUniqueId(receiptMaterialDetailPO.getUniqueId()); + List materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO); + //如果收货单的物料批属性还没存入值,那么需要从批属性表获取 + AjaxResult ajaxResult = null; + if (CollectionUtils.isEmpty(materialMoreDetailList)) { + ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(receiptMaterialDetailPO.getMaterialBaseInfoId()); + if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) { + materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class); + } + } + receiptMaterialDetailPO.setMaterialMoreDetailList(materialMoreDetailList); + }); + // 获取查询的层级 + List receiptMaterialDetailPOParentList = receiptMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + for(ReceiptMaterialDetailPO materialDetailPO :receiptMaterialDetailPOParentList){ + List children = getChildren(materialDetailPO.getUniqueId(), receiptMaterialDetailPOList, 2); + children.forEach(childrenDetailPO -> { + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + materialMoreDetailDO.setMaterialDetailUniqueId(childrenDetailPO.getMaterialDetailId()); + List materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO); + //如果收货单的物料批属性还没存入值,那么需要从批属性表获取 + AjaxResult ajaxResult = null; + if (CollectionUtils.isEmpty(materialMoreDetailList)) { + ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialDetailId()); + + } + if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) { + materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class); + } + childrenDetailPO.setMaterialMoreDetailList(materialMoreDetailList); + }); + + materialDetailPO.setChildren(children); + + } + return receiptMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List receiptMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = receiptMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), receiptMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增物料明细 + */ + @Override + public Boolean insert(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDO,receiptMaterialDetail); + return this.save(receiptMaterialDetail); + } + + /** + * 修改物料明细 + */ + @Override + public Boolean update(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDO,receiptMaterialDetail); + return this.updateById(receiptMaterialDetail); + } + + /** + * 批量删除物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + receiptMaterialDetail.setMaterialDetailId(id); + receiptMaterialDetail.setDelFlag(2); + list.add(receiptMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细 + */ + @Override + public ReceiptMaterialDetailPO getInfo(Long materialDetailId) { + ReceiptMaterialDetail receiptMaterialDetail = this.getById(materialDetailId); + ReceiptMaterialDetailPO receiptMaterialDetailPO = new ReceiptMaterialDetailPO(); + BeanUtils.copyProperties(receiptMaterialDetail,receiptMaterialDetailPO); + return receiptMaterialDetailPO; + } + + /** + * @description 批量收货修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockReceiptOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void batchReceiptUpdate(StockReceiptOrderDO stockReceiptOrderDO) { + List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(receiptMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改物料信息 + List receiptMaterialDetailList = new ArrayList<>(); + // 批量修改更多属性和新增序列号 + List materialMoreDetailList = new ArrayList<>(); + List materialDetailSerialNumberList = new ArrayList<>(); + for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){ + //更多属性 + materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO)); + //序列号 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(receiptMaterialDetailDO)); + } + //判断是否存在子项 + List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren(); + List receiptMaterialDetailChildList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){ + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){ + ReceiptMaterialDetail receiptMaterialDetailChild = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailChild); + receiptMaterialDetailChild.setCreateBy(loginUser.getUserid()); + receiptMaterialDetailChild.setCreateByName(loginUser.getUsername()); + receiptMaterialDetailChild.setCreateTime(new Date()); + receiptMaterialDetailChildList.add(receiptMaterialDetailChild); + //更多属性 + materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDOChild)); + //序列号 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailDOChild.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(receiptMaterialDetailDOChild)); + } + } + } + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDO, receiptMaterialDetail); + receiptMaterialDetail.setUpdateBy(loginUser.getUserid()); + receiptMaterialDetail.setUpdateByName(loginUser.getUsername()); + receiptMaterialDetail.setUpdateTime(new Date()); + receiptMaterialDetailList.add(receiptMaterialDetail); + //子集不为空 + if (!CollectionUtils.isEmpty(receiptMaterialDetailChildList)){ + receiptMaterialDetailList.addAll(receiptMaterialDetailChildList); + } + } + //保存物料明细信息 + saveOrUpdateBatch(receiptMaterialDetailList); + //批量新增物料信息 + if (!CollectionUtils.isEmpty(materialMoreDetailList)){ + IMaterialMoreDetailService.saveBatch(materialMoreDetailList); + } + //批量新增序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + inMaterialDetailSerialNumberService.saveBatch(materialDetailSerialNumberList); + } + } + + + /** + * @description 无单收货 新增收货单 包含序列号和更多属性 + * @author ZhouGY + * @date 2024/7/17 22:09 + * @param stockReceiptOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean noOrderReceiptInsert(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List receiptMaterialDetailList = new ArrayList<>(); + StockReceiptOrder stockReceiptOrder = JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDO), StockReceiptOrder.class); + stockReceiptOrder.setReceiptOrderNumber(OrderSequence.getOrderCode("SH")); + stockReceiptOrder.setCreateBy(loginUser.getUserid()); + stockReceiptOrder.setCreateByName(loginUser.getUsername()); + stockReceiptOrder.setCreateTime(new Date()); + stockReceiptOrder.setUpdateBy(loginUser.getUserid()); + stockReceiptOrder.setUpdateByName(loginUser.getUsername()); + stockReceiptOrder.setUpdateTime(new Date()); + // 批量修改更多属性和新增序列号 + List materialMoreDetailList = new ArrayList<>(); + List materialDetailSerialNumberList = new ArrayList<>(); + stockReceiptOrderDO.getMaterialDetailList().forEach(receiptMaterialDetailDO -> { + //更多属性 + materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDO)); + //序列号 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(receiptMaterialDetailDO)); + } + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDO, receiptMaterialDetail, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + receiptMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + receiptMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + receiptMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + receiptMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + receiptMaterialDetail.setReceiptOrderNumber(stockReceiptOrder.getReceiptOrderNumber()); + receiptMaterialDetail.setCreateBy(loginUser.getUserid()); + receiptMaterialDetail.setCreateByName(loginUser.getUsername()); + receiptMaterialDetail.setCreateTime(new Date()); + receiptMaterialDetailList.add(receiptMaterialDetail); + List receiptMaterialDetailChildDOList = receiptMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(receiptMaterialDetailChildDOList)){ + receiptMaterialDetailChildDOList.forEach(receiptMaterialDetailDOChild -> { + ReceiptMaterialDetail receiptMaterialDetailChildren = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailChildren, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + receiptMaterialDetailChildren.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + receiptMaterialDetailChildren.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + receiptMaterialDetailChildren.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + receiptMaterialDetailChildren.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + receiptMaterialDetailChildren.setReceiptOrderNumber(stockReceiptOrder.getReceiptOrderNumber()); + receiptMaterialDetailChildren.setParentUniqueId(receiptMaterialDetail.getUniqueId()); + receiptMaterialDetailChildren.setCreateBy(loginUser.getUserid()); + receiptMaterialDetailChildren.setCreateByName(loginUser.getUsername()); + receiptMaterialDetailChildren.setCreateTime(new Date()); + receiptMaterialDetailList.add(receiptMaterialDetailChildren); + //更多属性 + materialMoreDetailList.addAll(genMaterialMoreDetail(receiptMaterialDetailDOChild)); + //序列号 + if (receiptMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + receiptMaterialDetailDOChild.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(receiptMaterialDetailDOChild)); + } + }); + } + }); + //批量新增物料信息 + if (!CollectionUtils.isEmpty(materialMoreDetailList)){ + IMaterialMoreDetailService.saveBatch(materialMoreDetailList); + } + //批量新增序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + inMaterialDetailSerialNumberService.saveBatch(materialDetailSerialNumberList); + } + stockReceiptOrderMapper.insert(stockReceiptOrder); + return saveBatch(receiptMaterialDetailList); + } + + + /** + * @description 生成物料明细 + * @author ZhouGY + * @date 2024/5/28 15:03 + * @param receiptMaterialDetailDO + * @return List + */ + private List genMaterialMoreDetail(ReceiptMaterialDetailDO receiptMaterialDetailDO){ + List materialMoreDetailList = new ArrayList<>(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List materialMoreDetailDOList = receiptMaterialDetailDO.getMaterialMoreDetailList(); + if (CollectionUtils.isEmpty(materialMoreDetailDOList)){ + return materialMoreDetailList; + } + for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailDOList){ + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + BeanUtils.copyProperties(receiptMaterialDetailDO, materialMoreDetail); + BeanUtils.copyProperties(materialMoreDetailDO, materialMoreDetail, IgnoreNullUtil.getNullPropertyNames(materialMoreDetailDO)); + materialMoreDetail.setOrderNumber(receiptMaterialDetailDO.getReceiptOrderNumber()); + materialMoreDetail.setMaterialDetailUniqueId(receiptMaterialDetailDO.getUniqueId()); + materialMoreDetail.setCreateBy(loginUser.getUserid()); + materialMoreDetail.setCreateByName(loginUser.getUsername()); + materialMoreDetail.setCreateTime(new Date()); + materialMoreDetailList.add(materialMoreDetail); + } + return materialMoreDetailList; + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param receiptMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumber(ReceiptMaterialDetailDO receiptMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + List inMaterialDetailSerialNumberList = new ArrayList<>(); + List InMaterialDetailSerialNumberDOList = receiptMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(InMaterialDetailSerialNumberDOList)){ + for (InMaterialDetailSerialNumberDO inMaterialDetailSerialNumberDO : InMaterialDetailSerialNumberDOList){ + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(receiptMaterialDetailDO, inMaterialDetailSerialNumber); + BeanUtils.copyProperties(inMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber, IgnoreNullUtil.getNullPropertyNames(inMaterialDetailSerialNumberDO)); + inMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailSerialNumber.setOrderNumber(receiptMaterialDetailDO.getReceiptOrderNumber()); + inMaterialDetailSerialNumber.setMaterialDetailUniqueId(receiptMaterialDetailDO.getUniqueId()); + inMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + inMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + inMaterialDetailSerialNumber.setCreateTime(new Date()); + inMaterialDetailSerialNumberList.add(inMaterialDetailSerialNumber); + } + } + return inMaterialDetailSerialNumberList; + } + + /** + * @description 修改收货单上架状态 + * @author ZhouGY + * @date 2024/6/18 17:00 + * @param receiptOrderNumber + * @return void + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDetailForGenStockShelf(String receiptOrderNumber) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 创建 ReceiptMaterialDetail 实例并设置需要更新的字段 + ReceiptMaterialDetail updateDetail = new ReceiptMaterialDetail(); + updateDetail.setGenStockShelf(1); + updateDetail.setUpdateBy(loginUser.getUserid()); + updateDetail.setUpdateByName(loginUser.getUsername()); + updateDetail.setUpdateTime(new Date()); + // 执行更新操作 + receiptMaterialDetailMapper.update(updateDetail, + new UpdateWrapper().lambda() + .eq(ReceiptMaterialDetail::getReceiptOrderNumber, receiptOrderNumber) + .eq(ReceiptMaterialDetail::getGenStockShelf, 2) + ); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java new file mode 100644 index 000000000..2d68494c2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/po/ReceiptMaterialDetailPO.java @@ -0,0 +1,229 @@ +package com.mhd.wms.domain.receiptMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 receipt_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +@ApiModel(value = "物料明细对象", description = "物料明细响应对象") +public class ReceiptMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已收货数量") + @Excel(name = "已收货数量") + private BigDecimal alreadyReceiptQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细id") + @Excel(name = "入库单物料明细id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 收货后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否生成上架单: 1-是 2-否") + @Excel(name = "是否生成上架单: 1-是 2-否") + private Integer genStockShelf; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java new file mode 100644 index 000000000..d00d21761 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/todo/ReceiptMaterialDetailDO.java @@ -0,0 +1,237 @@ +package com.mhd.wms.domain.receiptMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 receipt_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ReceiptMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已收货数量") + @Excel(name = "已收货数量") + private BigDecimal alreadyReceiptQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细id") + @Excel(name = "入库单物料明细id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 收货后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否生成上架单: 1-是 2-否") + @Excel(name = "是否生成上架单: 1-是 2-否") + private Integer genStockShelf; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("收货单号集合") + private List receiptOrderNumberList; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码") + private String compoundOrQuery; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/service/ReceiptMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/service/ReceiptMaterialDetailDomainService.java new file mode 100644 index 000000000..04339781b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/service/ReceiptMaterialDetailDomainService.java @@ -0,0 +1,72 @@ +package com.mhd.wms.domain.receiptMaterialDetail.service; + +import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细 + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class ReceiptMaterialDetailDomainService { + + @Autowired + private IReceiptMaterialDetailService receiptMaterialDetailService; + + + /** + * 分页查询物料明细列表 + */ + public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + return receiptMaterialDetailService.queryList(receiptMaterialDetailDO); + } + + /** + * 分页查询物料明细列表 + */ + public List queryListChildren(ReceiptMaterialDetailDO receiptMaterialDetailDO){ + return receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + + return receiptMaterialDetailService.insert(receiptMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(ReceiptMaterialDetailDO receiptMaterialDetailDO) { + return receiptMaterialDetailService.update(receiptMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return receiptMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public ReceiptMaterialDetailPO getInfo(Long materialDetailId) + { + return receiptMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/entity/ReplenishmentNotice.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/entity/ReplenishmentNotice.java new file mode 100644 index 000000000..49c9039f4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/entity/ReplenishmentNotice.java @@ -0,0 +1,85 @@ +package com.mhd.wms.domain.replenishmentNotice.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 补货通知单对象 replenishment_notice + * + * @author gen + * @date 2024-06-11 + */ + +@Data +public class ReplenishmentNotice extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货明细id") + @TableId(type = IdType.AUTO) + private Long replenishmentNoticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("补货数量") + @Excel(name = "补货数量") + private BigDecimal quantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/facade/IReplenishmentNoticeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/facade/IReplenishmentNoticeService.java new file mode 100644 index 000000000..65ced17f8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/facade/IReplenishmentNoticeService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.replenishmentNotice.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.replenishmentNotice.entity.ReplenishmentNotice; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; + +import java.util.List; + +/** + * 补货通知单Service接口 + * + * @author gen + * @date 2024-06-11 + */ +public interface IReplenishmentNoticeService extends IService +{ + /** + * 分页查询补货通知单列表 + */ + public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO); + + /** + * 新增补货通知单 + */ + public Boolean insert(ReplenishmentNoticeDO replenishmentNoticeDO); + + /** + * 修改补货通知单 + */ + public Boolean update(ReplenishmentNoticeDO replenishmentNoticeDO); + + /** + * 批量删除补货通知单 + */ + public Boolean delete(Long[] replenishmentNoticeIds); + + + /** + * 查询补货通知单 + */ + public ReplenishmentNoticePO getInfo(Long replenishmentNoticeId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/mapper/ReplenishmentNoticeMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/mapper/ReplenishmentNoticeMapper.java new file mode 100644 index 000000000..8b24aca4b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/mapper/ReplenishmentNoticeMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.replenishmentNotice.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.replenishmentNotice.entity.ReplenishmentNotice; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; + +import java.util.List; + +/** + * 补货通知单Mapper接口 + * + * @author gen + * @date 2024-06-11 + */ +public interface ReplenishmentNoticeMapper extends BaseMapper +{ + /** + * 查询补货通知单列表 + */ + public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/persistence/ReplenishmentNoticeImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/persistence/ReplenishmentNoticeImpl.java new file mode 100644 index 000000000..fda061252 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/persistence/ReplenishmentNoticeImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.replenishmentNotice.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.replenishmentNotice.entity.ReplenishmentNotice; +import com.mhd.wms.domain.replenishmentNotice.repository.facade.IReplenishmentNoticeService; +import com.mhd.wms.domain.replenishmentNotice.repository.mapper.ReplenishmentNoticeMapper; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 补货通知单Service业务层处理 + * + * @author gen + * @date 2024-06-11 + */ +@Service +public class ReplenishmentNoticeImpl extends ServiceImpl implements IReplenishmentNoticeService{ + @Autowired + private ReplenishmentNoticeMapper replenishmentNoticeMapper; + + /** + * 查询补货通知单列表 + */ + @Override + public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO) + { + return replenishmentNoticeMapper.queryList(replenishmentNoticeDO); + } + + /** + * 新增补货通知单 + */ + @Override + public Boolean insert(ReplenishmentNoticeDO replenishmentNoticeDO) { + ReplenishmentNotice replenishmentNotice = new ReplenishmentNotice(); + BeanUtils.copyProperties(replenishmentNoticeDO,replenishmentNotice); + return this.save(replenishmentNotice); + } + + /** + * 修改补货通知单 + */ + @Override + public Boolean update(ReplenishmentNoticeDO replenishmentNoticeDO) { + ReplenishmentNotice replenishmentNotice = new ReplenishmentNotice(); + BeanUtils.copyProperties(replenishmentNoticeDO,replenishmentNotice); + return this.updateById(replenishmentNotice); + } + + /** + * 批量删除补货通知单 + */ + @Override + public Boolean delete(Long[] replenishmentNoticeIds ) { + List list = new ArrayList<>(); + for (Long id : replenishmentNoticeIds) { + ReplenishmentNotice replenishmentNotice = new ReplenishmentNotice(); + replenishmentNotice.setReplenishmentNoticeId(id); + replenishmentNotice.setDelFlag(2); + list.add(replenishmentNotice); + } + return this.updateBatchById(list); + } + + /** + * 修改补货通知单 + */ + @Override + public ReplenishmentNoticePO getInfo(Long replenishmentNoticeId) { + ReplenishmentNotice replenishmentNotice = this.getById(replenishmentNoticeId); + ReplenishmentNoticePO replenishmentNoticePO = new ReplenishmentNoticePO(); + BeanUtils.copyProperties(replenishmentNotice,replenishmentNoticePO); + return replenishmentNoticePO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/po/ReplenishmentNoticePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/po/ReplenishmentNoticePO.java new file mode 100644 index 000000000..076bbf42c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/po/ReplenishmentNoticePO.java @@ -0,0 +1,85 @@ +package com.mhd.wms.domain.replenishmentNotice.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 补货通知单对象 replenishment_notice + * + * @author gen + * @date 2024-06-11 + */ + +@Data +@ApiModel(value = "补货通知单对象", description = "补货通知单响应对象") +public class ReplenishmentNoticePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货明细id") + private Long replenishmentNoticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("补货数量") + @Excel(name = "补货数量") + private BigDecimal quantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/todo/ReplenishmentNoticeDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/todo/ReplenishmentNoticeDO.java new file mode 100644 index 000000000..11e2ee8e3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/repository/todo/ReplenishmentNoticeDO.java @@ -0,0 +1,87 @@ +package com.mhd.wms.domain.replenishmentNotice.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 补货通知单对象 replenishment_notice + * + * @author gen + * @date 2024-06-11 + */ + +@Data +public class ReplenishmentNoticeDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货明细id") + private Long replenishmentNoticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("补货数量") + @Excel(name = "补货数量") + private BigDecimal quantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/service/ReplenishmentNoticeDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/service/ReplenishmentNoticeDomainService.java new file mode 100644 index 000000000..f6f3ec8c8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/replenishmentNotice/service/ReplenishmentNoticeDomainService.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.replenishmentNotice.service; + +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.replenishmentNotice.entity.ReplenishmentNotice; +import com.mhd.wms.domain.replenishmentNotice.repository.facade.IReplenishmentNoticeService; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 补货通知单 + * + * @author gen + * @date 2024-06-11 + */ +@Service +@Slf4j +public class ReplenishmentNoticeDomainService { + + @Autowired + private IReplenishmentNoticeService replenishmentNoticeService; + + + /** + * 分页查询补货通知单列表 + */ + public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO) { + return replenishmentNoticeService.queryList(replenishmentNoticeDO); + } + + + /** + * 新增补货通知单 + */ + public Boolean insert(ReplenishmentNoticeDO replenishmentNoticeDO) { + + return replenishmentNoticeService.insert(replenishmentNoticeDO); + } + + /** + * 新增补货通知单 批量 + */ + public Boolean batchInsert(List replenishmentNoticeDOList) { + List replenishmentNoticeList = new ArrayList<>(); + replenishmentNoticeDOList.forEach(replenishmentNoticeDO -> { + ReplenishmentNotice replenishmentNotice = new ReplenishmentNotice(); + BeanUtils.copyProperties(replenishmentNoticeDO, replenishmentNotice); + replenishmentNoticeList.add(replenishmentNotice); + }); + return replenishmentNoticeService.saveBatch(replenishmentNoticeList); + } + + /** + * 修改补货通知单 + */ + public Boolean update(ReplenishmentNoticeDO replenishmentNoticeDO) { + return replenishmentNoticeService.update(replenishmentNoticeDO); + } + + /** + * 批量删除补货通知单 + */ + public Boolean delete(Long[] replenishmentNoticeIds) { + return replenishmentNoticeService.delete(replenishmentNoticeIds); + } + + /** + * 获取补货通知单详细信息 + */ + public ReplenishmentNoticePO getInfo(Long replenishmentNoticeId) + { + return replenishmentNoticeService.getInfo(replenishmentNoticeId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/entity/SerialNumber.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/entity/SerialNumber.java new file mode 100644 index 000000000..136891bb7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/entity/SerialNumber.java @@ -0,0 +1,133 @@ +package com.mhd.wms.domain.serialNumber.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 序列号对象 serial_number + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class SerialNumber extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("序列号id") + @TableId(type = IdType.AUTO) + private Long serialNumberId; + + @ApiModelProperty("上架单id") + @Excel(name = "上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("序列号") + private String serialNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("序列号状态: 1:在库 2:出库") + @Excel(name = "序列号状态: 1:在库 2:出库") + private Integer status; + + + @ApiModelProperty("库存id") + @Excel(name = "库存id") + private Long materialInventoryId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/facade/ISerialNumberService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/facade/ISerialNumberService.java new file mode 100644 index 000000000..5090d56aa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/facade/ISerialNumberService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.serialNumber.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.serialNumber.entity.SerialNumber; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; + +import java.util.List; + +/** + * 序列号Service接口 + * + * @author gen + * @date 2024-07-19 + */ +public interface ISerialNumberService extends IService +{ + /** + * 分页查询序列号列表 + */ + public List queryList(SerialNumberDO serialNumberDO); + + /** + * 新增序列号 + */ + public Boolean insert(SerialNumberDO serialNumberDO); + + /** + * 修改序列号 + */ + public Boolean update(SerialNumberDO serialNumberDO); + + /** + * 批量删除序列号 + */ + public Boolean delete(Long[] serialNumberIds); + + + /** + * 查询序列号 + */ + public SerialNumberPO getInfo(Long serialNumberId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/mapper/SerialNumberMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/mapper/SerialNumberMapper.java new file mode 100644 index 000000000..0269402ed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/mapper/SerialNumberMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.serialNumber.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.serialNumber.entity.SerialNumber; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; + +import java.util.List; + +/** + * 序列号Mapper接口 + * + * @author gen + * @date 2024-07-19 + */ +public interface SerialNumberMapper extends BaseMapper +{ + /** + * 查询序列号列表 + */ + public List queryList(SerialNumberDO serialNumberDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/persistence/SerialNumberImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/persistence/SerialNumberImpl.java new file mode 100644 index 000000000..db9b6a176 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/persistence/SerialNumberImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.serialNumber.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.serialNumber.entity.SerialNumber; +import com.mhd.wms.domain.serialNumber.repository.facade.ISerialNumberService; +import com.mhd.wms.domain.serialNumber.repository.mapper.SerialNumberMapper; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 序列号Service业务层处理 + * + * @author gen + * @date 2024-07-19 + */ +@Service +public class SerialNumberImpl extends ServiceImpl implements ISerialNumberService{ + @Autowired + private SerialNumberMapper serialNumberMapper; + + /** + * 查询序列号列表 + */ + @Override + public List queryList(SerialNumberDO serialNumberDO) + { + return serialNumberMapper.queryList(serialNumberDO); + } + + /** + * 新增序列号 + */ + @Override + public Boolean insert(SerialNumberDO serialNumberDO) { + SerialNumber serialNumber = new SerialNumber(); + BeanUtils.copyProperties(serialNumberDO,serialNumber); + return this.save(serialNumber); + } + + /** + * 修改序列号 + */ + @Override + public Boolean update(SerialNumberDO serialNumberDO) { + SerialNumber serialNumber = new SerialNumber(); + BeanUtils.copyProperties(serialNumberDO,serialNumber); + return this.updateById(serialNumber); + } + + /** + * 批量删除序列号 + */ + @Override + public Boolean delete(Long[] serialNumberIds ) { + List list = new ArrayList<>(); + for (Long id : serialNumberIds) { + SerialNumber serialNumber = new SerialNumber(); + serialNumber.setSerialNumberId(id); + serialNumber.setDelFlag(2); + list.add(serialNumber); + } + return this.updateBatchById(list); + } + + /** + * 修改序列号 + */ + @Override + public SerialNumberPO getInfo(Long serialNumberId) { + SerialNumber serialNumber = this.getById(serialNumberId); + SerialNumberPO serialNumberPO = new SerialNumberPO(); + BeanUtils.copyProperties(serialNumber,serialNumberPO); + return serialNumberPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/po/SerialNumberPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/po/SerialNumberPO.java new file mode 100644 index 000000000..66bdc0dbb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/po/SerialNumberPO.java @@ -0,0 +1,132 @@ +package com.mhd.wms.domain.serialNumber.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 序列号对象 serial_number + * + * @author gen + * @date 2024-07-19 + */ + +@Data +@ApiModel(value = "序列号对象", description = "序列号响应对象") +public class SerialNumberPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("序列号id") + private Long serialNumberId; + + @ApiModelProperty("上架单id") + @Excel(name = "上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("序列号") + private String serialNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("序列号状态: 1:在库 2:出库") + @Excel(name = "序列号状态: 1:在库 2:出库") + private Integer status; + + @ApiModelProperty("库存id") + @Excel(name = "库存id") + private Long materialInventoryId; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/todo/SerialNumberDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/todo/SerialNumberDO.java new file mode 100644 index 000000000..343e6a6b3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/repository/todo/SerialNumberDO.java @@ -0,0 +1,137 @@ +package com.mhd.wms.domain.serialNumber.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 序列号对象 serial_number + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class SerialNumberDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("序列号id") + private Long serialNumberId; + + @ApiModelProperty("上架单id") + @Excel(name = "上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("序列号") + private String serialNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("序列号状态: 1:在库 2:出库") + @Excel(name = "序列号状态: 1:在库 2:出库") + private Integer status; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("库存id") + @Excel(name = "库存id") + private Long materialInventoryId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/service/SerialNumberDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/service/SerialNumberDomainService.java new file mode 100644 index 000000000..e4be602a1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/serialNumber/service/SerialNumberDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.serialNumber.service; + +import com.mhd.wms.domain.serialNumber.repository.facade.ISerialNumberService; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 序列号 + * + * @author gen + * @date 2024-07-19 + */ +@Service +@Slf4j +public class SerialNumberDomainService { + + @Autowired + private ISerialNumberService serialNumberService; + + + /** + * 分页查询序列号列表 + */ + public List queryList(SerialNumberDO serialNumberDO) { + return serialNumberService.queryList(serialNumberDO); + } + + + /** + * 新增序列号 + */ + public Boolean insert(SerialNumberDO serialNumberDO) { + + return serialNumberService.insert(serialNumberDO); + } + + /** + * 修改序列号 + */ + public Boolean update(SerialNumberDO serialNumberDO) { + return serialNumberService.update(serialNumberDO); + } + + /** + * 批量删除序列号 + */ + public Boolean delete(Long[] serialNumberIds) { + return serialNumberService.delete(serialNumberIds); + } + + /** + * 获取序列号详细信息 + */ + public SerialNumberPO getInfo(Long serialNumberId) + { + return serialNumberService.getInfo(serialNumberId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/entity/ShelfMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/entity/ShelfMaterialDetail.java new file mode 100644 index 000000000..792fe26bc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/entity/ShelfMaterialDetail.java @@ -0,0 +1,253 @@ +package com.mhd.wms.domain.shelfMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 物料明细对象 shelf_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ShelfMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已上架数量") + @Excel(name = "已上架数量") + private BigDecimal alreadyShelvesQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 上架后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/facade/IShelfMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/facade/IShelfMaterialDetailService.java new file mode 100644 index 000000000..a2598f51e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/facade/IShelfMaterialDetailService.java @@ -0,0 +1,58 @@ +package com.mhd.wms.domain.shelfMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; + +import java.util.List; + +/** + * 物料明细Service接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface IShelfMaterialDetailService extends IService +{ + /** + * 分页查询物料明细列表 + */ + public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO); + + /** + * 分页查询物料明细列表 + */ + public List queryListChildren(ShelfMaterialDetailDO shelfMaterialDetailDO); + + /** + * 新增物料明细 + */ + public Boolean insert(ShelfMaterialDetailDO shelfMaterialDetailDO); + + /** + * 修改物料明细 + */ + public Boolean update(ShelfMaterialDetailDO shelfMaterialDetailDO); + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] shelfMaterialDetailIds); + + + /** + * 查询物料明细 + */ + public ShelfMaterialDetailPO getInfo(Long shelfMaterialDetailId); + + /** + * @description 上架修改物料明细 + * @author ZhouGY + * @date 2024/6/19 9:56 + * @param stockShelfOrderDO + * @return StockShelfOrderPO + */ + public void batchShelfUpdate(StockShelfOrderDO stockShelfOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/mapper/ShelfMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/mapper/ShelfMaterialDetailMapper.java new file mode 100644 index 000000000..b1d1df671 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/mapper/ShelfMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.shelfMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; + +import java.util.List; + +/** + * 物料明细Mapper接口 + * + * @author gen + * @date 2024-06-17 + */ +public interface ShelfMaterialDetailMapper extends BaseMapper +{ + /** + * 查询物料明细列表 + */ + public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java new file mode 100644 index 000000000..90774252e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/persistence/ShelfMaterialDetailImpl.java @@ -0,0 +1,221 @@ +package com.mhd.wms.domain.shelfMaterialDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.mapper.ShelfMaterialDetailMapper; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 物料明细Service业务层处理 + * + * @author gen + * @date 2024-06-17 + */ +@Service +public class ShelfMaterialDetailImpl extends ServiceImpl implements IShelfMaterialDetailService{ + @Autowired + private ShelfMaterialDetailMapper shelfMaterialDetailMapper; + @Autowired + private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService; + + /** + * 查询物料明细列表 + */ + @Override + public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO){ + + return shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO); + } + + /** + * 查询物料明细列表 + */ + @Override + public List queryListChildren(ShelfMaterialDetailDO shelfMaterialDetailDO) { + List shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO); + + // 获取查询的层级 + List receiptMaterialDetailPOParentList = shelfMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + receiptMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2))); + return receiptMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List shelfMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = shelfMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), shelfMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增物料明细 + */ + @Override + public Boolean insert(ShelfMaterialDetailDO shelfMaterialDetailDO) { + ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail(); + BeanUtils.copyProperties(shelfMaterialDetailDO,shelfMaterialDetail); + return this.save(shelfMaterialDetail); + } + + /** + * 修改物料明细 + */ + @Override + public Boolean update(ShelfMaterialDetailDO shelfMaterialDetailDO) { + ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail(); + BeanUtils.copyProperties(shelfMaterialDetailDO,shelfMaterialDetail); + return this.updateById(shelfMaterialDetail); + } + + /** + * 批量删除物料明细 + */ + @Override + public Boolean delete(Long[] shelfMaterialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : shelfMaterialDetailIds) { + ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail(); + shelfMaterialDetail.setMaterialDetailId(id); + shelfMaterialDetail.setDelFlag(2); + list.add(shelfMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改物料明细 + */ + @Override + public ShelfMaterialDetailPO getInfo(Long shelfMaterialDetailId) { + ShelfMaterialDetail shelfMaterialDetail = this.getById(shelfMaterialDetailId); + ShelfMaterialDetailPO shelfMaterialDetailPO = new ShelfMaterialDetailPO(); + BeanUtils.copyProperties(shelfMaterialDetail,shelfMaterialDetailPO); + return shelfMaterialDetailPO; + } + + /** + * @description 批量上架修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockShelfOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void batchShelfUpdate(StockShelfOrderDO stockShelfOrderDO) { + List shelfMaterialDetailDOList = stockShelfOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(shelfMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改物料信息 + List shelfMaterialDetailList = new ArrayList<>(); + // 批量新增序列号 + List materialDetailSerialNumberList = new ArrayList<>(); + for (ShelfMaterialDetailDO shelfMaterialDetailDO : shelfMaterialDetailDOList){ + //序列号 + if (shelfMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + shelfMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(shelfMaterialDetailDO)); + } + BigDecimal totalActualQuantity = shelfMaterialDetailDO.getActualQuantity(); + //判断是否存在子项 + List inMaterialDetailDOChildList = shelfMaterialDetailDO.getChildren(); + List shelfMaterialDetailChildList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(inMaterialDetailDOChildList)){ + for (ShelfMaterialDetailDO shelfMaterialDetailDOChild : inMaterialDetailDOChildList){ + ShelfMaterialDetail shelfMaterialDetailChild = new ShelfMaterialDetail(); + BeanUtils.copyProperties(shelfMaterialDetailDOChild, shelfMaterialDetailChild); + shelfMaterialDetailChild.setLevel(2); + shelfMaterialDetailChild.setCreateBy(loginUser.getUserid()); + shelfMaterialDetailChild.setCreateByName(loginUser.getUsername()); + shelfMaterialDetailChild.setCreateTime(new Date()); + shelfMaterialDetailChildList.add(shelfMaterialDetailChild); + //序列号 + if (shelfMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(shelfMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + shelfMaterialDetailDOChild.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(shelfMaterialDetailDOChild)); + } + totalActualQuantity = totalActualQuantity.add(shelfMaterialDetailDOChild.getActualQuantity()); + } + } + ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail(); + BeanUtils.copyProperties(shelfMaterialDetailDO, shelfMaterialDetail); + shelfMaterialDetail.setUpdateBy(loginUser.getUserid()); + shelfMaterialDetail.setUpdateByName(loginUser.getUsername()); + shelfMaterialDetail.setUpdateTime(new Date()); + shelfMaterialDetailList.add(shelfMaterialDetail); + //子集不为空 + if (!CollectionUtils.isEmpty(shelfMaterialDetailChildList)){ + shelfMaterialDetailList.addAll(shelfMaterialDetailChildList); + } + } + //保存物料明细信息 + saveOrUpdateBatch(shelfMaterialDetailList); + //批量新增序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + inMaterialDetailSerialNumberService.saveBatch(materialDetailSerialNumberList); + } + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param shelfMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumber(ShelfMaterialDetailDO shelfMaterialDetailDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改序列号 + List inMaterialDetailSerialNumberList = new ArrayList<>(); + List InMaterialDetailSerialNumberDOList = shelfMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(InMaterialDetailSerialNumberDOList)){ + for (com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO : InMaterialDetailSerialNumberDOList){ + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(InMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber); + inMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailSerialNumber.setOrderNumber(shelfMaterialDetailDO.getShelfOrderNumber()); + inMaterialDetailSerialNumber.setMaterialDetailUniqueId(shelfMaterialDetailDO.getUniqueId()); + inMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + inMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + inMaterialDetailSerialNumber.setCreateTime(new Date()); + inMaterialDetailSerialNumberList.add(inMaterialDetailSerialNumber); + } + } + return inMaterialDetailSerialNumberList; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java new file mode 100644 index 000000000..0189b65e7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/po/ShelfMaterialDetailPO.java @@ -0,0 +1,260 @@ +package com.mhd.wms.domain.shelfMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 shelf_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +@ApiModel(value = "物料明细对象", description = "物料明细响应对象") +public class ShelfMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已上架数量") + @Excel(name = "已上架数量") + private BigDecimal alreadyShelvesQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 上架后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/todo/ShelfMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/todo/ShelfMaterialDetailDO.java new file mode 100644 index 000000000..f1d120b78 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/repository/todo/ShelfMaterialDetailDO.java @@ -0,0 +1,266 @@ +package com.mhd.wms.domain.shelfMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 shelf_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ShelfMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已上架数量") + @Excel(name = "已上架数量") + private BigDecimal alreadyShelvesQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 上架后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/service/ShelfMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/service/ShelfMaterialDetailDomainService.java new file mode 100644 index 000000000..fd3930bf6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shelfMaterialDetail/service/ShelfMaterialDetailDomainService.java @@ -0,0 +1,72 @@ +package com.mhd.wms.domain.shelfMaterialDetail.service; + +import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物料明细 + * + * @author gen + * @date 2024-06-17 + */ +@Service +@Slf4j +public class ShelfMaterialDetailDomainService { + + @Autowired + private IShelfMaterialDetailService shelfMaterialDetailService; + + + /** + * 分页查询物料明细列表 + */ + public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO) { + return shelfMaterialDetailService.queryList(shelfMaterialDetailDO); + } + + /** + * 分页查询物料明细列表 + */ + public List queryListChildren(ShelfMaterialDetailDO shelfMaterialDetailDO) { + return shelfMaterialDetailService.queryListChildren(shelfMaterialDetailDO); + } + + + /** + * 新增物料明细 + */ + public Boolean insert(ShelfMaterialDetailDO shelfMaterialDetailDO) { + + return shelfMaterialDetailService.insert(shelfMaterialDetailDO); + } + + /** + * 修改物料明细 + */ + public Boolean update(ShelfMaterialDetailDO shelfMaterialDetailDO) { + return shelfMaterialDetailService.update(shelfMaterialDetailDO); + } + + /** + * 批量删除物料明细 + */ + public Boolean delete(Long[] shelfMaterialDetailIds) { + return shelfMaterialDetailService.delete(shelfMaterialDetailIds); + } + + /** + * 获取物料明细详细信息 + */ + public ShelfMaterialDetailPO getInfo(Long shelfMaterialDetailId) + { + return shelfMaterialDetailService.getInfo(shelfMaterialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/entity/ShiftManage.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/entity/ShiftManage.java new file mode 100644 index 000000000..9a782c889 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/entity/ShiftManage.java @@ -0,0 +1,153 @@ +package com.mhd.wms.domain.shiftManage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 移位管理对象 shift_manage + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftManage extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单id") + @TableId(type = IdType.AUTO) + private Long shiftManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("移位物料种数") + @Excel(name = "移位物料种数") + private Integer shiftMaterialQuantity; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; + + @ApiModelProperty("已完成") + @TableField(exist = false) + private Integer finish; + + @ApiModelProperty("全部") + @TableField(exist = false) + private Integer allSize; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List shiftMaterialDetailList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/facade/IShiftManageService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/facade/IShiftManageService.java new file mode 100644 index 000000000..0346fa100 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/facade/IShiftManageService.java @@ -0,0 +1,61 @@ +package com.mhd.wms.domain.shiftManage.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.shiftManage.entity.ShiftManage; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; + +import java.util.List; + +/** + * 移位管理Service接口 + * + * @author gen + * @date 2024-07-02 + */ +public interface IShiftManageService extends IService +{ + /** + * 分页查询移位管理列表 + */ + public List queryList(ShiftManageDO shiftManageDO); + + /** + * 新增移位管理 + */ + public Boolean insert(ShiftManageDO shiftManageDO); + + /** + * 修改移位管理 + */ + public Boolean update(ShiftManageDO shiftManageDO); + + /** + * 批量删除移位管理 + */ + public Boolean delete(Long[] shiftManageIds); + + + /** + * 查询移位管理 + */ + public ShiftManagePO getInfo(Long shiftManageId); + + /** + * 根据移位单查询移位管理 + */ + public ShiftManagePO getInfoByShiftNumber(String shiftNumber); + + + /** + * 审核状态 + */ + public Boolean updateCheck(ShiftManageDO shiftManageDO); + + + /** + * 任务下发 + */ + public Boolean taskDistribution(ShiftManageDO shiftManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/mapper/ShiftManageMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/mapper/ShiftManageMapper.java new file mode 100644 index 000000000..15e916419 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/mapper/ShiftManageMapper.java @@ -0,0 +1,33 @@ +package com.mhd.wms.domain.shiftManage.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.shiftManage.entity.ShiftManage; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; + +import java.util.List; + +/** + * 移位管理Mapper接口 + * + * @author gen + * @date 2024-07-02 + */ +public interface ShiftManageMapper extends BaseMapper +{ + /** + * 查询移位管理列表 + */ + public List queryList(ShiftManageDO shiftManageDO); + + /** + * 修改种类数 + */ + public Integer updateQuantity(ShiftManage shiftManage); + + /** + * 分批移位 + */ + public Boolean insertAll(ShiftManageDO shiftManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java new file mode 100644 index 000000000..2f52486c6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/persistence/ShiftManageImpl.java @@ -0,0 +1,362 @@ +package com.mhd.wms.domain.shiftManage.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.ContainerFeignPO; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.shiftManage.entity.ShiftManage; +import com.mhd.wms.domain.shiftManage.repository.facade.IShiftManageService; +import com.mhd.wms.domain.shiftManage.repository.mapper.ShiftManageMapper; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftMaterialDetail.entity.ShiftMaterialDetail; +import com.mhd.wms.domain.shiftMaterialDetail.repository.facade.IShiftMaterialDetailService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.mapper.ShiftMaterialDetailMapper; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * 移位管理Service业务层处理 + * + * @author gen + * @date 2024-07-02 + */ +@Service +public class ShiftManageImpl extends ServiceImpl implements IShiftManageService, IDeliveTaskTypeService { + @Autowired + private ShiftManageMapper shiftManageMapper; + + @Autowired + private ShiftMaterialDetailMapper shiftMaterialDetailMapper; + + @Autowired + private IShiftMaterialDetailService iShiftMaterialDetailService; + + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + + @Autowired + private IMaterialInventoryService materialInventoryService; + + @Resource + private SystemServiceFeign systemServiceFeign; + + @Autowired + private IdGenerator idGenerator; + + /** + * 查询移位管理列表 + */ + @Override + public List queryList(ShiftManageDO shiftManageDO) { + return shiftManageMapper.queryList(shiftManageDO); + } + + /** + * 新增移位管理 + */ + @Override + public Boolean insert(ShiftManageDO shiftManageDO) { + ShiftManage shiftManage = new ShiftManage(); + BeanUtils.copyProperties(shiftManageDO, shiftManage); + if (StringUtils.isBlank(shiftManageDO.getShiftNumber())){ + shiftManage.setShiftNumber(OrderSequence.getOrderCode("YW")); + } + List shiftMaterialDetailDOList = shiftManageDO.getShiftMaterialDetailList(); + shiftManage.setMaterialTypeQuantity(shiftMaterialDetailDOList.size()); + BigDecimal quantity = shiftMaterialDetailDOList.stream().map(ShiftMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + shiftManage.setQuantity(quantity); + LoginUser loginUser = SecurityUtils.getLoginUser(); + List shiftMaterialDetailList =new ArrayList<>(); + shiftMaterialDetailDOList.forEach(e -> { + //设置库存信息 + setMaterialInventory(e); + //设置库位信息 + setWarehouseInfo(e); + //设置物料信息 + setMaterialDetailInfo(e); + e.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + e.setShiftNumber(shiftManage.getShiftNumber()); + e.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + e.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + e.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + e.setCreateByName(loginUser.getUsername()); + e.setCreateBy(loginUser.getUserid()); + e.setCreateTime(new Date()); + e.setUpdateByName(loginUser.getUsername()); + e.setUpdateBy(loginUser.getUserid()); + e.setUpdateTime(new Date()); + e.setSerialNumberManage(e.getSerialNumberManage()); + ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); + BeanUtils.copyProperties(e, shiftMaterialDetail); + shiftMaterialDetailList.add(shiftMaterialDetail); + }); + iShiftMaterialDetailService.saveBatch(shiftMaterialDetailList); + return this.save(shiftManage); + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/7/31 15:08 + * @param shiftMaterialDetailDO + + */ + private void setMaterialDetailInfo(ShiftMaterialDetailDO shiftMaterialDetailDO){ + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(shiftMaterialDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + shiftMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + shiftMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + shiftMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + shiftMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId()); + shiftMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + shiftMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + shiftMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + shiftMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + shiftMaterialDetailDO.setUnitName(packDetailFeignPO.getName()); + shiftMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + shiftMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + shiftMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + + } + + /** + * @description 设置仓库信息 + * @author ZhouGY + * @date 2024/7/31 13:46 + * @param shiftMaterialDetailDO + */ + //设置仓库信息 + private void setWarehouseInfo(ShiftMaterialDetailDO shiftMaterialDetailDO) { + AjaxResult newStorageLocationInfo = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shiftMaterialDetailDO.getNewStorageLocationId()); + if(!"200".equals(String.valueOf(newStorageLocationInfo.get("code")))){ + throw new ServiceException("获取新库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO1 = JSON.parseObject(JSONObject.toJSONString(newStorageLocationInfo.get("data")), StorageLocationFeignPO.class); + if (ObjectUtil.isNull(storageLocationFeignPO1)){ + return; + } + shiftMaterialDetailDO.setNewWarehouseId(storageLocationFeignPO1.getWarehouseId()); + shiftMaterialDetailDO.setNewWarehouseCode(storageLocationFeignPO1.getWarehouseCode()); + shiftMaterialDetailDO.setNewWarehouseName(storageLocationFeignPO1.getWarehouseName()); + shiftMaterialDetailDO.setNewStorageSectionId(storageLocationFeignPO1.getStorageSectionId()); + shiftMaterialDetailDO.setNewStorageCode(storageLocationFeignPO1.getStorageCode()); + shiftMaterialDetailDO.setNewStorageName(storageLocationFeignPO1.getStorageName()); + shiftMaterialDetailDO.setNewStorageCode(storageLocationFeignPO1.getStorageCode()); + shiftMaterialDetailDO.setNewStorageLocationId(storageLocationFeignPO1.getStorageLocationId()); + shiftMaterialDetailDO.setNewStorageLocationId(storageLocationFeignPO1.getStorageLocationId()); + shiftMaterialDetailDO.setNewStorageLocationCode(storageLocationFeignPO1.getStorageLocationCode()); + shiftMaterialDetailDO.setNewStorageLocationName(storageLocationFeignPO1.getStorageLocationName()); + } + + /** + * 修改移位管理 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean update(ShiftManageDO shiftManageDO) { + Long[] ids = new Long[1]; + ids[0] = shiftManageDO.getShiftManageId(); + delete(ids); + return insert(shiftManageDO); + } + + /** + * 批量删除移位管理 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean delete(Long[] shiftManageIds) { + List list = new ArrayList<>(); + for (Long id : shiftManageIds) { + ShiftManage shiftManage = new ShiftManage(); + shiftManage.setShiftManageId(id); + shiftManage.setDelFlag(2); + list.add(shiftManage); + ShiftManage shiftManage1 = shiftManageMapper.selectById(id); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(ShiftMaterialDetail::getShiftNumber, shiftManage1.getShiftNumber()); + List shiftMaterialDetails = shiftMaterialDetailMapper.selectList(lqw); + Long[] shiftManageDetailIds = new Long[shiftMaterialDetails.size()]; + for (int i = 0; i < shiftMaterialDetails.size(); i++) { + shiftManageDetailIds[i] = shiftMaterialDetails.get(i).getShiftIoDetailId(); + } + iShiftMaterialDetailService.delete(shiftManageDetailIds); + } + return this.updateBatchById(list); + } + + /** + * 修改移位管理 + */ + @Override + public ShiftManagePO getInfo(Long shiftManageId) { + ShiftManage shiftManage = this.getById(shiftManageId); + ShiftManagePO shiftManagePO = new ShiftManagePO(); + BeanUtils.copyProperties(shiftManage, shiftManagePO); + return shiftManagePO; + } + + /** + * 根据移位单查询移位管理 + */ + public ShiftManagePO getInfoByShiftNumber(String shiftNumber){ + ShiftManage shiftManage = shiftManageMapper.selectOne(new QueryWrapper().lambda() + .eq(ShiftManage::getDelFlag, 1) + .eq(ShiftManage::getShiftNumber,shiftNumber)); + ShiftManagePO shiftManagePO = new ShiftManagePO(); + BeanUtils.copyProperties(shiftManage, shiftManagePO); + return shiftManagePO; + } + + + @Override + public Boolean updateCheck(ShiftManageDO shiftManageDO) { + if (shiftManageDO.getAuditStatus() == 2) { + return false; + } + // 移位单状态变为待移位 + ShiftManage shiftManage = shiftManageMapper.selectById(shiftManageDO.getShiftManageId()); + LoginUser loginUser = SecurityUtils.getLoginUser(); + shiftManage.setAuditStatus(shiftManageDO.getAuditStatus()); + shiftManage.setAuditBy(loginUser.getUserid()); + shiftManage.setAuditByName(loginUser.getUsername()); + shiftManage.setAuditTime(new Date()); + shiftManage.setShiftStatus(2); + shiftMaterialDetailMapper.updateCheckDetail(JSONUtil.toBean(JSONUtil.toJsonStr(shiftManage), ShiftManageDO.class)); + return this.updateById(shiftManage); + } + + @Override + public Boolean taskDistribution(ShiftManageDO shiftManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + ShiftManage shiftManage = new ShiftManage(); + shiftManage.setTaskDistribution(1); + shiftManage.setTaskDistributionTime(new Date()); + shiftManage.setUpdateBy(loginUser.getUserid()); + shiftManage.setUpdateByName(loginUser.getUsername()); + shiftManage.setUpdateTime(new Date()); + int i = shiftManageMapper.update(shiftManage, new QueryWrapper().lambda() + .in(ShiftManage::getShiftManageId, shiftManageDO.getShiftManageIds())); + return i > 0; + } + + /** + * @description 设置库存信息 + * @author ZhouGY + * @date 2024/7/19 20:17 + * @param shiftMaterialDetailDO + */ + private void setMaterialInventory(ShiftMaterialDetailDO shiftMaterialDetailDO){ + MaterialInventoryPO materialInventoryPO = materialInventoryService.getInfo(shiftMaterialDetailDO.getMaterialInventoryId()); + if (materialInventoryPO == null){ + throw new ServiceException("物料库存信息不存在"); + } + shiftMaterialDetailDO.setMaterialBaseInfoId(materialInventoryPO.getMaterialBaseInfoId()); + shiftMaterialDetailDO.setMaterialCode(materialInventoryPO.getMaterialCode()); + shiftMaterialDetailDO.setMaterialName(materialInventoryPO.getMaterialName()); + shiftMaterialDetailDO.setBarCode(materialInventoryPO.getBarCode()); + shiftMaterialDetailDO.setInventoryQuantity(materialInventoryPO.getInventoryQuantity()); + shiftMaterialDetailDO.setOldWarehouseId(materialInventoryPO.getWarehouseId()); + shiftMaterialDetailDO.setOldWarehouseCode(materialInventoryPO.getWarehouseCode()); + shiftMaterialDetailDO.setOldWarehouseName(materialInventoryPO.getWarehouseName()); + shiftMaterialDetailDO.setOldStorageCode(materialInventoryPO.getStorageCode()); + shiftMaterialDetailDO.setOldStorageName(materialInventoryPO.getStorageName()); + shiftMaterialDetailDO.setOldStorageCode(materialInventoryPO.getStorageCode()); + shiftMaterialDetailDO.setOldStorageLocationId(materialInventoryPO.getStorageLocationId()); + shiftMaterialDetailDO.setOldStorageLocationCode(materialInventoryPO.getStorageLocationCode()); + shiftMaterialDetailDO.setOldStorageLocationName(materialInventoryPO.getStorageLocationName()); + shiftMaterialDetailDO.setBatchNumber(materialInventoryPO.getBatchNumber()); + shiftMaterialDetailDO.setMaterialStatusCode(materialInventoryPO.getMaterialStatusCode()); + shiftMaterialDetailDO.setMaterialStatusName(materialInventoryPO.getMaterialStatusName()); + //没有选择容器并且选择的同期和原库位不一样 + if(ObjectUtil.isNotNull(shiftMaterialDetailDO.getContainerId()) && !Objects.equals(shiftMaterialDetailDO.getContainerId(), materialInventoryPO.getContainerId())){ + //获取容器详情 + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shiftMaterialDetailDO.getContainerId()); + if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + shiftMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode()); + shiftMaterialDetailDO.setContainerType(containerFeignPO.getContainerType()); + shiftMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + }else { + shiftMaterialDetailDO.setContainerId(materialInventoryPO.getContainerId()); + shiftMaterialDetailDO.setContainerCode(materialInventoryPO.getContainerCode()); + shiftMaterialDetailDO.setContainerType(materialInventoryPO.getContainerType()); + shiftMaterialDetailDO.setContainerTypeName(materialInventoryPO.getContainerTypeName()); + } + } + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/8/1 14:00 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //标记收货单任务已下发 + return update(null, new UpdateWrapper().lambda() + .set(ShiftManage::getOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(ShiftManage::getOperatorsName, deliveTaskDO.getOperatorsName()) + .set(ShiftManage::getUpdateBy, loginUser.getUserid()) + .set(ShiftManage::getUpdateByName, loginUser.getUsername()) + .set(ShiftManage::getUpdateTime, new Date()) + .eq(ShiftManage::getShiftNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/po/ShiftManagePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/po/ShiftManagePO.java new file mode 100644 index 000000000..c8beb3f72 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/po/ShiftManagePO.java @@ -0,0 +1,145 @@ +package com.mhd.wms.domain.shiftManage.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 移位管理对象 shift_manage + * + * @author gen + * @date 2024-07-02 + */ + +@Data +@ApiModel(value = "移位管理对象", description = "移位管理响应对象") +public class ShiftManagePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单id") + private Long shiftManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("移位物料种数") + @Excel(name = "移位物料种数") + private Integer shiftMaterialQuantity; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("移位单审核备注") + @Excel(name = "移位单审核备注") + private String auditRemark; + + @ApiModelProperty("移位单审核人") + @Excel(name = "移位单审核人") + private Long auditBy; + + @ApiModelProperty("移位单审核人姓名") + @Excel(name = "移位单审核人姓名") + private String auditByName; + + @ApiModelProperty("移位单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "移位单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List shiftMaterialDetailList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ContainerShiftDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ContainerShiftDO.java new file mode 100644 index 000000000..30876baea --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ContainerShiftDO.java @@ -0,0 +1,96 @@ +package com.mhd.wms.domain.shiftManage.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author ZhouGY + * @title ContainerShiftDO + * @description: TODO + * @date 2024/7/21 0:05 + **/ +@Data +public class ContainerShiftDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("容器移位详情") + private List children; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ShiftManageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ShiftManageDO.java new file mode 100644 index 000000000..45289557b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/repository/todo/ShiftManageDO.java @@ -0,0 +1,159 @@ +package com.mhd.wms.domain.shiftManage.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 移位管理对象 shift_manage + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftManageDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单id") + private Long shiftManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("移位物料种数") + @Excel(name = "移位物料种数") + private Integer shiftMaterialQuantity; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("移位单审核备注") + @Excel(name = "移位单审核备注") + private String auditRemark; + + @ApiModelProperty("移位单审核人") + @Excel(name = "移位单审核人") + private Long auditBy; + + @ApiModelProperty("移位单审核人姓名") + @Excel(name = "移位单审核人姓名") + private String auditByName; + + @ApiModelProperty("移位单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "移位单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List shiftMaterialDetailList; + + @ApiModelProperty("移位单id") + private List shiftManageIds; + + @ApiModelProperty("移位状态大于某个状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer gtShiftStatus; + + @ApiModelProperty("移位状态小于某个状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer ltShiftStatus; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private String shiftProgress; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/service/ShiftManageDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/service/ShiftManageDomainService.java new file mode 100644 index 000000000..175af3643 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftManage/service/ShiftManageDomainService.java @@ -0,0 +1,543 @@ +package com.mhd.wms.domain.shiftManage.service; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.shiftManage.entity.ShiftManage; +import com.mhd.wms.domain.shiftManage.repository.facade.IShiftManageService; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.facade.IShiftMaterialDetailService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 移位管理 + * + * @author gen + * @date 2024-07-02 + */ +@Service +@Slf4j +public class ShiftManageDomainService { + + @Autowired + private IShiftManageService shiftManageService; + @Autowired + private IShiftMaterialDetailService shiftMaterialDetailService; + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + + + /** + * 分页查询移位管理列表 + */ + public List queryList(ShiftManageDO shiftManageDO) { + return shiftManageService.queryList(shiftManageDO); + } + + /** + * @description app 获取移位详情 + * @author ZhouGY + * @date 2024/7/30 14:20 + * @param ShiftManageId + * @return ShiftManagePO + */ + public ShiftManagePO getInfoByApp(Long ShiftManageId) { + ShiftManagePO shiftManagePO = shiftManageService.getInfo(ShiftManageId); + ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO(); + shiftMaterialDetailDO.setShiftNumber(shiftManagePO.getShiftNumber()); + List shiftMaterialDetailPOList = shiftMaterialDetailService.queryListChildren(shiftMaterialDetailDO); + OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = new OutMaterialDetailSerialNumberDO(); + outMaterialDetailSerialNumberDO.setOrderNumber(shiftManagePO.getShiftNumber()); + List outMaterialDetailSerialNumberPOList = outMaterialDetailSerialNumberService.queryList(outMaterialDetailSerialNumberDO); + Map> inMaterialDetailSerialNumberMap = outMaterialDetailSerialNumberPOList.stream() + .collect(Collectors.groupingBy(OutMaterialDetailSerialNumberPO::getMaterialDetailUniqueId)); + shiftMaterialDetailPOList.forEach(shiftMaterialDetailPO -> { + List shiftMaterialDetailPOChildrenNowList = new ArrayList<>(); + ShiftMaterialDetailPO shiftMaterialDetailPOChildrenNow = new ShiftMaterialDetailPO(); + BeanUtils.copyProperties(shiftMaterialDetailPO, shiftMaterialDetailPOChildrenNow, "children"); + List materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(shiftMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + shiftMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(materialDetailSerialNumberList); + }else { + shiftMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + shiftMaterialDetailPOChildrenNowList.add(shiftMaterialDetailPOChildrenNow); + //子集 + List shiftMaterialDetailPOChildrenList = shiftMaterialDetailPO.getChildren(); + shiftMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> { + List materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(shiftMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)){ + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(materialDetailSerialNumberChildrenList); + }else { + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + }); + shiftMaterialDetailPOChildrenNowList.addAll(shiftMaterialDetailPOChildrenList); + shiftMaterialDetailPO.setChildren(shiftMaterialDetailPOChildrenNowList); + }); + shiftManagePO.setShiftMaterialDetailList(shiftMaterialDetailPOList); + return shiftManagePO; + } + + + + /** + * 新增移位管理 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean insert(ShiftManageDO shiftManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + UserPo userPo = loginUser.getUserPo(); + shiftManageDO.setOrganizationId(userPo.getOrganizationId()); + shiftManageDO.setTopOrganizationId(userPo.getTopOrganizationId()); + shiftManageDO.setOrganizationName(userPo.getOrganizationName()); + shiftManageDO.setCreateBy(loginUser.getUserid()); + shiftManageDO.setCreateByName(loginUser.getUsername()); + shiftManageDO.setCreateTime(new Date()); + shiftManageDO.setUpdateBy(loginUser.getUserid()); + shiftManageDO.setUpdateTime(new Date()); + shiftManageDO.setUpdateByName(loginUser.getUsername()); + return shiftManageService.insert(shiftManageDO); + } + + /** + * 修改移位管理 + */ + public Boolean update(ShiftManageDO shiftManageDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + shiftManageDO.setUpdateBy(loginUser.getUserid()); + shiftManageDO.setUpdateByName(loginUser.getUsername()); + shiftManageDO.setUpdateTime(new Date()); + return shiftManageService.update(shiftManageDO); + } + + /** + * 批量删除移位管理 + */ + public Boolean delete(Long[] shiftManageIds) { + return shiftManageService.delete(shiftManageIds); + } + + /** + * 获取移位管理详细信息 + */ + public ShiftManagePO getInfo(Long shiftManageId) + { + return shiftManageService.getInfo(shiftManageId); + } + + /** + * @description 审核 + * @author ZhouGY + * @date 2024/7/30 14:47 + * @param shiftManageDO + * @return Boolean + */ + public Boolean auditState(ShiftManageDO shiftManageDO){ + List shiftManageIds = shiftManageDO.getShiftManageIds(); + ShiftManagePO info = new ShiftManagePO(); + Boolean b = false; + for (Long shiftManageId : shiftManageIds) { + info = shiftManageService.getInfo(shiftManageId); + ShiftManageDO beanDO = JSONUtil.toBean(JSONUtil.toJsonStr(info), ShiftManageDO.class); + beanDO.setAuditStatus(shiftManageDO.getAuditStatus()); + b = shiftManageService.updateCheck(beanDO); + } + + return b; + } + + /** + * @description 任务下发 + * @author ZhouGY + * @date 2024/7/30 14:47 + * @param shiftManageDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean taskDistribution(ShiftManageDO shiftManageDO){ + ShiftManageDO shiftManageDOQuery = new ShiftManageDO(); + shiftManageDOQuery.setTaskDistribution(2); + shiftManageDOQuery.setShiftManageIds(shiftManageDO.getShiftManageIds()); + List shiftManagePOList = shiftManageService.queryList(shiftManageDOQuery); + if (CollectionUtils.isEmpty(shiftManagePOList)) { + throw new ServiceException("移位单不存在或已下发,请重新选择"); + } + //移位生成下发任务 + genDeliveTask(shiftManagePOList, shiftManageDO); + return shiftManageService.taskDistribution(shiftManageDO); + } + + /** + * 物料移位 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean appMoveFromShiftManage(ShiftManageDO shiftManageDO){ + if (ObjectUtil.isNull(shiftManageDO.getUpdateTime())) { + throw new ServiceException("收货单修改时间不能为空"); + } + //TODO 增加锁 锁移位单单号 + ShiftManagePO shiftManagePO = shiftManageService.getInfo(shiftManageDO.getShiftManageId()); + if (shiftManagePO == null) { + throw new ServiceException("移位单不存在"); + } + if (shiftManagePO.getShiftStatus() > 3) { + throw new ServiceException("移位单已完成收货"); + } + if (shiftManagePO.getUpdateTime().compareTo(shiftManageDO.getUpdateTime()) != 0) { + throw new ServiceException("移位单【" + shiftManagePO.getShiftNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + //修改物料移位信息 + shiftMaterialDetailService.batchShiftUpdate(shiftManageDO); + //修改收货单 设置收货单收货需要更新的数据数据 + return updateShiftOrder(shiftManageDO, shiftManagePO); + } + + /** + * @description PC 完成移位 + * @author ZhouGY + * @date 2024/7/30 14:48 + * @param shiftManageDO + * @return Map + */ + @Transactional(rollbackFor = Exception.class) + public Boolean finishShiftByPC(ShiftManageDO shiftManageDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + ShiftManagePO shiftManagePO = shiftManageService.getInfo(shiftManageDO.getShiftManageId()); + if (shiftManagePO == null) { + throw new ServiceException("移位单不存在"); + } + if (4 == shiftManagePO.getShiftStatus()) { + throw new ServiceException("移位单【" + shiftManagePO.getShiftNumber() + "】已完成移位,请重新选择"); + } + //修改物料移位信息 + shiftMaterialDetailService.batchShiftUpdate(shiftManageDO); + //修改移位单状态为完成移位 + shiftManageService.update(null, new UpdateWrapper().lambda() + .set(ShiftManage::getShiftStatus, 4) + .set(ShiftManage::getUpdateBy, loginUser.getUserid()) + .set(ShiftManage::getUpdateByName, loginUser.getUsername()) + .set(ShiftManage::getUpdateTime, new Date()) + .eq(ShiftManage::getShiftManageId, shiftManageDO.getShiftManageId())); + //修改库存 + updateMaterialInventory(shiftManagePO.getShiftNumber()); + //生成移位追溯记录 + genInventoryStandingDetail(shiftManagePO); + return true; + } + + /** + * @description PDA 完成移位 + * @author ZhouGY + * @date 2024/7/30 14:48 + * @param shiftManageDO + * @return Map + */ + @Transactional(rollbackFor = Exception.class) + public Boolean finishShift(ShiftManageDO shiftManageDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + ShiftManagePO shiftManagePO = shiftManageService.getInfo(shiftManageDO.getShiftManageId()); + if (shiftManagePO == null) { + throw new ServiceException("移位单不存在"); + } + if (4 == shiftManagePO.getShiftStatus()) { + throw new ServiceException("移位单【" + shiftManagePO.getShiftNumber() + "】已完成移位,请重新选择"); + } + //修改移位单状态为完成移位 + shiftManageService.update(null, new UpdateWrapper().lambda() + .set(ShiftManage::getShiftStatus, 4) + .set(ShiftManage::getUpdateBy, loginUser.getUserid()) + .set(ShiftManage::getUpdateByName, loginUser.getUsername()) + .set(ShiftManage::getUpdateTime, new Date()) + .eq(ShiftManage::getShiftManageId, shiftManageDO.getShiftManageId())); + //修改库存 + updateMaterialInventory(shiftManagePO.getShiftNumber()); + //生成移位追溯记录 + genInventoryStandingDetail(shiftManagePO); + return true; + } + + /** + * @description app 容器移位 + * @author ZhouGY + * @date 2024/7/30 14:24 + * @param containerShiftDOList + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean appMoveContainShift(List containerShiftDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List shiftMaterialDetailDOList = shiftMaterialDetailService.appMoveContainShift(containerShiftDOList); + ShiftManageDO shiftManageDO = new ShiftManageDO(); + AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid()); + shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId()); + shiftManageDO.setWarehouseCode(associationWarehouseCacheDO.getWarehouseCode()); + shiftManageDO.setWarehouseName(associationWarehouseCacheDO.getWarehouseName()); + shiftManageDO.setShiftNumber(OrderSequence.getOrderCode("YW")); + shiftManageDO.setRemark("容器移位生成"); + shiftManageDO.setShiftStatus(4);//默认以为完成 + shiftManageDO.setAuditStatus(3); + shiftManageDO.setAuditBy(loginUser.getUserid()); + shiftManageDO.setAuditByName(loginUser.getUsername()); + shiftManageDO.setAuditTime(new Date()); + shiftManageDO.setTaskDistribution(1); + shiftManageDO.setTaskDistributionTime(new Date()); + shiftManageDO.setOperatorsBy(loginUser.getUserid()); + shiftManageDO.setOperatorsName(loginUser.getUsername()); + BigDecimal quantity = shiftMaterialDetailDOList.stream().map(ShiftMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + shiftManageDO.setQuantity(quantity); + shiftManageDO.setShiftQuantity(quantity); + shiftManageDO.setShiftMaterialDetailList(shiftMaterialDetailDOList); + //新增移位单 + insert(shiftManageDO); + //生成移位追溯记录 + ShiftManagePO shiftManagePO = shiftManageService.getInfoByShiftNumber(shiftManageDO.getShiftNumber()); + genInventoryStandingDetail(shiftManagePO); + return true; + } + + /** + * @description 移位生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param shiftManagePOList + * @param shiftManageDO + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(List shiftManagePOList, ShiftManageDO shiftManageDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (ShiftManagePO shiftManagePO : shiftManagePOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(shiftManagePO.getShiftNumber()); + deliveTaskDO.setWarehouseId(shiftManagePO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(shiftManagePO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(shiftManagePO.getWarehouseName()); + deliveTaskDO.setTaskType(5); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(shiftManageDO.getOperatorsBy()); + deliveTaskDO.setOperatorsName(shiftManageDO.getOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } + + /** + * @param shiftManageDO + * @return shiftManagePO + * @description 设置移位单移位需要更新的数据数据 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateShiftOrder(ShiftManageDO shiftManageDO, ShiftManagePO shiftManagePO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + ShiftManage shiftManage = new ShiftManage(); + shiftManage.setShiftManageId(shiftManagePO.getShiftManageId()); + shiftManage.setShiftQuantity(shiftManageDO.getShiftQuantity()); + shiftManage.setShiftMaterialQuantity(shiftManageDO.getShiftMaterialQuantity()); + int shiftStatus = 3; + if(shiftManageDO.getShiftQuantity().compareTo(shiftManagePO.getQuantity()) >= 0){ + shiftStatus = 4; + } + shiftManage.setShiftStatus(shiftStatus); + shiftManage.setUpdateBy(loginUser.getUserid()); + shiftManage.setUpdateByName(loginUser.getUsername()); + shiftManage.setUpdateTime(new Date()); + shiftManageService.updateById(shiftManage); + //移位完成 + if (shiftStatus == 4){ + //修改库存 + updateMaterialInventory(shiftManagePO.getShiftNumber()); + //生成移位追溯记录 + genInventoryStandingDetail(shiftManagePO); + } + return true; + } + /** + * @description 修改库位信息 + * @author ZhouGY + * @date 2024/7/30 15:35 + * @param shiftNumber + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public void updateMaterialInventory(String shiftNumber){ + List materialInventoryOldList = new ArrayList<>(); + List materialInventoryNowList = new ArrayList<>(); + ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO(); + shiftMaterialDetailDO.setShiftNumber(shiftNumber); + List shiftMaterialDetailPOList = shiftMaterialDetailService.queryListChildren(shiftMaterialDetailDO); + for (ShiftMaterialDetailPO shiftMaterialDetailPO : shiftMaterialDetailPOList){ + BigDecimal shiftQuantity = shiftMaterialDetailPO.getShiftQuantity(); + //构建新物料库存信息 + materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPO)); + List shiftMaterialDetailPOChildrenList = shiftMaterialDetailPO.getChildren(); + for (ShiftMaterialDetailPO shiftMaterialDetailPOChildren : shiftMaterialDetailPOChildrenList){ + shiftQuantity = shiftQuantity.add(shiftMaterialDetailPOChildren.getShiftQuantity()); + //构建新物料库存信息 + materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPOChildren)); + }; + MaterialInventory materialInventoryOldDb = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId()); + if (materialInventoryOldDb.getInventoryQuantity().compareTo(shiftQuantity) < 0){ + throw new ServiceException("物料原库位下的物料库存不足,不能进行移位"); + } + //原库位 + MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO(); + materialInventoryDOOld.setMaterialInventoryId(shiftMaterialDetailPO.getMaterialInventoryId()); + materialInventoryDOOld.setInventoryQuantity(shiftQuantity); + materialInventoryDOOld.setAllocationQuantity(shiftQuantity); + materialInventoryOldList.add(materialInventoryDOOld); + } + + //目标库位 需要增加的库存 + if (!CollectionUtils.isEmpty(materialInventoryNowList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryNowList, 1); + } + //原库位 需要减少的库存 + if (!CollectionUtils.isEmpty(materialInventoryOldList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryOldList, 2); + } + } + + /** + * @description 生成移位追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param shiftManagePO + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(ShiftManagePO shiftManagePO){ + ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO(); + shiftMaterialDetailDO.setShiftNumber(shiftManagePO.getShiftNumber()); + List shiftMaterialDetailPOList = shiftMaterialDetailService.queryList(shiftMaterialDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + for (ShiftMaterialDetailPO shiftMaterialDetailPO : shiftMaterialDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(shiftManagePO.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(shiftManagePO.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(shiftManagePO.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(shiftMaterialDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(shiftMaterialDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(shiftMaterialDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(shiftMaterialDetailPO.getShiftNumber()); + inventoryStandingDetailDO.setWarehouseId(shiftManagePO.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(shiftManagePO.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(shiftManagePO.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(5); + inventoryStandingDetailDO.setMaterialQuantity(shiftMaterialDetailPO.getShiftQuantity()); + inventoryStandingDetailDO.setCreateBy(loginUser.getUserid()); + inventoryStandingDetailDO.setCreateByName(loginUser.getUsername()); + inventoryStandingDetailDO.setCreateTime(new Date()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + /** + * @description 构建物料库存信息 + * @author ZhouGY + * @date 2024/7/30 15:57 + * @param shiftMaterialDetailPO + * @return MaterialInventoryDO + */ + private MaterialInventoryDO genMaterialInventory(ShiftMaterialDetailPO shiftMaterialDetailPO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + //新库位 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MaterialInventory::getWarehouseId, SystemServiceCacheUtil.getAssociationWarehouseCache(SecurityUtils.getLoginUser().getUserid()).getWarehouseId()); // 仓库 + queryWrapper.eq(MaterialInventory::getStorageSectionId, shiftMaterialDetailPO.getNewStorageSectionId()); // 库区 + queryWrapper.eq(MaterialInventory::getStorageLocationId, shiftMaterialDetailPO.getNewStorageLocationId()); // 库位 + queryWrapper.eq(MaterialInventory::getMaterialBaseInfoId, shiftMaterialDetailPO.getMaterialBaseInfoId()); // 物料基础信息id + queryWrapper.eq(MaterialInventory::getBatchNumber, shiftMaterialDetailPO.getBatchNumber()); // 批次号 + queryWrapper.eq(MaterialInventory::getMaterialStatusCode, shiftMaterialDetailPO.getMaterialStatusCode()); // 物料状态 + if (!ObjectUtil.isNull(shiftMaterialDetailPO.getContainerId())){ + queryWrapper.eq(MaterialInventory::getContainerId,shiftMaterialDetailPO.getContainerId()); + } + MaterialInventory materialInventoryDb = materialInventoryService.getOne(queryWrapper); + if (ObjectUtil.isNull(materialInventoryDb)){ + MaterialInventoryDO materialInventoryDONow = new MaterialInventoryDO(); + materialInventoryDONow.setMaterialBaseInfoId(shiftMaterialDetailPO.getMaterialBaseInfoId()); + materialInventoryDONow.setWarehouseId(shiftMaterialDetailPO.getNewWarehouseId()); + materialInventoryDONow.setWarehouseCode(shiftMaterialDetailPO.getNewWarehouseCode()); + materialInventoryDONow.setWarehouseName(shiftMaterialDetailPO.getNewWarehouseName()); + materialInventoryDONow.setStorageSectionId(shiftMaterialDetailPO.getNewStorageSectionId()); + materialInventoryDONow.setStorageCode(shiftMaterialDetailPO.getNewStorageCode()); + materialInventoryDONow.setStorageName(shiftMaterialDetailPO.getNewStorageName()); + materialInventoryDONow.setStorageLocationId(shiftMaterialDetailPO.getNewStorageLocationId()); + materialInventoryDONow.setStorageLocationCode(shiftMaterialDetailPO.getNewStorageLocationCode()); + materialInventoryDONow.setStorageLocationName(shiftMaterialDetailPO.getNewStorageLocationName()); + materialInventoryDONow.setContainerId(shiftMaterialDetailPO.getContainerId()); + materialInventoryDONow.setContainerCode(shiftMaterialDetailPO.getContainerCode()); + materialInventoryDONow.setContainerType(shiftMaterialDetailPO.getContainerType()); + materialInventoryDONow.setContainerTypeName(shiftMaterialDetailPO.getContainerTypeName()); + materialInventoryDONow.setInventoryQuantity(shiftMaterialDetailPO.getShiftQuantity()); + materialInventoryDONow.setAllocationQuantity(shiftMaterialDetailPO.getShiftQuantity()); + materialInventoryDONow.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialInventoryDONow.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialInventoryDONow.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialInventoryDONow.setCreateBy(loginUser.getUserid()); + materialInventoryDONow.setCreateByName(loginUser.getUsername()); + materialInventoryDONow.setCreateTime(new Date()); + return materialInventoryDONow; + }else { + MaterialInventoryDO materialInventoryDONow = new MaterialInventoryDO(); + BeanUtils.copyProperties(materialInventoryDb, materialInventoryDONow); + materialInventoryDONow.setInventoryQuantity(shiftMaterialDetailPO.getShiftQuantity()); + materialInventoryDONow.setAllocationQuantity(shiftMaterialDetailPO.getShiftQuantity()); + return materialInventoryDONow; + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/entity/ShiftMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/entity/ShiftMaterialDetail.java new file mode 100644 index 000000000..09640f20f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/entity/ShiftMaterialDetail.java @@ -0,0 +1,255 @@ +package com.mhd.wms.domain.shiftMaterialDetail.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 移位物料明细对象 shift_material_detail + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单详情id") + @TableId(type = IdType.AUTO) + private Long shiftIoDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("物料id") + @Excel(name = "物料id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已移位数量") + @Excel(name = "已移位数量") + private BigDecimal alreadyShiftQuantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("原始仓库id") + @Excel(name = "原始仓库id") + private Long oldWarehouseId; + + @ApiModelProperty("原始仓库编码") + @Excel(name = "原始仓库编码") + private String oldWarehouseCode; + + @ApiModelProperty("原始仓库名称") + @Excel(name = "原始仓库名称") + private String oldWarehouseName; + + @ApiModelProperty("原始库区id") + @Excel(name = "原始库区id") + private Long oldStorageSectionId; + + @ApiModelProperty("原始库区编码") + @Excel(name = "原始库区编码") + private String oldStorageCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("原始库区名称") + @Excel(name = "原始库区名称") + private String oldStorageName; + + @ApiModelProperty("原始库位id") + @Excel(name = "原始库位id") + private Long oldStorageLocationId; + + @ApiModelProperty("原始库位编码") + @Excel(name = "原始库位编码") + private String oldStorageLocationCode; + + @ApiModelProperty("原始库位名称") + @Excel(name = "原始库位名称") + private String oldStorageLocationName; + + @ApiModelProperty("目标仓库id") + @Excel(name = "目标仓库id") + private Long newWarehouseId; + + @ApiModelProperty("目标仓库编码") + @Excel(name = "目标仓库编码") + private String newWarehouseCode; + + @ApiModelProperty("目标仓库名称") + @Excel(name = "目标仓库名称") + private String newWarehouseName; + + @ApiModelProperty("目标库区id") + @Excel(name = "目标库区id") + private Long newStorageSectionId; + + @ApiModelProperty("目标库区编码") + @Excel(name = "目标库区编码") + private String newStorageCode; + + @ApiModelProperty("目标库区名称") + @Excel(name = "目标库区名称") + private String newStorageName; + + @ApiModelProperty("目标库位id") + @Excel(name = "目标库位id") + private Long newStorageLocationId; + + @ApiModelProperty("目标库位编码") + @Excel(name = "目标库位编码") + private String newStorageLocationCode; + + @ApiModelProperty("目标库位名称") + @Excel(name = "目标库位名称") + private String newStorageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("移位类型") + private Integer shiftType; + + + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List shiftMoveMaterialQuantityList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/facade/IShiftMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/facade/IShiftMaterialDetailService.java new file mode 100644 index 000000000..f9326b62f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/facade/IShiftMaterialDetailService.java @@ -0,0 +1,86 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftMaterialDetail.entity.ShiftMaterialDetail; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 移位物料明细Service接口 + * + * @author gen + * @date 2024-07-02 + */ +public interface IShiftMaterialDetailService extends IService +{ + /** + * 分页查询移位物料明细列表 + */ + public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 查询物料明细列表 + */ + public List queryListChildren(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 分页查询分组移位物料明细列表 + */ + public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO); + + + /** + * 新增移位物料明细 + */ + public Boolean insert(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 修改移位物料明细 + */ + public Boolean update(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 批量删除移位物料明细 + */ + public Boolean delete(Long[] shiftIoDetailIds); + + + /** + * 查询移位物料明细 + */ + public ShiftMaterialDetailPO getInfo(Long shiftIoDetailId); + + /** + * 获取移位的仓库信息 + */ + public ShiftMaterialDetailPO getShiftMaterialDetailPO(ShiftMaterialDetailDO shiftMaterialDetailDO); + + public MaterialInventoryPO getMaterialInventoryPO(ShiftMaterialDetailDO shiftMaterialDetailDO); + + + + /** + * 仓库库位物流数量修改 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateMaterialInventory(ShiftMaterialDetailDO shiftMaterialDetailDO); + + public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO); + + + public List appMoveContainShift(List containerShiftDOList); + + /** + * @description 批量修改物料信息 + * @author ZhouGY + * @date 2024/7/30 10:42 + * @param shiftManageDO + */ + public void batchShiftUpdate(ShiftManageDO shiftManageDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/mapper/ShiftMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/mapper/ShiftMaterialDetailMapper.java new file mode 100644 index 000000000..ae241f0d9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/mapper/ShiftMaterialDetailMapper.java @@ -0,0 +1,60 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftMaterialDetail.entity.ShiftMaterialDetail; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 移位物料明细Mapper接口 + * + * @author gen + * @date 2024-07-02 + */ +public interface ShiftMaterialDetailMapper extends BaseMapper +{ + /** + * 查询移位物料明细列表 + */ + public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO); + + public List queryListPDA(ShiftMaterialDetailDO shiftMaterialDetailDO); + /** + * 查询移位物料明细列表按照移位单号分组查询 + */ + public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO); + + @Transactional(rollbackFor = Exception.class) + public Boolean updateShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 获取移位单仓库,库区,库位 + */ + public ShiftMaterialDetailPO getShiftMaterialDetailPO(ShiftMaterialDetailDO shiftMaterialDetailDO); + + + /** + * 判断仓库,库区,库位是否存在 + */ + public MaterialInventoryPO getMaterialInventoryPO(ShiftMaterialDetailDO shiftMaterialDetailDO); + + /** + * 获取条数 + */ + public Integer selectCountGroup(Long materialBaseInfoId); + + /** + * 查询详情 + */ + public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO); + + + + public int updateCheckDetail(ShiftManageDO shiftManageDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/persistence/ShiftMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/persistence/ShiftMaterialDetailImpl.java new file mode 100644 index 000000000..53ec7af7b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/persistence/ShiftMaterialDetailImpl.java @@ -0,0 +1,409 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.domain.cache.SystemServiceCacheUtil; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.domain.shiftMaterialDetail.entity.ShiftMaterialDetail; +import com.mhd.wms.domain.shiftMaterialDetail.repository.facade.IShiftMaterialDetailService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.mapper.ShiftMaterialDetailMapper; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 移位物料明细Service业务层处理 + * + * @author gen + * @date 2024-07-02 + */ +@Service +public class ShiftMaterialDetailImpl extends ServiceImpl implements IShiftMaterialDetailService { + @Autowired + private ShiftMaterialDetailMapper shiftMaterialDetailMapper; + + @Autowired + private IMaterialInventoryService materialInventoryService; + + @Autowired + private MaterialInventoryMapper materialInventoryMapper; + + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + + + /** + * 查询移位物料明细列表 + */ + @Override + public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailMapper.queryList(shiftMaterialDetailDO); + } + + /** + * 查询物料明细列表 + */ + @Override + public List queryListChildren(ShiftMaterialDetailDO shiftMaterialDetailDO) { + List shiftMaterialDetailPOList = shiftMaterialDetailMapper.queryList(shiftMaterialDetailDO); + + // 获取查询的层级 + List shiftMaterialDetailPOParentList = shiftMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + shiftMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), shiftMaterialDetailPOList, 2))); + return shiftMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List shiftMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = shiftMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), shiftMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + @Override + public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailMapper.queryGroupList(shiftMaterialDetailDO); + } + + /** + * 新增移位物料明细 + */ + @Override + public Boolean insert(ShiftMaterialDetailDO shiftMaterialDetailDO) { + ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); + BeanUtils.copyProperties(shiftMaterialDetailDO, shiftMaterialDetail); + Boolean save = this.save(shiftMaterialDetail); + return save; + } + + /** + * 修改移位物料明细 + */ + @Override + public Boolean update(ShiftMaterialDetailDO shiftMaterialDetailDO) { + ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); + BeanUtils.copyProperties(shiftMaterialDetailDO, shiftMaterialDetail); + return this.updateById(shiftMaterialDetail); + } + + /** + * 批量删除移位物料明细 + */ + @Override + public Boolean delete(Long[] shiftIoDetailIds) { + List list = new ArrayList<>(); + for (Long id : shiftIoDetailIds) { + ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); + shiftMaterialDetail.setShiftIoDetailId(id); + shiftMaterialDetail.setDelFlag(2); + list.add(shiftMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改移位物料明细 + */ + @Override + public ShiftMaterialDetailPO getInfo(Long shiftIoDetailId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + // 按照物料名称排序 + lqw.eq(ShiftMaterialDetail::getShiftIoDetailId, shiftIoDetailId).orderByAsc(ShiftMaterialDetail::getMaterialName); + ShiftMaterialDetail shiftMaterialDetail = shiftMaterialDetailMapper.selectOne(lqw); + ShiftMaterialDetailPO shiftMaterialDetailPO = new ShiftMaterialDetailPO(); + BeanUtils.copyProperties(shiftMaterialDetail, shiftMaterialDetailPO); + return shiftMaterialDetailPO; + } + + @Override + public ShiftMaterialDetailPO getShiftMaterialDetailPO(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailMapper.getShiftMaterialDetailPO(shiftMaterialDetailDO); + } + + @Override + public MaterialInventoryPO getMaterialInventoryPO(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailMapper.getMaterialInventoryPO(shiftMaterialDetailDO); + } + + + @Override + public Boolean updateMaterialInventory(ShiftMaterialDetailDO shiftMaterialDetailDO) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(MaterialInventory::getWarehouseId, shiftMaterialDetailDO.getOldWarehouseId()) + .eq(MaterialInventory::getStorageSectionId, shiftMaterialDetailDO.getOldStorageSectionId()) + .eq(MaterialInventory::getStorageLocationId, shiftMaterialDetailDO.getOldStorageLocationId()); + MaterialInventory materialInventory = materialInventoryMapper.selectOne(lqw); + BigDecimal shiftQuantity = shiftMaterialDetailDO.getShiftQuantity(); // 物料移位数量 + //原始仓库位物料移位数量 + BigDecimal inventoryQuantity = materialInventory.getInventoryQuantity(); //库存数量 + BigDecimal allocationQuantity = materialInventory.getAllocationQuantity(); //库存可用数量 + BigDecimal newInventoryQuantity = BigDecimal.ZERO; // 新库存数量 + BigDecimal newAllocationQuantity = BigDecimal.ZERO; // 新库存可用数量 + try { + if (allocationQuantity.compareTo(shiftQuantity) >= 0) { + newInventoryQuantity = inventoryQuantity.subtract(shiftQuantity); + newAllocationQuantity = allocationQuantity.subtract(shiftQuantity); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + //当前库位的库存数量 + materialInventory.setInventoryQuantity(newInventoryQuantity); + materialInventory.setAllocationQuantity(newAllocationQuantity); + MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); + BeanUtils.copyProperties(materialInventory, materialInventoryDO); + materialInventoryMapper.updateMaterial(materialInventoryDO); + //新仓库 + LambdaQueryWrapper newLqw = new LambdaQueryWrapper<>(); + newLqw.eq(MaterialInventory::getWarehouseId, shiftMaterialDetailDO.getNewWarehouseId()) + .eq(MaterialInventory::getStorageSectionId, shiftMaterialDetailDO.getNewStorageSectionId()) + .eq(MaterialInventory::getStorageLocationId, shiftMaterialDetailDO.getNewStorageLocationId()); + MaterialInventoryDO newMaterialInventory = new MaterialInventoryDO(); + BeanUtils.copyProperties(materialInventoryMapper.selectOne(newLqw), newMaterialInventory); + BigDecimal newNewInventoryQuantity = inventoryQuantity.add(shiftQuantity); + BigDecimal newNewAllocationQuantity = allocationQuantity.add(shiftQuantity); + newMaterialInventory.setInventoryQuantity(newNewInventoryQuantity); + newMaterialInventory.setAllocationQuantity(newNewAllocationQuantity); + int update1 = materialInventoryMapper.updateMaterial(newMaterialInventory); + return update1 > 0; + } + + @Override + public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailMapper.getShiftMaterialDetail(shiftMaterialDetailDO); + } + + /** + * @description app 容器移位 + * @author ZhouGY + * @date 2024/7/30 14:24 + * @param containerShiftDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List appMoveContainShift(List containerShiftDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List materialInventoryOldList = new ArrayList<>(); + List materialInventoryNowList = new ArrayList<>(); + List shiftMaterialDetailDOList = new ArrayList<>(); + for (ContainerShiftDO containerShiftDO : containerShiftDOList){ + BigDecimal shiftQuantity = BigDecimal.ZERO; + List shiftMoveMaterialQuantityList = containerShiftDO.getChildren(); + if (CollectionUtils.isEmpty(shiftMoveMaterialQuantityList)){ + //没有移位 跳过 + continue; + } + //原库位 + MaterialInventory materialInventoryOldDb = materialInventoryMapper.selectById(containerShiftDO.getMaterialInventoryId()); + if (ObjectUtil.isNull(materialInventoryOldDb)){ + throw new ServiceException("原库位【" + containerShiftDO.getContainerTypeName() + "】不存在,不能进行移位"); + } + if (materialInventoryOldDb.getInventoryQuantity().compareTo(shiftQuantity) < 0){ + throw new ServiceException("容器【" + containerShiftDO.getContainerTypeName() + "】下的物料库存不足,不能进行移位"); + } + MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO(); + materialInventoryDOOld.setMaterialInventoryId(containerShiftDO.getMaterialInventoryId()); + materialInventoryDOOld.setInventoryQuantity(shiftQuantity); + materialInventoryDOOld.setAllocationQuantity(shiftQuantity); + materialInventoryOldList.add(materialInventoryDOOld); + for (ShiftMoveMaterialQuantityPO shiftMoveMaterialQuantityPO : shiftMoveMaterialQuantityList) { + if (ObjectUtil.isNull(shiftMoveMaterialQuantityPO.getShiftQuantity()) || shiftMoveMaterialQuantityPO.getShiftQuantity().compareTo(BigDecimal.ZERO) == 0){ + //没有移位 跳过 + continue; + } + //新库位 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MaterialInventory::getWarehouseId, SystemServiceCacheUtil.getAssociationWarehouseCache(SecurityUtils.getLoginUser().getUserid()).getWarehouseId()); // 仓库 + queryWrapper.eq(MaterialInventory::getStorageSectionId, shiftMoveMaterialQuantityPO.getNewStorageSectionId()); // 库区 + queryWrapper.eq(MaterialInventory::getStorageLocationId, shiftMoveMaterialQuantityPO.getNewStorageLocationId()); // 库位 + queryWrapper.eq(MaterialInventory::getMaterialBaseInfoId, containerShiftDO.getMaterialBaseInfoId()); // 物料基础信息id + queryWrapper.eq(MaterialInventory::getBatchNumber, containerShiftDO.getBatchNumber()); // 批次号 + queryWrapper.eq(MaterialInventory::getMaterialStatusCode, containerShiftDO.getMaterialStatusCode()); // 物料状态 + if (!ObjectUtil.isNull(shiftMoveMaterialQuantityPO.getContainerId())){ + queryWrapper.eq(MaterialInventory::getContainerId,shiftMoveMaterialQuantityPO.getContainerId()); + } + MaterialInventory materialInventoryDb = materialInventoryMapper.selectOne(queryWrapper); + if (ObjectUtil.isNull(materialInventoryDb)){ + MaterialInventoryDO materialInventoryDONow = new MaterialInventoryDO(); + BeanUtils.copyProperties(containerShiftDO, materialInventoryDONow); + materialInventoryDONow.setStorageSectionId(shiftMoveMaterialQuantityPO.getNewStorageSectionId()); + materialInventoryDONow.setStorageCode(shiftMoveMaterialQuantityPO.getNewStorageCode()); + materialInventoryDONow.setStorageName(shiftMoveMaterialQuantityPO.getNewStorageName()); + materialInventoryDONow.setStorageLocationId(shiftMoveMaterialQuantityPO.getNewStorageLocationId()); + materialInventoryDONow.setStorageLocationCode(shiftMoveMaterialQuantityPO.getNewStorageLocationCode()); + materialInventoryDONow.setStorageLocationName(shiftMoveMaterialQuantityPO.getNewStorageLocationName()); + materialInventoryDONow.setContainerId(shiftMoveMaterialQuantityPO.getContainerId()); + materialInventoryDONow.setContainerCode(shiftMoveMaterialQuantityPO.getContainerCode()); + materialInventoryDONow.setContainerType(shiftMoveMaterialQuantityPO.getContainerType()); + materialInventoryDONow.setContainerTypeName(shiftMoveMaterialQuantityPO.getContainerTypeName()); + materialInventoryDONow.setInventoryQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + materialInventoryDONow.setAllocationQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + materialInventoryDONow.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialInventoryDONow.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialInventoryDONow.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialInventoryDONow.setCreateBy(loginUser.getUserid()); + materialInventoryDONow.setCreateByName(loginUser.getUsername()); + materialInventoryDONow.setCreateTime(new Date()); + materialInventoryNowList.add(materialInventoryDONow); + }else { + MaterialInventoryDO materialInventoryDONow = new MaterialInventoryDO(); + materialInventoryDONow.setMaterialInventoryId(materialInventoryDb.getMaterialInventoryId()); + materialInventoryDONow.setInventoryQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + materialInventoryDONow.setAllocationQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + materialInventoryNowList.add(materialInventoryDONow); + } + shiftQuantity = shiftQuantity.add(shiftMoveMaterialQuantityPO.getShiftQuantity()); + ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO(); + shiftMaterialDetailDO.setMaterialInventoryId(materialInventoryOldDb.getMaterialInventoryId()); + shiftMaterialDetailDO.setQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + shiftMaterialDetailDO.setShiftQuantity(shiftMoveMaterialQuantityPO.getShiftQuantity()); + shiftMaterialDetailDO.setNewStorageLocationId(shiftMoveMaterialQuantityPO.getNewStorageLocationId()); + shiftMaterialDetailDO.setContainerId(shiftMoveMaterialQuantityPO.getContainerId()); + shiftMaterialDetailDOList.add(shiftMaterialDetailDO); + } + } + //目标库位 需要增加的库存 + if (!CollectionUtils.isEmpty(materialInventoryNowList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryNowList, 1); + } + //原库位 需要减少的库存 + if (!CollectionUtils.isEmpty(materialInventoryOldList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryOldList, 2); + } + return shiftMaterialDetailDOList; + } + + /** + * @description 批量修改物料信息 + * @author ZhouGY + * @date 2024/7/30 10:42 + * @param shiftManageDO + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void batchShiftUpdate(ShiftManageDO shiftManageDO) { + List shiftMaterialDetailDOList = shiftManageDO.getShiftMaterialDetailList(); + if (CollectionUtils.isEmpty(shiftMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改物料信息 + List shiftMaterialDetailList = new ArrayList<>(); + List materialDetailSerialNumberList = new ArrayList<>(); + for (ShiftMaterialDetailDO shiftMaterialDetailDO : shiftMaterialDetailDOList){ + //序列号 + if (shiftMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(shiftMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + shiftMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(shiftMaterialDetailDO)); + } + //判断是否存在子项 + List shiftMaterialDetailDOChildList = shiftMaterialDetailDO.getChildren(); + List shiftMaterialDetailListChild = new ArrayList<>(); + if (!CollectionUtils.isEmpty(shiftMaterialDetailDOChildList)){ + for (ShiftMaterialDetailDO shiftMaterialDetailDOChild : shiftMaterialDetailDOChildList){ + ShiftMaterialDetail shiftMaterialDetailChild = new ShiftMaterialDetail(); + BeanUtils.copyProperties(shiftMaterialDetailDOChild, shiftMaterialDetailChild); + if(ObjectUtil.isNotNull(shiftMaterialDetailChild.getShiftIoDetailId()) && shiftMaterialDetailChild.getShiftIoDetailId() != 0 ){ + shiftMaterialDetailChild.setUpdateBy(loginUser.getUserid()); + shiftMaterialDetailChild.setUpdateByName(loginUser.getUsername()); + shiftMaterialDetailChild.setUpdateTime(new Date()); + }else { + shiftMaterialDetailChild.setCreateBy(loginUser.getUserid()); + shiftMaterialDetailChild.setCreateByName(loginUser.getUsername()); + shiftMaterialDetailChild.setCreateTime(new Date()); + } + shiftMaterialDetailListChild.add(shiftMaterialDetailChild); + //序列号 + if (shiftMaterialDetailDO.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(shiftMaterialDetailDOChild.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + shiftMaterialDetailDOChild.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(shiftMaterialDetailDOChild)); + } + } + } + ShiftMaterialDetail shiftMaterialDetail = new ShiftMaterialDetail(); + BeanUtils.copyProperties(shiftMaterialDetailDO, shiftMaterialDetail); + shiftMaterialDetail.setUpdateBy(loginUser.getUserid()); + shiftMaterialDetail.setUpdateByName(loginUser.getUsername()); + shiftMaterialDetail.setUpdateTime(new Date()); + shiftMaterialDetailList.add(shiftMaterialDetail); + //子集不为空 + if (!CollectionUtils.isEmpty(shiftMaterialDetailListChild)){ + shiftMaterialDetailList.addAll(shiftMaterialDetailListChild); + } + } + //保存物料明细信息 + saveOrUpdateBatch(shiftMaterialDetailList); + //批量新增序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + outMaterialDetailSerialNumberService.batchDeleteAndInsert(materialDetailSerialNumberList); + } + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param shiftMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumber(ShiftMaterialDetailDO shiftMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outMaterialDetailSerialNumberList = new ArrayList<>(); + List outMaterialDetailSerialNumberDOList = shiftMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(outMaterialDetailSerialNumberDOList)){ + for (OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO : outMaterialDetailSerialNumberDOList){ + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + BeanUtils.copyProperties(shiftMaterialDetailDO, outMaterialDetailSerialNumber); + BeanUtils.copyProperties(outMaterialDetailSerialNumberDO, outMaterialDetailSerialNumber, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailSerialNumberDO)); + outMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + outMaterialDetailSerialNumber.setOrderNumber(shiftMaterialDetailDO.getShiftNumber()); + outMaterialDetailSerialNumber.setMaterialDetailUniqueId(shiftMaterialDetailDO.getUniqueId()); + outMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + outMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + outMaterialDetailSerialNumber.setCreateTime(new Date()); + outMaterialDetailSerialNumberList.add(outMaterialDetailSerialNumber); + } + } + return outMaterialDetailSerialNumberList; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMaterialDetailPO.java new file mode 100644 index 000000000..6bd63cb60 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMaterialDetailPO.java @@ -0,0 +1,254 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 移位物料明细对象 shift_material_detail + * + * @author gen + * @date 2024-07-02 + */ + +@Data +@ApiModel(value = "移位物料明细对象", description = "移位物料明细响应对象") +public class ShiftMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单详情id") + private Long shiftIoDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("物料id") + @Excel(name = "物料id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("已移位数量") + @Excel(name = "已移位数量") + private BigDecimal alreadyShiftQuantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("原始仓库id") + @Excel(name = "原始仓库id") + private Long oldWarehouseId; + + @ApiModelProperty("原始仓库编码") + @Excel(name = "原始仓库编码") + private String oldWarehouseCode; + + @ApiModelProperty("原始仓库名称") + @Excel(name = "原始仓库名称") + private String oldWarehouseName; + + @ApiModelProperty("原始库区id") + @Excel(name = "原始库区id") + private Long oldStorageSectionId; + + @ApiModelProperty("原始库区编码") + @Excel(name = "原始库区编码") + private String oldStorageCode; + + @ApiModelProperty("原始库区名称") + @Excel(name = "原始库区名称") + private String oldStorageName; + + @ApiModelProperty("原始库位id") + @Excel(name = "原始库位id") + private Long oldStorageLocationId; + + @ApiModelProperty("原始库位编码") + @Excel(name = "原始库位编码") + private String oldStorageLocationCode; + + @ApiModelProperty("原始库位名称") + @Excel(name = "原始库位名称") + private String oldStorageLocationName; + + @ApiModelProperty("目标仓库id") + @Excel(name = "目标仓库id") + private Long newWarehouseId; + + @ApiModelProperty("目标仓库编码") + @Excel(name = "目标仓库编码") + private String newWarehouseCode; + + @ApiModelProperty("目标仓库名称") + @Excel(name = "目标仓库名称") + private String newWarehouseName; + + @ApiModelProperty("目标库区id") + @Excel(name = "目标库区id") + private Long newStorageSectionId; + + @ApiModelProperty("目标库区编码") + @Excel(name = "目标库区编码") + private String newStorageCode; + + @ApiModelProperty("目标库区名称") + @Excel(name = "目标库区名称") + private String newStorageName; + + @ApiModelProperty("目标库位id") + @Excel(name = "目标库位id") + private Long newStorageLocationId; + + @ApiModelProperty("目标库位编码") + @Excel(name = "目标库位编码") + private String newStorageLocationCode; + + @ApiModelProperty("目标库位名称") + @Excel(name = "目标库位名称") + private String newStorageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("移位类型") + private Integer shiftType; + + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMoveMaterialQuantityPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMoveMaterialQuantityPO.java new file mode 100644 index 000000000..6bf950637 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/po/ShiftMoveMaterialQuantityPO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ShiftMoveMaterialQuantityPO { + + @ApiModelProperty("移位单详情id") + private Long shiftIoDetailId; + + @ApiModelProperty("库存id") + @Excel(name = "库存id") + private Long materialInventoryId; + + @ApiModelProperty("目标库区id") + @Excel(name = "目标库区id") + private Long newStorageSectionId; + + @ApiModelProperty("目标库区编码") + @Excel(name = "目标库区编码") + private String newStorageCode; + + @ApiModelProperty("目标库区名称") + @Excel(name = "目标库区名称") + private String newStorageName; + + @ApiModelProperty("目标库位id") + @Excel(name = "目标库位id") + private Long newStorageLocationId; + + @ApiModelProperty("目标库位编码") + @Excel(name = "目标库位编码") + private String newStorageLocationCode; + + @ApiModelProperty("目标库位名称") + @Excel(name = "目标库位名称") + private String newStorageLocationName; + + @ApiModelProperty("移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/todo/ShiftMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/todo/ShiftMaterialDetailDO.java new file mode 100644 index 000000000..f0be6b9c3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/repository/todo/ShiftMaterialDetailDO.java @@ -0,0 +1,256 @@ +package com.mhd.wms.domain.shiftMaterialDetail.repository.todo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 移位物料明细对象 shift_material_detail + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("移位单详情id") + private Long shiftIoDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("物料id") + @Excel(name = "物料id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已移位数量") + @Excel(name = "已移位数量") + private BigDecimal alreadyShiftQuantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("原始仓库id") + @Excel(name = "原始仓库id") + private Long oldWarehouseId; + + @ApiModelProperty("原始仓库编码") + @Excel(name = "原始仓库编码") + private String oldWarehouseCode; + + @ApiModelProperty("原始仓库名称") + @Excel(name = "原始仓库名称") + private String oldWarehouseName; + + @ApiModelProperty("原始库区id") + @Excel(name = "原始库区id") + private Long oldStorageSectionId; + + @ApiModelProperty("原始库区编码") + @Excel(name = "原始库区编码") + private String oldStorageCode; + + @ApiModelProperty("原始库区名称") + @Excel(name = "原始库区名称") + private String oldStorageName; + + @ApiModelProperty("原始库位id") + @Excel(name = "原始库位id") + private Long oldStorageLocationId; + + @ApiModelProperty("原始库位编码") + @Excel(name = "原始库位编码") + private String oldStorageLocationCode; + + @ApiModelProperty("原始库位名称") + @Excel(name = "原始库位名称") + private String oldStorageLocationName; + + @ApiModelProperty("目标仓库id") + @Excel(name = "目标仓库id") + private Long newWarehouseId; + + @ApiModelProperty("目标仓库编码") + @Excel(name = "目标仓库编码") + private String newWarehouseCode; + + @ApiModelProperty("目标仓库名称") + @Excel(name = "目标仓库名称") + private String newWarehouseName; + + @ApiModelProperty("目标库区id") + @Excel(name = "目标库区id") + private Long newStorageSectionId; + + @ApiModelProperty("目标库区编码") + @Excel(name = "目标库区编码") + private String newStorageCode; + + @ApiModelProperty("目标库区名称") + @Excel(name = "目标库区名称") + private String newStorageName; + + @ApiModelProperty("目标库位id") + @Excel(name = "目标库位id") + private Long newStorageLocationId; + + @ApiModelProperty("目标库位编码") + @Excel(name = "目标库位编码") + private String newStorageLocationCode; + + @ApiModelProperty("目标库位名称") + @Excel(name = "目标库位名称") + private String newStorageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("移位类型") + private Integer shiftType; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/service/ShiftMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/service/ShiftMaterialDetailDomainService.java new file mode 100644 index 000000000..32ba9f354 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/shiftMaterialDetail/service/ShiftMaterialDetailDomainService.java @@ -0,0 +1,90 @@ +package com.mhd.wms.domain.shiftMaterialDetail.service; + +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.shiftManage.repository.facade.IShiftManageService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.facade.IShiftMaterialDetailService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 移位物料明细 + * + * @author gen + * @date 2024-07-02 + */ +@Service +@Slf4j +public class ShiftMaterialDetailDomainService { + + @Autowired + private IShiftMaterialDetailService shiftMaterialDetailService; + @Autowired + private IShiftManageService shiftManageService; + + + /** + * 分页查询移位物料明细列表 + */ + public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.queryList(shiftMaterialDetailDO); + } + + /** + * 分页查询分组移位物料明细列表 + */ + public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.queryGroupList(shiftMaterialDetailDO); + } + + + /** + * 新增移位物料明细 + */ + public Boolean insert(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.insert(shiftMaterialDetailDO); + } + + /** + * 修改移位物料明细 + */ + public Boolean update(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.update(shiftMaterialDetailDO); + } + + /** + * 批量删除移位物料明细 + */ + public Boolean delete(Long[] shiftIoDetailIds) { + return shiftMaterialDetailService.delete(shiftIoDetailIds); + } + + /** + * 获取移位物料明细详细信息 + */ + public ShiftMaterialDetailPO getInfo(Long shiftIoDetailId) { + return shiftMaterialDetailService.getInfo(shiftIoDetailId); + } + + public ShiftMaterialDetailPO getShiftMaterialDetailPO(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.getShiftMaterialDetailPO(shiftMaterialDetailDO); + } + + public MaterialInventoryPO getMaterialInventoryPO(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.getMaterialInventoryPO(shiftMaterialDetailDO); + } + + + public Boolean updateMaterialInventory(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.updateMaterialInventory(shiftMaterialDetailDO); + } + public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO) { + return shiftMaterialDetailService.getShiftMaterialDetail(shiftMaterialDetailDO); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/entity/SowingDistributionDetails.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/entity/SowingDistributionDetails.java new file mode 100644 index 000000000..5d20f7d8c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/entity/SowingDistributionDetails.java @@ -0,0 +1,163 @@ +package com.mhd.wms.domain.sowingDistributionDetails.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 播种分货明细表对象 wave_out_order_relevance + * + * @author gen + * @date 2024-06-05 + */ + +@Data +public class SowingDistributionDetails extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货详情id") + @TableId(type = IdType.AUTO) + private Long sowingDistributionDetailsId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("分货类型:1-播种分货 2-按单分货") + @Excel(name = "分货类型") + private Integer type; + + @ApiModelProperty("出库单物料明细id") + @Excel(name = "出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙号") + @Excel(name = "播种墙号") + private Integer sowingWallNumber; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("播种状态:1-未播种,2-播种中,3-播种完成") + @Excel(name = "播种状态:1-未播种,2-播种中,3-播种完成") + private Integer status; + + @ApiModelProperty(value = "播种人用户ID") + private Long sowingBy; + + @ApiModelProperty(name = "播种人姓名") + private String sowingByName; + + @ApiModelProperty(value = "播种时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date sowingTime; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/facade/ISowingDistributionDetailsService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/facade/ISowingDistributionDetailsService.java new file mode 100644 index 000000000..6c05dc362 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/facade/ISowingDistributionDetailsService.java @@ -0,0 +1,83 @@ +package com.mhd.wms.domain.sowingDistributionDetails.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.sowingDistributionDetails.entity.SowingDistributionDetails; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO; +import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO; + +import java.util.List; + +/** + * 播种分货明细表Service接口 + * + * @author gen + * @date 2024-06-05 + */ +public interface ISowingDistributionDetailsService extends IService +{ + /** + * 分页查询播种分货明细表列表 + */ + public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO); + + /** + * 新增播种分货明细表 + */ + public Boolean insert(SowingDistributionDetailsDO sowingDistributionDetailsDO); + + /** + * 批量新增播种分货明细表 + */ + public Boolean batchInsert(String waveOrderNumber, List outMaterialDetailList); + + /** + * 修改播种分货明细表 + */ + public Boolean update(SowingDistributionDetailsDO sowingDistributionDetailsDO); + + /** + * 批量删除播种分货明细表 + */ + public Boolean delete(Long[] waveOutOrderRelevanceIds); + + + /** + * 查询播种分货明细表 + */ + public SowingDistributionDetailsPO getInfo(Long waveOutOrderRelevanceId); + + /** + * @description 播种分单 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + public List allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO); + + /** + * @description 物料扫码 将物料分配至对应的播种墙 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + public SowingDistributionDetailsPO materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO); + + /** + * @description 按单分货 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + public List allocationByOrder(AllocationByOrderDO allocationByOrderDO); + + /** + * @description 物料扫码 将物料分配至对应的出库单物料明细 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + public SowingDistributionDetailsPO materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/mapper/SowingDistributionDetailsMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/mapper/SowingDistributionDetailsMapper.java new file mode 100644 index 000000000..07a3912fa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/mapper/SowingDistributionDetailsMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.sowingDistributionDetails.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.sowingDistributionDetails.entity.SowingDistributionDetails; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; + +import java.util.List; + +/** + * 播种分货明细表Mapper接口 + * + * @author gen + * @date 2024-06-05 + */ +public interface SowingDistributionDetailsMapper extends BaseMapper +{ + /** + * 查询播种分货明细表列表 + */ + public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/persistence/SowingDistributionDetailsImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/persistence/SowingDistributionDetailsImpl.java new file mode 100644 index 000000000..6cbb43dbd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/persistence/SowingDistributionDetailsImpl.java @@ -0,0 +1,359 @@ +package com.mhd.wms.domain.sowingDistributionDetails.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.mapper.OutMaterialDetailSerialNumberMapper; +import com.mhd.wms.domain.sowingDistributionDetails.entity.SowingDistributionDetails; +import com.mhd.wms.domain.sowingDistributionDetails.repository.facade.ISowingDistributionDetailsService; +import com.mhd.wms.domain.sowingDistributionDetails.repository.mapper.SowingDistributionDetailsMapper; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.domain.sowingWall.entity.SowingWall; +import com.mhd.wms.domain.sowingWall.repository.mapper.SowingWallMapper; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper; +import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.mapper.WaveOrderMapper; +import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.mapper.WaveOutOrderMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 播种分货明细表Service业务层处理 + * + * @author gen + * @date 2024-06-05 + */ +@Service +public class SowingDistributionDetailsImpl extends ServiceImpl implements ISowingDistributionDetailsService { + @Autowired + private SowingDistributionDetailsMapper sowingDistributionDetailsMapper; + @Autowired + private WaveOrderMapper waveOrderMapper; + @Autowired + private SowingWallMapper sowingWallMapper; + @Autowired + private OutMaterialDetailSerialNumberMapper outMaterialDetailSerialNumberMapper; + @Autowired + private OutMaterialDetailMapper outMaterialDetailMapper; + @Autowired + private StockOutOrderMapper stockOutOrderMapper; + @Autowired + private WaveOutOrderMapper wavesOutOrderMapper; + + /** + * 查询播种分货明细表列表 + */ + @Override + public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO) + { + return sowingDistributionDetailsMapper.queryList(sowingDistributionDetailsDO); + } + + /** + * 新增播种分货明细表 + */ + @Override + public Boolean insert(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + SowingDistributionDetails sowingDistributionDetails = new SowingDistributionDetails(); + BeanUtils.copyProperties(sowingDistributionDetailsDO, sowingDistributionDetails); + return this.save(sowingDistributionDetails); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(String waveOrderNumber, List outMaterialDetailList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List sowingDistributionDetailsList = new ArrayList<>(); + for (OutMaterialDetail outMaterialDetail : outMaterialDetailList){ + SowingDistributionDetails SowingDistributionDetails = new SowingDistributionDetails(); + SowingDistributionDetails.setOrganizationId(outMaterialDetail.getOrganizationId()); + SowingDistributionDetails.setOrganizationName(outMaterialDetail.getOrganizationName()); + SowingDistributionDetails.setTopOrganizationId(outMaterialDetail.getTopOrganizationId()); + SowingDistributionDetails.setOrderNumber(waveOrderNumber); + SowingDistributionDetails.setMaterialDetailId(outMaterialDetail.getMaterialDetailId()); + SowingDistributionDetails.setMaterialBaseInfoId(outMaterialDetail.getMaterialBaseInfoId()); + SowingDistributionDetails.setMaterialCode(outMaterialDetail.getMaterialCode()); + SowingDistributionDetails.setMaterialName(outMaterialDetail.getMaterialName()); + SowingDistributionDetails.setBarCode(outMaterialDetail.getBarCode()); + SowingDistributionDetails.setQuantity(outMaterialDetail.getQuantity()); + SowingDistributionDetails.setAllocationQuantity(outMaterialDetail.getAllocationQuantity()); + SowingDistributionDetails.setPickingQuantity(outMaterialDetail.getPickingQuantity()); + SowingDistributionDetails.setCreateBy(loginUser.getUserid()); + SowingDistributionDetails.setCreateByName(loginUser.getUsername()); + SowingDistributionDetails.setCreateTime(new Date()); + sowingDistributionDetailsList.add(SowingDistributionDetails); + } + return saveBatch(sowingDistributionDetailsList); + } + + /** + * 修改播种分货明细表 + */ + @Override + public Boolean update(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + SowingDistributionDetails sowingDistributionDetails = new SowingDistributionDetails(); + BeanUtils.copyProperties(sowingDistributionDetailsDO, sowingDistributionDetails); + return this.updateById(sowingDistributionDetails); + } + + /** + * 批量删除播种分货明细表 + */ + @Override + public Boolean delete(Long[] waveOutOrderRelevanceIds ) { + List list = new ArrayList<>(); + for (Long id : waveOutOrderRelevanceIds) { + SowingDistributionDetails sowingDistributionDetails = new SowingDistributionDetails(); + sowingDistributionDetails.setSowingDistributionDetailsId(id); + sowingDistributionDetails.setDelFlag(2); + list.add(sowingDistributionDetails); + } + return this.updateBatchById(list); + } + + /** + * 修改播种分货明细表 + */ + @Override + public SowingDistributionDetailsPO getInfo(Long waveOutOrderRelevanceId) { + SowingDistributionDetails sowingDistributionDetails = this.getById(waveOutOrderRelevanceId); + SowingDistributionDetailsPO sowingDistributionDetailsPO = new SowingDistributionDetailsPO(); + BeanUtils.copyProperties(sowingDistributionDetails, sowingDistributionDetailsPO); + return sowingDistributionDetailsPO; + } + + /** + * @description 播种分单 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO) { + WaveOrder waveOrder = waveOrderMapper.selectOne(new QueryWrapper().lambda().eq(WaveOrder::getWaveOrderNumber, allocationSowingWallDO.getWaveOrderNumber())); + if (waveOrder == null){ + throw new ServiceException("波次单不存在"); + } + if (waveOrder.getStatus() < 6){ + throw new ServiceException("波次单未拣货完成,不能进行分货"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //获取该波次拣货单下的出库单单号 + SowingDistributionDetailsDO sowingDistributionDetailsDO = new SowingDistributionDetailsDO(); + sowingDistributionDetailsDO.setOrderNumber(waveOrder.getWaveOrderNumber()); + List waveOutOrderRelevanceList = queryList(sowingDistributionDetailsDO); + SowingWall sowingWall = sowingWallMapper.selectOne(new QueryWrapper().lambda() + .eq(SowingWall::getSowingWallCode, allocationSowingWallDO.getSowingWallCode()) + .eq(SowingWall::getDelFlag, 1)); + if (sowingWall == null){ + throw new ServiceException("播种墙不存在"); + } + //最大格数 + int maxNum = sowingWall.getColumnNumber() * sowingWall.getLayerNum(); + //所需格数 + int needNum = (int) waveOutOrderRelevanceList.stream().map(SowingDistributionDetailsPO::getOrderNumber).distinct().count(); + if (maxNum < needNum){ + throw new ServiceException("播种墙容量不足"); + } + int sowingNum = 1; + List outOrderNumberList = new ArrayList<>(); + List sowingDistributionDetailsListByUpdate = new ArrayList<>(); + for (SowingDistributionDetailsPO sowingDistributionDetailsPO : waveOutOrderRelevanceList){ + sowingDistributionDetailsPO.setSowingWallNumber(sowingNum); + sowingDistributionDetailsPO.setSowingWallCode(sowingWall.getSowingWallCode()); + SowingDistributionDetails sowingDistributionDetails = new SowingDistributionDetails(); + sowingDistributionDetails.setSowingDistributionDetailsId(sowingDistributionDetailsPO.getSowingDistributionDetailsId()); + sowingDistributionDetails.setSowingWallNumber(sowingDistributionDetailsPO.getSowingWallNumber()); + sowingDistributionDetails.setSowingWallCode(sowingDistributionDetailsPO.getSowingWallCode()); + sowingDistributionDetails.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetails.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetails.setUpdateTime(new Date()); + sowingDistributionDetailsListByUpdate.add(sowingDistributionDetails); + //按出库单分配墙号 + if (!outOrderNumberList.contains(sowingDistributionDetailsPO.getOrderNumber())){ + outOrderNumberList.add(sowingDistributionDetailsPO.getOrderNumber()); + sowingNum += 1; + } + } + updateBatchById(sowingDistributionDetailsListByUpdate); + return waveOutOrderRelevanceList; + } + + /** + * @description 物料扫码 将物料分配至对应的播种墙 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public SowingDistributionDetailsPO materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO) { + WaveOrder waveOrder = waveOrderMapper.selectOne(new QueryWrapper().lambda().eq(WaveOrder::getWaveOrderNumber, allocationSowingWallDO.getWaveOrderNumber())); + if (waveOrder == null){ + throw new ServiceException("波次单不存在"); + } + if (waveOrder.getStatus() < 6){ + throw new ServiceException("波次单未拣货完成,不能进行播种分配"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + SowingDistributionDetails sowingDistributionDetails = null; + if (allocationSowingWallDO.getSerialNumberManage() == 1){ + sowingDistributionDetails = sowingDistributionDetailsMapper.selectOne(new QueryWrapper().lambda() + .eq(SowingDistributionDetails::getOrderNumber, allocationSowingWallDO.getWaveOrderNumber()) + .lt(SowingDistributionDetails::getStatus, 3) + .eq(SowingDistributionDetails::getMaterialCode, allocationSowingWallDO.getMaterialNumber()) + .or() + .eq(SowingDistributionDetails::getBarCode, allocationSowingWallDO.getMaterialNumber()) + .orderByAsc(SowingDistributionDetails::getMaterialDetailId) + .last("limit 1")); + }else { + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = outMaterialDetailSerialNumberMapper.selectOne(new QueryWrapper().lambda() + .eq(OutMaterialDetailSerialNumber::getSerialNumber, allocationSowingWallDO.getMaterialNumber()) + .eq(OutMaterialDetailSerialNumber::getType, 1)); + if (outMaterialDetailSerialNumber == null){ + throw new ServiceException("序列号不存在"); + } + OutMaterialDetail outMaterialDetail = outMaterialDetailMapper.selectOne(new QueryWrapper().lambda(). + eq(OutMaterialDetail::getUniqueId, outMaterialDetailSerialNumber.getMaterialDetailUniqueId())); + if (outMaterialDetail == null){ + throw new ServiceException("物料不存在"); + } + sowingDistributionDetails = sowingDistributionDetailsMapper.selectOne(new QueryWrapper().lambda() + .eq(SowingDistributionDetails::getOrderNumber, allocationSowingWallDO.getWaveOrderNumber()) + .lt(SowingDistributionDetails::getStatus, 3) + .eq(SowingDistributionDetails::getMaterialDetailId, outMaterialDetail.getMaterialDetailId()) + .orderByAsc(SowingDistributionDetails::getMaterialDetailId) + .last("limit 1")); + } + if (sowingDistributionDetails == null){ + throw new ServiceException("未匹配到对应出库单,请检查物流信息是否有误"); + } + sowingDistributionDetails.setSowingQuantity(sowingDistributionDetails.getSowingQuantity().add(sowingDistributionDetails.getUnitNumber())); + if (sowingDistributionDetails.getPickingQuantity().compareTo(sowingDistributionDetails.getSowingQuantity()) == 0){ + sowingDistributionDetails.setStatus(3); + }else { + sowingDistributionDetails.setStatus(2); + } + sowingDistributionDetails.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetails.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetails.setUpdateTime(new Date()); + sowingDistributionDetailsMapper.updateById(sowingDistributionDetails); + SowingDistributionDetailsPO sowingDistributionDetailsPO = new SowingDistributionDetailsPO(); + BeanUtils.copyProperties(sowingDistributionDetails, sowingDistributionDetailsPO); + BigDecimal ratioQuantity = sowingDistributionDetails.getSowingQuantity().divide(sowingDistributionDetails.getPickingQuantity(), 2, RoundingMode.HALF_UP); + sowingDistributionDetailsPO.setRatioQuantity(ratioQuantity); + return sowingDistributionDetailsPO; + } + + /** + * @description 按单分货 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + @Override + public List allocationByOrder(AllocationByOrderDO allocationByOrderDO) { + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda().eq(StockOutOrder::getOutOrderNumber, allocationByOrderDO.getOutOrderNumber())); + if (stockOutOrder == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrder.getStatus() != 7){ + throw new ServiceException("出库单状态不是拣货完成"); + } + List waveOutOrderList = wavesOutOrderMapper.selectList(new QueryWrapper().lambda() + .eq(WaveOutOrder::getOutOrderNumber, stockOutOrder.getOutOrderNumber()) + .eq(WaveOutOrder::getDelFlag, 1)); + if (CollectionUtils.isEmpty(waveOutOrderList)){ + throw new ServiceException("非波次拣货单,不能进行播种分配"); + } + //获取该波次拣货单下的出库单单号 + SowingDistributionDetailsDO sowingDistributionDetailsDO = new SowingDistributionDetailsDO(); + sowingDistributionDetailsDO.setOrderNumber(waveOutOrderList.get(0).getWaveOrderNumber()); + sowingDistributionDetailsDO.setStatus(1); + List sowingDistributionDetailsPOList = queryList(sowingDistributionDetailsDO); + if (CollectionUtils.isEmpty(sowingDistributionDetailsPOList)){ + throw new ServiceException("该波次拣货单未分配拣货数量,不能进行播种分配"); + } + return queryList(sowingDistributionDetailsDO); + } + + /** + * @description 物料扫码 将物料分配至对应的出库单物料明细 + * @author ZhouGY + * @date 2024/6/5 14:08 + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public SowingDistributionDetailsPO materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO) { + StockOutOrder stockOutOrder = stockOutOrderMapper.selectOne(new QueryWrapper().lambda().eq(StockOutOrder::getOutOrderNumber, allocationByOrderDO.getOutOrderNumber())); + if (stockOutOrder == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrder.getStatus() < 6){ + throw new ServiceException("出库单未拣货完成,不能进行分货"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + SowingDistributionDetails sowingDistributionDetails = sowingDistributionDetailsMapper.selectOne(new QueryWrapper().lambda() + .eq(SowingDistributionDetails::getOrderNumber, allocationByOrderDO.getOutOrderNumber()) + .lt(SowingDistributionDetails::getStatus, 3) + .eq(SowingDistributionDetails::getMaterialCode, allocationByOrderDO.getMaterialNumber()) + .or() + .eq(SowingDistributionDetails::getBarCode, allocationByOrderDO.getMaterialNumber()) + .orderByAsc(SowingDistributionDetails::getMaterialDetailId) + .last("limit 1")); + if (sowingDistributionDetails == null){ + throw new ServiceException("未匹配到对应出库单,请检查物流信息是否有误"); + } + if (sowingDistributionDetails.getStatus() > 1){ + if (!allocationByOrderDO.getStorageLocationId().equals(sowingDistributionDetails.getStorageLocationId())){ + throw new ServiceException("同一物料需要同一集货位"); + } + } + if (allocationByOrderDO.getSingleScan() == 2){ + sowingDistributionDetails.setSowingQuantity(sowingDistributionDetails.getSowingQuantity().add(sowingDistributionDetails.getUnitNumber())); + }else { + sowingDistributionDetails.setSowingQuantity(sowingDistributionDetails.getSowingQuantity().add(allocationByOrderDO.getQuantity())); + } + if (sowingDistributionDetails.getPickingQuantity().compareTo(sowingDistributionDetails.getSowingQuantity()) == 0){ + sowingDistributionDetails.setStatus(3); + }else { + sowingDistributionDetails.setStatus(2); + } + sowingDistributionDetails.setStorageSectionId(allocationByOrderDO.getStorageSectionId()); + sowingDistributionDetails.setStorageCode(allocationByOrderDO.getStorageCode()); + sowingDistributionDetails.setStorageName(allocationByOrderDO.getStorageName()); + sowingDistributionDetails.setStorageLocationId(allocationByOrderDO.getStorageLocationId()); + sowingDistributionDetails.setStorageLocationCode(allocationByOrderDO.getStorageLocationCode()); + sowingDistributionDetails.setStorageLocationName(allocationByOrderDO.getStorageLocationName()); + sowingDistributionDetails.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetails.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetails.setUpdateTime(new Date()); + updateById(sowingDistributionDetails); + SowingDistributionDetailsPO sowingDistributionDetailsPO = new SowingDistributionDetailsPO(); + BeanUtils.copyProperties(sowingDistributionDetails, sowingDistributionDetailsPO); + BigDecimal ratioQuantity = sowingDistributionDetails.getSowingQuantity().divide(sowingDistributionDetails.getQuantity(), 2, RoundingMode.HALF_UP); + sowingDistributionDetailsPO.setRatioQuantity(ratioQuantity); + return sowingDistributionDetailsPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/po/SowingDistributionDetailsPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/po/SowingDistributionDetailsPO.java new file mode 100644 index 000000000..c39c0039e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/po/SowingDistributionDetailsPO.java @@ -0,0 +1,167 @@ +package com.mhd.wms.domain.sowingDistributionDetails.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 播种分货明细表对象 wave_out_order_relevance + * + * @author gen + * @date 2024-06-05 + */ + +@Data +@ApiModel(value = "播种分货明细表对象", description = "播种分货明细表响应对象") +public class SowingDistributionDetailsPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货详情id") + private Long sowingDistributionDetailsId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("分货类型:1-播种分货 2-按单分货") + @Excel(name = "分货类型") + private Integer type; + + @ApiModelProperty("行号") + @Excel(name = "行号") + private Integer lineNumber; + + @ApiModelProperty("出库单物料明细id") + @Excel(name = "出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙号") + @Excel(name = "播种墙号") + private Integer sowingWallNumber; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("播种状态:1-未播种,2-播种中,3-播种完成") + @Excel(name = "播种状态:1-未播种,2-播种中,3-播种完成") + private Integer status; + + @ApiModelProperty(value = "播种人用户ID") + private Long sowingBy; + + @ApiModelProperty(name = "播种人姓名") + private String sowingByName; + + @ApiModelProperty(value = "播种时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date sowingTime; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("已播种数量占比(播种数量/拣货数量 * 100)") + @Excel(name = "播种数量") + private BigDecimal ratioQuantity; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/todo/SowingDistributionDetailsDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/todo/SowingDistributionDetailsDO.java new file mode 100644 index 000000000..7be9b0ae4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/repository/todo/SowingDistributionDetailsDO.java @@ -0,0 +1,161 @@ +package com.mhd.wms.domain.sowingDistributionDetails.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 播种分货明细表对象 wave_out_order_relevance + * + * @author gen + * @date 2024-06-05 + */ + +@Data +public class SowingDistributionDetailsDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货详情id") + private Long sowingDistributionDetailsId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("分货类型:1-播种分货 2-按单分货") + @Excel(name = "分货类型") + private Integer type; + + @ApiModelProperty("出库单物料明细id") + @Excel(name = "出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙号") + @Excel(name = "播种墙号") + private Integer sowingWallNumber; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("播种状态:1-未播种,2-播种中,3-播种完成") + @Excel(name = "播种状态:1-未播种,2-播种中,3-播种完成") + private Integer status; + + @ApiModelProperty(value = "播种人用户ID") + private Long sowingBy; + + @ApiModelProperty(name = "播种人姓名") + private String sowingByName; + + @ApiModelProperty(value = "播种时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date sowingTime; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/service/SowingDistributionDetailsDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/service/SowingDistributionDetailsDomainService.java new file mode 100644 index 000000000..17ab4f07e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingDistributionDetails/service/SowingDistributionDetailsDomainService.java @@ -0,0 +1,110 @@ +package com.mhd.wms.domain.sowingDistributionDetails.service; + +import com.mhd.wms.domain.sowingDistributionDetails.repository.facade.ISowingDistributionDetailsService; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO; +import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 播种分货明细表 + * + * @author gen + * @date 2024-06-05 + */ +@Service +@Slf4j +public class SowingDistributionDetailsDomainService { + + @Autowired + private ISowingDistributionDetailsService waveOutOrderRelevanceService; + + + /** + * 分页查询播种分货明细表列表 + */ + public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + return waveOutOrderRelevanceService.queryList(sowingDistributionDetailsDO); + } + + + /** + * 新增播种分货明细表 + */ + public Boolean insert(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + + return waveOutOrderRelevanceService.insert(sowingDistributionDetailsDO); + } + + /** + * 修改播种分货明细表 + */ + public Boolean update(SowingDistributionDetailsDO sowingDistributionDetailsDO) { + return waveOutOrderRelevanceService.update(sowingDistributionDetailsDO); + } + + /** + * 批量删除播种分货明细表 + */ + public Boolean delete(Long[] waveOutOrderRelevanceIds) { + return waveOutOrderRelevanceService.delete(waveOutOrderRelevanceIds); + } + + /** + * 获取播种分货明细表详细信息 + */ + public SowingDistributionDetailsPO getInfo(Long waveOutOrderRelevanceId) + { + return waveOutOrderRelevanceService.getInfo(waveOutOrderRelevanceId); + } + + /** + * @description 播种分单 + * @author ZhouGY + * @date 2024/6/6 14:43 + * @param allocationSowingWallDO + * @return List + */ + public List allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO){ + return waveOutOrderRelevanceService.allocationSowingWall(allocationSowingWallDO); + } + + /** + * @description 物料扫码 将物料分配至对应的播种墙 + * @author ZhouGY + * @date 2024/6/6 16:16 + * @param allocationSowingWallDO + * @return WaveOutOrderRelevancePO + */ + public SowingDistributionDetailsPO materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO){ + return waveOutOrderRelevanceService.materialScanCodeAllocationSowing(allocationSowingWallDO); + } + + /** + * @description 按单分货 + * @author ZhouGY + * @date 2024/6/6 14:43 + * @param allocationByOrderDO + * @return List + */ + public List allocationByOrder(AllocationByOrderDO allocationByOrderDO){ + return waveOutOrderRelevanceService.allocationByOrder(allocationByOrderDO); + } + + /** + * @description 物料扫码 将物料分配至对应的出库单物料明细 + * @author ZhouGY + * @date 2024/6/6 16:16 + * @param allocationByOrderDO + * @return WaveOutOrderRelevancePO + */ + public SowingDistributionDetailsPO materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO){ + return waveOutOrderRelevanceService.materialScanCodeAllocationByOrder(allocationByOrderDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/entity/SowingWall.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/entity/SowingWall.java new file mode 100644 index 000000000..024238cb1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/entity/SowingWall.java @@ -0,0 +1,67 @@ +package com.mhd.wms.domain.sowingWall.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 播种墙管理对象 sowing_wall + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class SowingWall extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种墙id") + @TableId(type = IdType.AUTO) + private Long sowingWallId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙层数") + @Excel(name = "播种墙层数") + private Integer layerNum; + + @ApiModelProperty("播种墙列数") + @Excel(name = "播种墙列数") + private Integer columnNumber; + + @ApiModelProperty("启用状态: 1-启用 2-停用") + @Excel(name = "启用状态: 1-启用 2-停用") + private Integer openingUp; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("播种墙描述") + @Excel(name = "播种墙描述") + private String sowingWallDesc; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/facade/ISowingWallService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/facade/ISowingWallService.java new file mode 100644 index 000000000..3bc80c072 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/facade/ISowingWallService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.sowingWall.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.sowingWall.entity.SowingWall; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; + +import java.util.List; + +/** + * 播种墙管理Service接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface ISowingWallService extends IService +{ + /** + * 分页查询播种墙管理列表 + */ + public List queryList(SowingWallDO sowingWallDO); + + /** + * 新增播种墙管理 + */ + public Boolean insert(SowingWallDO sowingWallDO); + + /** + * 修改播种墙管理 + */ + public Boolean update(SowingWallDO sowingWallDO); + + /** + * 批量删除播种墙管理 + */ + public Boolean delete(Long[] sowingWallIds); + + + /** + * 查询播种墙管理 + */ + public SowingWallPO getInfo(Long sowingWallId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/mapper/SowingWallMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/mapper/SowingWallMapper.java new file mode 100644 index 000000000..78c95ff37 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/mapper/SowingWallMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.sowingWall.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.sowingWall.entity.SowingWall; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; + +import java.util.List; + +/** + * 播种墙管理Mapper接口 + * + * @author gen + * @date 2024-05-07 + */ +public interface SowingWallMapper extends BaseMapper +{ + /** + * 查询播种墙管理列表 + */ + public List queryList(SowingWallDO sowingWallDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/persistence/SowingWallImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/persistence/SowingWallImpl.java new file mode 100644 index 000000000..362a9dd20 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/persistence/SowingWallImpl.java @@ -0,0 +1,104 @@ +package com.mhd.wms.domain.sowingWall.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.wms.domain.sowingWall.entity.SowingWall; +import com.mhd.wms.domain.sowingWall.repository.facade.ISowingWallService; +import com.mhd.wms.domain.sowingWall.repository.mapper.SowingWallMapper; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 播种墙管理Service业务层处理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +public class SowingWallImpl extends ServiceImpl implements ISowingWallService { + @Autowired + private SowingWallMapper sowingWallMapper; + + /** + * 查询播种墙管理列表 + */ + @Override + public List queryList(SowingWallDO sowingWallDO) + { + return sowingWallMapper.queryList(sowingWallDO); + } + + /** + * 新增播种墙管理 + */ + @Override + public Boolean insert(SowingWallDO sowingWallDO) { + //唯一性校验 + verifyUniqueness(sowingWallDO); + SowingWall sowingWall = new SowingWall(); + BeanUtils.copyProperties(sowingWallDO,sowingWall); + return this.save(sowingWall); + } + + /** + * 修改播种墙管理 + */ + @Override + public Boolean update(SowingWallDO sowingWallDO) { + //唯一性校验 + verifyUniqueness(sowingWallDO); + SowingWall sowingWall = new SowingWall(); + BeanUtils.copyProperties(sowingWallDO,sowingWall); + return this.updateById(sowingWall); + } + + /** + * 批量删除播种墙管理 + */ + @Override + public Boolean delete(Long[] sowingWallIds ) { + List list = new ArrayList<>(); + for (Long id : sowingWallIds) { + SowingWall sowingWall = new SowingWall(); + sowingWall.setSowingWallId(id); + sowingWall.setDelFlag(2); + list.add(sowingWall); + } + return this.updateBatchById(list); + } + + /** + * 修改播种墙管理 + */ + @Override + public SowingWallPO getInfo(Long sowingWallId) { + SowingWall sowingWall = this.getById(sowingWallId); + SowingWallPO sowingWallPO = new SowingWallPO(); + BeanUtils.copyProperties(sowingWall,sowingWallPO); + return sowingWallPO; + } + + /** + * @description 校验唯一 + * @author ZhouGY + * @date 2024/5/9 21:10 + * @param sowingWallDO + */ + private void verifyUniqueness(SowingWallDO sowingWallDO){ + int count = sowingWallMapper.selectCount(new QueryWrapper().lambda() + .eq(SowingWall::getSowingWallCode,sowingWallDO.getSowingWallCode()) + .eq(SowingWall::getOrganizationId, sowingWallDO.getOrganizationId()) + .ne(sowingWallDO.getSowingWallId() != null, SowingWall::getSowingWallId, sowingWallDO.getSowingWallId()) + .eq(SowingWall::getDelFlag,1)); + if (count > 0){ + throw new ServiceException("播种墙编码【" + sowingWallDO.getSowingWallCode() + "】已存在"); + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/po/SowingWallPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/po/SowingWallPO.java new file mode 100644 index 000000000..319acf107 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/po/SowingWallPO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.domain.sowingWall.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 播种墙管理对象 sowing_wall + * + * @author gen + * @date 2024-05-07 + */ + +@Data +@ApiModel(value = "播种墙管理对象", description = "播种墙管理响应对象") +public class SowingWallPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种墙id") + private Long sowingWallId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙层数") + @Excel(name = "播种墙层数") + private Integer layerNum; + + @ApiModelProperty("播种墙列数") + @Excel(name = "播种墙列数") + private Integer columnNumber; + + @ApiModelProperty("启用状态: 1-启用 2-停用") + @Excel(name = "启用状态: 1-启用 2-停用") + private Integer openingUp; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("播种墙描述") + @Excel(name = "播种墙描述") + private String sowingWallDesc; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/todo/SowingWallDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/todo/SowingWallDO.java new file mode 100644 index 000000000..6fd9689b5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/repository/todo/SowingWallDO.java @@ -0,0 +1,70 @@ +package com.mhd.wms.domain.sowingWall.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 播种墙管理对象 sowing_wall + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class SowingWallDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种墙id") + private Long sowingWallId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙层数") + @Excel(name = "播种墙层数") + private Integer layerNum; + + @ApiModelProperty("播种墙列数") + @Excel(name = "播种墙列数") + private Integer columnNumber; + + @ApiModelProperty("启用状态: 1-启用 2-停用") + @Excel(name = "启用状态: 1-启用 2-停用") + private Integer openingUp; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("播种墙描述") + @Excel(name = "播种墙描述") + private String sowingWallDesc; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/service/SowingWallDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/service/SowingWallDomainService.java new file mode 100644 index 000000000..4a6d6d7ca --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/sowingWall/service/SowingWallDomainService.java @@ -0,0 +1,88 @@ +package com.mhd.wms.domain.sowingWall.service; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.sowingWall.entity.SowingWall; +import com.mhd.wms.domain.sowingWall.repository.facade.ISowingWallService; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * 播种墙管理 + * + * @author gen + * @date 2024-05-07 + */ +@Service +@Slf4j +public class SowingWallDomainService { + + @Autowired + private ISowingWallService sowingWallService; + + + /** + * 分页查询播种墙管理列表 + */ + public List queryList(SowingWallDO sowingWallDO) { + return sowingWallService.queryList(sowingWallDO); + } + + + /** + * 新增播种墙管理 + */ + public Boolean insert(SowingWallDO sowingWallDO) { + + return sowingWallService.insert(sowingWallDO); + } + + /** + * 修改播种墙管理 + */ + public Boolean update(SowingWallDO sowingWallDO) { + return sowingWallService.update(sowingWallDO); + } + + /** + * 批量删除播种墙管理 + */ + public Boolean delete(Long[] sowingWallIds) { + return sowingWallService.delete(sowingWallIds); + } + + /** + * 获取播种墙管理详细信息 + */ + public SowingWallPO getInfo(Long sowingWallId) + { + return sowingWallService.getInfo(sowingWallId); + } + + /** + * @description 根据id作废播种墙 + * @author ZhouGY + * @date 2024/5/10 15:28 + * @param sowingWallIds + * @return Boolean + */ + public Boolean nullifyByIds(Long[] sowingWallIds) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return sowingWallService.update(null, new UpdateWrapper().lambda() + .set(SowingWall::getNullify, 1) + .set(SowingWall::getUpdateTime, new Date()) + .set(SowingWall::getUpdateBy, loginUser.getUserid()) + .set(SowingWall::getUpdateByName, loginUser.getUsername()) + .in(SowingWall::getSowingWallId, Arrays.asList(sowingWallIds))); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java new file mode 100644 index 000000000..081b2dc04 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/ImmediateInventoryPO.java @@ -0,0 +1,59 @@ +package com.mhd.wms.domain.statementStatistics.po; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ImmediateInventoryPO { + + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量 ") + @Excel(name = "可用数量 ") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receivedQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickQuantity; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/WarehousingReportPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/WarehousingReportPO.java new file mode 100644 index 000000000..9af6093bc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/po/WarehousingReportPO.java @@ -0,0 +1,60 @@ +package com.mhd.wms.domain.statementStatistics.po; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WarehousingReportPO { + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String materialBarCode; + + @ApiModelProperty("入库数量") + @Excel(name = "入库数量") + private BigDecimal materialQuantity; + + @ApiModelProperty("包装单位 ") + @Excel(name = "包装单位 ") + private String unitName; + + @ApiModelProperty("包装规格") + @Excel(name = "包装规格") + private String packName; + + @ApiModelProperty("出/入库时间 ") + @Excel(name = "入库时间 ") + private String createTime; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outboundQuantity; + + @ApiModelProperty("变更数量") + @Excel(name = "变更数量") + private BigDecimal changeQuantity; + + @ApiModelProperty("库存增减") + @Excel(name = "库存增减") + private String inventoryIncreaseDecrease; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/ImmediateInventoryDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/ImmediateInventoryDO.java new file mode 100644 index 000000000..6941c7ffd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/ImmediateInventoryDO.java @@ -0,0 +1,147 @@ +package com.mhd.wms.domain.statementStatistics.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class ImmediateInventoryDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量 ") + @Excel(name = "可用数量 ") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receivedQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickQuantity; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("库存数量开始") + @Excel(name = "库存数量开始") + private BigDecimal inventoryQuantityStart; + + @ApiModelProperty("库存数量结束") + @Excel(name = "库存数量结束") + private BigDecimal inventoryQuantityEnd; + + @ApiModelProperty("可用数量开始 ") + @Excel(name = "可用数量开始 ") + private BigDecimal allocationQuantityStart; + + @ApiModelProperty("可用数量结束 ") + @Excel(name = "可用数量结束 ") + private BigDecimal allocationQuantityEnd; + + + @ApiModelProperty("冻结数量开始") + @Excel(name = "冻结数量开始") + private BigDecimal freezeQuantityStart; + + @ApiModelProperty("冻结数量结束") + @Excel(name = "冻结数量结束") + private BigDecimal freezeQuantityEnd; + + @ApiModelProperty("收货数量开始") + @Excel(name = "收货数量开始") + private BigDecimal receivedQuantityStart; + + @ApiModelProperty("收货数量结束") + @Excel(name = "收货数量结束") + private BigDecimal receivedQuantityEnd; + + @ApiModelProperty("上架数量开始") + @Excel(name = "上架数量开始") + private BigDecimal shelvesQuantityStart; + + @ApiModelProperty("上架数量结束") + @Excel(name = "上架数量结束") + private BigDecimal shelvesQuantityEnd; + + @ApiModelProperty("拣货数量开始") + @Excel(name = "拣货数量开始") + private BigDecimal pickQuantityStart; + + @ApiModelProperty("拣货数量结束") + @Excel(name = "拣货数量结束") + private BigDecimal pickQuantityEnd; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/WarehousingReportDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/WarehousingReportDO.java new file mode 100644 index 000000000..8c398dc28 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/statementStatistics/todo/WarehousingReportDO.java @@ -0,0 +1,101 @@ +package com.mhd.wms.domain.statementStatistics.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WarehousingReportDO { + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String materialBarCode; + + @ApiModelProperty("入库数量") + @Excel(name = "入库数量") + private BigDecimal materialQuantity; + + @ApiModelProperty("包装单位 ") + @Excel(name = "包装单位 ") + private String unitName; + + @ApiModelProperty("包装规格") + @Excel(name = "包装规格") + private String packName; + + @ApiModelProperty("入库时间 ") + @Excel(name = "入库时间 ") + private String createTime; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outboundQuantity; + + @ApiModelProperty("变更数量") + @Excel(name = "变更数量") + private BigDecimal changeQuantity; + + @ApiModelProperty("库存增减 ") + @Excel(name = "库存增减") + private String inventoryincreaseDecrease; + + @ApiModelProperty("入库时间 ") + @Excel(name = "入库时间 ") + private String createTimeStart; + + @ApiModelProperty("入库时间 ") + @Excel(name = "入库时间 ") + private String createTimeEnd; + + + @ApiModelProperty("入库数量开始") + @Excel(name = "入库数量开始") + private BigDecimal materialQuantityStart; + + @ApiModelProperty("入库数量结束") + @Excel(name = "入库数量结束") + private BigDecimal materialQuantityEnd; + + @ApiModelProperty("出库数量开始") + @Excel(name = "出库数量开始") + private BigDecimal outboundQuantityStart; + + @ApiModelProperty("出库数量结束") + @Excel(name = "出库数量结束") + private BigDecimal outboundQuantityEnd; + + @ApiModelProperty("变更数量开始") + @Excel(name = "变更数量开始") + private BigDecimal changeQuantityStart; + + @ApiModelProperty("变更数量结束") + @Excel(name = "变更数量结束") + private BigDecimal changeQuantityEnd; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/entity/StockInOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/entity/StockInOrder.java new file mode 100644 index 000000000..9dfbca118 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/entity/StockInOrder.java @@ -0,0 +1,228 @@ +package com.mhd.wms.domain.stockInOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 入库单对象 stock_in_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + @TableId(type = IdType.AUTO) + private Long inOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 6-已取消 7-已关闭") + private Integer status; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date closeTime; + + @ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + @Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + private Integer orderSource; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调度单号") + private String mobilizeCode; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java new file mode 100644 index 000000000..f8e3176b4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/facade/IStockInOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.stockInOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; + +import java.util.List; + +/** + * 入库单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IStockInOrderService extends IService +{ + /** + * 分页查询入库单列表 + */ + public List queryList(StockInOrderDO stockInOrderDO); + + /** + * 新增入库单 + */ + public Boolean insert(StockInOrderDO stockInOrderDO); + + /** + * 修改入库单 + */ + public Boolean update(StockInOrderDO stockInOrderDO); + + /** + * 批量删除入库单 + */ + public Boolean delete(Long[] inOrderIds); + + + /** + * 查询入库单 + */ + public StockInOrderPO getInfo(Long inOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java new file mode 100644 index 000000000..acd9ed861 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/mapper/StockInOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockInOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; + +import java.util.List; + +/** + * 入库单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface StockInOrderMapper extends BaseMapper +{ + /** + * 查询入库单列表 + */ + public List queryList(StockInOrderDO stockInOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java new file mode 100644 index 000000000..c1b4246cf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/persistence/StockInOrderImpl.java @@ -0,0 +1,84 @@ +package com.mhd.wms.domain.stockInOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * 入库单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class StockInOrderImpl extends ServiceImpl implements IStockInOrderService{ + @Autowired + private StockInOrderMapper stockInOrderMapper; + + /** + * 查询入库单列表 + */ + @Override + public List queryList(StockInOrderDO stockInOrderDO) + { + return stockInOrderMapper.queryList(stockInOrderDO); + } + + /** + * 新增入库单 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean insert(StockInOrderDO stockInOrderDO) { + StockInOrder stockInOrder = new StockInOrder(); + BeanUtils.copyProperties(stockInOrderDO,stockInOrder); + return this.save(stockInOrder); + } + + /** + * 修改入库单 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean update(StockInOrderDO stockInOrderDO) { + StockInOrder stockInOrder = new StockInOrder(); + BeanUtils.copyProperties(stockInOrderDO,stockInOrder); + return this.updateById(stockInOrder); + } + + /** + * 批量删除入库单 + */ + @Override + public Boolean delete(Long[] inOrderIds ) { + List list = new ArrayList<>(); + for (Long id : inOrderIds) { + StockInOrder stockInOrder = new StockInOrder(); + stockInOrder.setInOrderId(id); + stockInOrder.setDelFlag(2); + list.add(stockInOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改入库单 + */ + @Override + public StockInOrderPO getInfo(Long inOrderId) { + StockInOrder stockInOrder = this.getById(inOrderId); + StockInOrderPO stockInOrderPO = new StockInOrderPO(); + BeanUtils.copyProperties(stockInOrder,stockInOrderPO); + return stockInOrderPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderBasePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderBasePO.java new file mode 100644 index 000000000..711e993a5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderBasePO.java @@ -0,0 +1,116 @@ +package com.mhd.wms.domain.stockInOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockInOrderBasePO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主code") + @Excel(name = "货主code") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderPO.java new file mode 100644 index 000000000..e2500ede3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/po/StockInOrderPO.java @@ -0,0 +1,229 @@ +package com.mhd.wms.domain.stockInOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 入库单对象 stock_in_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "入库单对象", description = "入库单响应对象") +public class StockInOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer status; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date closeTime; + + @ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + @Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + private Integer orderSource; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderBaseDO.java new file mode 100644 index 000000000..40b0b6fa7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderBaseDO.java @@ -0,0 +1,111 @@ +package com.mhd.wms.domain.stockInOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockInOrderBaseDO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java new file mode 100644 index 000000000..f987d9e92 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java @@ -0,0 +1,244 @@ +package com.mhd.wms.domain.stockInOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 入库单对象 stock_in_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer status; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date closeTime; + + @ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + @Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + private Integer orderSource; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("入库单id集合") + private List inOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("小于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "小于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer ltStatus; + + @ApiModelProperty("大于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "大于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer gtStatus; + + @ApiModelProperty("小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer ltAuditStatus; + + @ApiModelProperty("小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer gtAuditStatus; + + @ApiModelProperty("调度单号") + private String mobilizeCode; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java new file mode 100644 index 000000000..8cf860dbd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/service/StockInOrderDomainService.java @@ -0,0 +1,391 @@ +package com.mhd.wms.domain.stockInOrder.service; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailBaseDO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 入库单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockInOrderDomainService { + + @Autowired + private IStockInOrderService stockInOrderService; + @Autowired + private IInMaterialDetailService materialDetailService; + @Autowired + private StockReceiptOrderDomainService stockReceiptOrderDomainService; + @Autowired + private IQualityInspectionService qualityInspectionService; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询入库单列表 + */ + public List queryList(StockInOrderDO stockInOrderDO) { + return stockInOrderService.queryList(stockInOrderDO); + } + + + /** + * 新增入库单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean insert(StockInOrderDO stockInOrderDO) { + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + //设置物料信息 + setMaterialDetailInfo(stockInOrderDO); + //统计总物料种数 + stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size()); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setVolumeLimit(volumeLimit); + stockInOrderService.insert(stockInOrderDO); + return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); + } + + /** + * 批量新增入库单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List stockInOrderDOList) { + for (StockInOrderDO stockInOrderDO : stockInOrderDOList){ + if (StringUtils.isBlank(stockInOrderDO.getInOrderNumber())){ + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + } + //设置物料信息 + setMaterialDetailInfo(stockInOrderDO); + //统计总物料种数 + stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size()); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setVolumeLimit(volumeLimit); + stockInOrderService.insert(stockInOrderDO); + materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); + } + return true; + } + + /** + * 修改入库单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean update(StockInOrderDO stockInOrderDO) { + StockInOrderPO stockInOrderPO = stockInOrderService.getInfo(stockInOrderDO.getInOrderId()); + if (stockInOrderPO == null){ + throw new ServiceException("入库单信息不存在"); + } + //设置物料信息 + setMaterialDetailInfo(stockInOrderDO); + //统计总物料种数 + stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size()); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderPO.setQuantity(quantity); + stockInOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setVolumeLimit(volumeLimit); + stockInOrderService.update(stockInOrderDO); + InMaterialDetailBaseDO inMaterialDetailBaseDO = new InMaterialDetailBaseDO(); + BeanUtils.copyProperties(stockInOrderPO, inMaterialDetailBaseDO); + inMaterialDetailBaseDO.setInOrderNumber(stockInOrderPO.getInOrderNumber()); + return materialDetailService.batchUpdate(stockInOrderDO.getMaterialDetailList(), inMaterialDetailBaseDO); + } + + /** + * 批量删除入库单 + */ + public Boolean delete(Long[] inOrderIds) { + return stockInOrderService.delete(inOrderIds); + } + + + /** + * 获取入库单详细信息 + */ + public StockInOrderPO getInfo(Long inOrderId) + { + StockInOrderPO stockInOrderPO = stockInOrderService.getInfo(inOrderId); + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + inMaterialDetailDO.setInOrderNumber(stockInOrderPO.getInOrderNumber()); + inMaterialDetailDO.setLevel(1); + List inMaterialDetailPOList = materialDetailService.queryList(inMaterialDetailDO); + stockInOrderPO.setMaterialDetailList(inMaterialDetailPOList); + return stockInOrderPO; + } + + + /** + * @description 审核入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean auditState(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //统计是否已经审核 + int count = stockInOrderService.count(new QueryWrapper().lambda() + .eq(StockInOrder::getAuditStatus, 3) + .eq(StockInOrder::getDelFlag, 1) + .in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + if (count > 0){ + throw new ServiceException("入库单已审核,请重新选择!"); + } + + //生成收货单 + if (stockInOrderDO.getAuditStatus() == 3){ + auditApprove(stockInOrderDO); + } + return stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(3 == stockInOrderDO.getAuditStatus(), StockInOrder::getStatus, 2) + .set(StockInOrder::getAuditStatus, stockInOrderDO.getAuditStatus()) + .set(StockInOrder::getAuditRemark, stockInOrderDO.getAuditRemark()) + .set(StockInOrder::getAuditBy, loginUser.getUserid()) + .set(StockInOrder::getAuditByName, loginUser.getUsername()) + .set(StockInOrder::getAuditTime, new Date()) + .set(StockInOrder::getUpdateBy, loginUser.getUserid()) + .set(StockInOrder::getUpdateByName, loginUser.getUsername()) + .set(StockInOrder::getUpdateTime, new Date()) + .in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + } + + + /** + * @description 取消入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean cancelOrder(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(StockInOrder::getCancelOrder, 2) + .set(StockInOrder::getCancelRemark, stockInOrderDO.getCancelRemark()) + .set(StockInOrder::getCancelBy, loginUser.getUserid()) + .set(StockInOrder::getCancelByName, loginUser.getUsername()) + .set(StockInOrder::getCancelTime, new Date()) + .set(StockInOrder::getUpdateBy, loginUser.getUserid()) + .set(StockInOrder::getUpdateByName, loginUser.getUsername()) + .set(StockInOrder::getUpdateTime, new Date()) + .in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + } + + /** + * @description 关闭入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean closeOrder(StockInOrderDO stockInOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return stockInOrderService.update(null, new UpdateWrapper().lambda() + .set(StockInOrder::getCloseOrder, 1) + .set(StockInOrder::getStatus, 7) + .set(StockInOrder::getCloseRemark, stockInOrderDO.getCloseRemark()) + .set(StockInOrder::getCloseBy, loginUser.getUserid()) + .set(StockInOrder::getCloseByName, loginUser.getUsername()) + .set(StockInOrder::getCloseTime, new Date()) + .set(StockInOrder::getUpdateBy, loginUser.getUserid()) + .set(StockInOrder::getUpdateByName, loginUser.getUsername()) + .set(StockInOrder::getUpdateTime, new Date()) + .in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds())); + } + + /** + * @description 审核通过生成收货单 + * @author ZhouGY + * @date 2024/5/22 14:48 + * @param stockInOrderDO + * @return Boolean + */ + public Boolean auditApprove(StockInOrderDO stockInOrderDO){ + StockInOrderDO stockInOrderDOByQuery = new StockInOrderDO(); + stockInOrderDOByQuery.setInOrderIds(stockInOrderDO.getInOrderIds()); + stockInOrderDOByQuery.setLtAuditStatus(3); + List stockInOrderPOList = stockInOrderService.queryList(stockInOrderDOByQuery); + if (CollectionUtils.isEmpty(stockInOrderPOList)){ + throw new ServiceException("出库单不存在或已审核通过"); + } + List inOrderNumberList = stockInOrderPOList.stream().map(StockInOrderPO::getInOrderNumber).collect(Collectors.toList()); + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + inMaterialDetailDO.setInOrderNumberList(inOrderNumberList); + List inMaterialDetailPOList = materialDetailService.queryListChildren(inMaterialDetailDO); + Map> inMaterialDetailListMap = inMaterialDetailPOList.stream().collect(Collectors.groupingBy(InMaterialDetailPO::getInOrderNumber)); + + List stockReceiptOrderDOList = new ArrayList<>(); + stockInOrderPOList.forEach(p -> { + StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO(); + BeanUtils.copyProperties(p, stockReceiptOrderDO); + stockReceiptOrderDO.setReceiptOrderNumber(OrderSequence.getOrderCode("SH")); + List inMaterialDetailPOs = inMaterialDetailListMap.get(p.getInOrderNumber()); + if (!CollectionUtils.isEmpty(inMaterialDetailPOs)){ + List receiptMaterialDetailDOList = new ArrayList<>(); + inMaterialDetailPOs.forEach(inMaterialDetailPO -> { + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + BeanUtils.copyProperties(inMaterialDetailPO, receiptMaterialDetailDO); + receiptMaterialDetailDO.setInUniqueId(inMaterialDetailPO.getUniqueId()); + receiptMaterialDetailDOList.add(receiptMaterialDetailDO); + }); + stockReceiptOrderDO.setMaterialDetailList(receiptMaterialDetailDOList); + stockReceiptOrderDO.setMaterialQuantity(receiptMaterialDetailDOList.size()); + } + stockReceiptOrderDOList.add(stockReceiptOrderDO); + }); + //判断物流是否需要生成质检单 + genQualityInspection(stockReceiptOrderDOList); + return stockReceiptOrderDomainService.batchInsert(stockReceiptOrderDOList); + } + + /** + * @description 收货前 生成质检 + * @author ZhouGY + * @date 2024/6/19 8:54 + * @param stockReceiptOrderDOList + * @return Boolean + */ + public Boolean genQualityInspection(List stockReceiptOrderDOList){ + List qualityInspectionDOList = new ArrayList<>(); + stockReceiptOrderDOList.forEach(stockReceiptOrderDO ->{ + stockReceiptOrderDO.getMaterialDetailList().forEach(p -> { + if (p.getQualityInspectionManage() == 1){ + //是否质检管理: 1-是 2-否 + QualityInspectionDO qualityInspectionDO = new QualityInspectionDO(); + BeanUtils.copyProperties(stockReceiptOrderDO, qualityInspectionDO); + BeanUtils.copyProperties(p, qualityInspectionDO, IgnoreNullUtil.getNullPropertyNames(p)); + qualityInspectionDOList.add(qualityInspectionDO); + } + }); + }); + return qualityInspectionService.genQualityInspection(qualityInspectionDOList); + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param stockInOrderDO + */ + private void setMaterialDetailInfo(StockInOrderDO stockInOrderDO){ + List inMaterialDetailDOList = stockInOrderDO.getMaterialDetailList(); + inMaterialDetailDOList.forEach(inMaterialDetailDO -> { + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(inMaterialDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + inMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + inMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + inMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + inMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId()); + inMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + inMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + inMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + inMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + inMaterialDetailDO.setUnitName(packDetailFeignPO.getName()); + inMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + inMaterialDetailDO.setWeightLimit(packDetailFeignPO.getWeight()); + inMaterialDetailDO.setVolumeLimit(packDetailFeignPO.getVolume()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + inMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + inMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + inMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage()); + inMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage()); + inMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule()); + inMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm()); + inMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge()); + inMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio()); + + //获取商品规则信息 + MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialGoodsRulePO == null){ + throw new ServiceException("物料商品规则信息不存在"); + } + inMaterialDetailDO.setDistributeRuleId(materialGoodsRulePO.getMaterialGoodsRuleId()); + inMaterialDetailDO.setDistributeRuleCode(materialGoodsRulePO.getRuleCode()); + inMaterialDetailDO.setDistributeRuleName(materialGoodsRulePO.getRuleName()); + }); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/entity/StockInTaskOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/entity/StockInTaskOrder.java new file mode 100644 index 000000000..b36b2a237 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/entity/StockInTaskOrder.java @@ -0,0 +1,108 @@ +package com.mhd.wms.domain.stockInTaskOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 入库作业单对象 stock_in_task_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInTaskOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库作业单id") + @TableId(type = IdType.AUTO) + private Long inTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业类型:1-收货 2-上架") + @Excel(name = "作业类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/facade/IStockInTaskOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/facade/IStockInTaskOrderService.java new file mode 100644 index 000000000..708207620 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/facade/IStockInTaskOrderService.java @@ -0,0 +1,60 @@ +package com.mhd.wms.domain.stockInTaskOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockInTaskOrder.entity.StockInTaskOrder; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; + +import java.util.List; + +/** + * 入库作业单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IStockInTaskOrderService extends IService +{ + /** + * 分页查询入库作业单列表 + */ + public List queryList(StockInTaskOrderDO stockInTaskOrderDO); + + /** + * 新增入库作业单 + */ + public Boolean insert(StockInTaskOrderDO stockInTaskOrderDO); + + /** + * @description 生成收货作业单 + * @author ZhouGY + * @date 2024/6/17 15:32 + * @param stockInTaskOrderDOList + */ + public Boolean genStockReceiptTaskOrder(List stockInTaskOrderDOList); + + + /** + * @description 生成上架作业单 + * @author ZhouGY + * @date 2024/6/17 15:32 + * @param stockInTaskOrderDOList + */ + public Boolean genStockShelfTaskOrder(List stockInTaskOrderDOList); + + /** + * 修改入库作业单 + */ + public Boolean update(StockInTaskOrderDO stockInTaskOrderDO); + + /** + * 批量删除入库作业单 + */ + public Boolean delete(Long[] inTaskOrderIds); + + + /** + * 查询入库作业单 + */ + public StockInTaskOrderPO getInfo(Long inTaskOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/mapper/StockInTaskOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/mapper/StockInTaskOrderMapper.java new file mode 100644 index 000000000..08cee98ef --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/mapper/StockInTaskOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockInTaskOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockInTaskOrder.entity.StockInTaskOrder; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; + +import java.util.List; + +/** + * 入库作业单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface StockInTaskOrderMapper extends BaseMapper +{ + /** + * 查询入库作业单列表 + */ + public List queryList(StockInTaskOrderDO stockInTaskOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/persistence/StockInTaskOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/persistence/StockInTaskOrderImpl.java new file mode 100644 index 000000000..2ae7458e7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/persistence/StockInTaskOrderImpl.java @@ -0,0 +1,303 @@ +package com.mhd.wms.domain.stockInTaskOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.entity.InMaterialDetailSerialNumber; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; +import com.mhd.wms.domain.stockInTaskOrder.entity.StockInTaskOrder; +import com.mhd.wms.domain.stockInTaskOrder.repository.facade.IStockInTaskOrderService; +import com.mhd.wms.domain.stockInTaskOrder.repository.mapper.StockInTaskOrderMapper; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.entity.TaskReceiptMaterialDetail; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.facade.ITaskReceiptMaterialDetailService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.domain.taskShelfMaterialDetail.entity.TaskShelfMaterialDetail; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.facade.ITaskShelfMaterialDetailService; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 入库作业单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class StockInTaskOrderImpl extends ServiceImpl implements IStockInTaskOrderService{ + @Autowired + private StockInTaskOrderMapper stockInTaskOrderMapper; + @Autowired + private ITaskReceiptMaterialDetailService taskReceiptMaterialDetailService; + @Autowired + private ITaskShelfMaterialDetailService taskShelfMaterialDetailService; + @Autowired + private IInMaterialDetailSerialNumberService materialDetailSerialNumberService; + @Autowired + private IMaterialMoreDetailService materialMoreDetailService; + @Autowired + private IdGenerator idGenerator; + + /** + * 查询入库作业单列表 + */ + @Override + public List queryList(StockInTaskOrderDO stockInTaskOrderDO) + { + return stockInTaskOrderMapper.queryList(stockInTaskOrderDO); + } + + /** + * 新增入库作业单 + */ + @Override + public Boolean insert(StockInTaskOrderDO stockInTaskOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockInTaskOrder stockInTaskOrder = new StockInTaskOrder(); + BeanUtils.copyProperties(stockInTaskOrderDO,stockInTaskOrder); + stockInTaskOrder.setCreateBy(loginUser.getUserid()); + stockInTaskOrder.setCreateByName(loginUser.getUsername()); + stockInTaskOrder.setCreateTime(new Date()); + return this.save(stockInTaskOrder); + } + + /** + * @description 生成收货作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + * @param stockInTaskOrderDOList + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genStockReceiptTaskOrder(List stockInTaskOrderDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List stockInTaskOrderList = new ArrayList<>(); + List taskReceiptMaterialDetailList = new ArrayList<>(); + // 批量新增序列号 + List materialDetailSerialNumberList = new ArrayList<>(); + stockInTaskOrderDOList.forEach(stockInTaskOrderDO -> { + StockInTaskOrder stockInTaskOrder = new StockInTaskOrder(); + BeanUtils.copyProperties(stockInTaskOrderDO, stockInTaskOrder); + stockInTaskOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockInTaskOrder.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockInTaskOrder.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + for (TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO : stockInTaskOrderDO.getTaskReceiptMaterialDetailList()) { + taskReceiptMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + taskReceiptMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + taskReceiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + taskReceiptMaterialDetailDO.setTaskNumber(stockInTaskOrderDO.getTaskNumber()); + taskReceiptMaterialDetailDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + taskReceiptMaterialDetailDO.setCreateBy(loginUser.getUserid()); + taskReceiptMaterialDetailDO.setCreateByName(loginUser.getUsername()); + taskReceiptMaterialDetailDO.setCreateTime(new Date()); + TaskReceiptMaterialDetail taskReceiptMaterialDetail = new TaskReceiptMaterialDetail(); + BeanUtils.copyProperties(taskReceiptMaterialDetailDO, taskReceiptMaterialDetail, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + taskReceiptMaterialDetailList.add(taskReceiptMaterialDetail); + List taskReceiptMaterialDetailDOList = taskReceiptMaterialDetailDO.getChildren(); + if (taskReceiptMaterialDetailDOList != null){ + for(TaskReceiptMaterialDetailDO materialDetailChildDO : taskReceiptMaterialDetailDOList) { + materialDetailChildDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialDetailChildDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialDetailChildDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialDetailChildDO.setTaskNumber(stockInTaskOrderDO.getTaskNumber()); + materialDetailChildDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + materialDetailChildDO.setParentUniqueId(taskReceiptMaterialDetail.getUniqueId()); + materialDetailChildDO.setCreateBy(loginUser.getUserid()); + materialDetailChildDO.setCreateByName(loginUser.getUsername()); + materialDetailChildDO.setCreateTime(new Date()); + TaskReceiptMaterialDetail taskReceiptMaterialDetailChildren = new TaskReceiptMaterialDetail(); + BeanUtils.copyProperties(materialDetailChildDO, taskReceiptMaterialDetailChildren, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + taskReceiptMaterialDetailList.add(taskReceiptMaterialDetailChildren); + //序列号 + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumberByReceipt(taskReceiptMaterialDetailDO)); + } + } + //序列号 + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumberByReceipt(taskReceiptMaterialDetailDO)); + } + stockInTaskOrderList.add(stockInTaskOrder); + + }); + //批量序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + materialDetailSerialNumberService.saveBatch(materialDetailSerialNumberList); + } + //收货作业明细 + taskReceiptMaterialDetailService.saveBatch(taskReceiptMaterialDetailList); + return saveBatch(stockInTaskOrderList); + } + + /** + * @description 生成上架作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + * @param stockInTaskOrderDOList + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfTaskOrder(List stockInTaskOrderDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List stockInTaskOrderList = new ArrayList<>(); + List taskShelfMaterialDetailList = new ArrayList<>(); + // 批量新增序列号 + List materialDetailSerialNumberList = new ArrayList<>(); + stockInTaskOrderDOList.forEach(stockInTaskOrderDO -> { + StockInTaskOrder stockInTaskOrder = new StockInTaskOrder(); + BeanUtils.copyProperties(stockInTaskOrderDO, stockInTaskOrder); + stockInTaskOrderList.add(stockInTaskOrder); + stockInTaskOrderDO.getTaskShelfMaterialDetailList().forEach(taskShelfMaterialDetailDO -> { + TaskShelfMaterialDetail taskShelfMaterialDetail = new TaskShelfMaterialDetail(); + BeanUtils.copyProperties(taskShelfMaterialDetailDO, taskShelfMaterialDetail, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + taskShelfMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + taskShelfMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + taskShelfMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + taskShelfMaterialDetail.setTaskNumber(stockInTaskOrderDO.getTaskNumber()); + taskShelfMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + taskShelfMaterialDetail.setCreateBy(loginUser.getUserid()); + taskShelfMaterialDetail.setCreateByName(loginUser.getUsername()); + taskShelfMaterialDetail.setCreateTime(new Date()); + taskShelfMaterialDetailList.add(taskShelfMaterialDetail); + taskShelfMaterialDetailDO.getChildren().forEach(taskShelfMaterialDetailDOChildren -> { + TaskShelfMaterialDetail taskShelfMaterialDetailChildren = new TaskShelfMaterialDetail(); + BeanUtils.copyProperties(taskShelfMaterialDetailDOChildren, taskShelfMaterialDetailChildren, "materialDetailId","createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + taskShelfMaterialDetailChildren.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + taskShelfMaterialDetailChildren.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + taskShelfMaterialDetailChildren.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + taskShelfMaterialDetailChildren.setTaskNumber(stockInTaskOrderDO.getTaskNumber()); + taskShelfMaterialDetailChildren.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + taskShelfMaterialDetailChildren.setParentUniqueId(taskShelfMaterialDetail.getUniqueId()); + taskShelfMaterialDetailChildren.setCreateBy(loginUser.getUserid()); + taskShelfMaterialDetailChildren.setCreateByName(loginUser.getUsername()); + taskShelfMaterialDetailChildren.setCreateTime(new Date()); + taskShelfMaterialDetailList.add(taskShelfMaterialDetailChildren); + //序列号 + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumberByShelf(taskShelfMaterialDetailDOChildren)); + }); + //序列号 + materialDetailSerialNumberList.addAll(genMaterialDetailSerialNumberByShelf(taskShelfMaterialDetailDO)); + }); + }); + //批量序列号 + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + materialDetailSerialNumberService.saveBatch(materialDetailSerialNumberList); + } + //上架作业明细 + taskShelfMaterialDetailService.saveBatch(taskShelfMaterialDetailList); + return saveBatch(stockInTaskOrderList); + } + + /** + * 修改入库作业单 + */ + @Override + public Boolean update(StockInTaskOrderDO stockInTaskOrderDO) { + StockInTaskOrder stockInTaskOrder = new StockInTaskOrder(); + BeanUtils.copyProperties(stockInTaskOrderDO,stockInTaskOrder); + return this.updateById(stockInTaskOrder); + } + + /** + * 批量删除入库作业单 + */ + @Override + public Boolean delete(Long[] inTaskOrderIds ) { + List list = new ArrayList<>(); + for (Long id : inTaskOrderIds) { + StockInTaskOrder stockInTaskOrder = new StockInTaskOrder(); + stockInTaskOrder.setInTaskOrderId(id); + stockInTaskOrder.setDelFlag(2); + list.add(stockInTaskOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改入库作业单 + */ + @Override + public StockInTaskOrderPO getInfo(Long inTaskOrderId) { + StockInTaskOrder stockInTaskOrder = this.getById(inTaskOrderId); + StockInTaskOrderPO stockInTaskOrderPO = new StockInTaskOrderPO(); + BeanUtils.copyProperties(stockInTaskOrder,stockInTaskOrderPO); + return stockInTaskOrderPO; + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param taskReceiptMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumberByReceipt(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + List inMaterialDetailSerialNumberList = new ArrayList<>(); + List InMaterialDetailSerialNumberDOList = taskReceiptMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(InMaterialDetailSerialNumberDOList)){ + for (com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO : InMaterialDetailSerialNumberDOList){ + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(InMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber); + inMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailSerialNumber.setOrderNumber(taskReceiptMaterialDetailDO.getTaskNumber()); + inMaterialDetailSerialNumber.setMaterialDetailUniqueId(taskReceiptMaterialDetailDO.getUniqueId()); + inMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + inMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + inMaterialDetailSerialNumber.setCreateTime(new Date()); + inMaterialDetailSerialNumberList.add(inMaterialDetailSerialNumber); + } + } + //批量新增或修改序列号信息 + return inMaterialDetailSerialNumberList; + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param taskShelfMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumberByShelf(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + List inMaterialDetailSerialNumberList = new ArrayList<>(); + List InMaterialDetailSerialNumberDOList = taskShelfMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(InMaterialDetailSerialNumberDOList)){ + for (com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO : InMaterialDetailSerialNumberDOList){ + InMaterialDetailSerialNumber inMaterialDetailSerialNumber = new InMaterialDetailSerialNumber(); + BeanUtils.copyProperties(InMaterialDetailSerialNumberDO, inMaterialDetailSerialNumber); + inMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailSerialNumber.setOrderNumber(taskShelfMaterialDetailDO.getTaskNumber()); + inMaterialDetailSerialNumber.setMaterialDetailUniqueId(taskShelfMaterialDetailDO.getUniqueId()); + inMaterialDetailSerialNumber.setCreateBy(loginUser.getUserid()); + inMaterialDetailSerialNumber.setCreateByName(loginUser.getUsername()); + inMaterialDetailSerialNumber.setCreateTime(new Date()); + inMaterialDetailSerialNumberList.add(inMaterialDetailSerialNumber); + } + } + return inMaterialDetailSerialNumberList; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/po/StockInTaskOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/po/StockInTaskOrderPO.java new file mode 100644 index 000000000..28b201e5b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/po/StockInTaskOrderPO.java @@ -0,0 +1,116 @@ +package com.mhd.wms.domain.stockInTaskOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 入库作业单对象 stock_in_task_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "入库作业单对象", description = "入库作业单响应对象") +public class StockInTaskOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库作业单id") + private Long inTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业类型:1-收货 2-上架") + @Excel(name = "作业类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("收货明细") + private List taskReceiptMaterialDetailList; + + @ApiModelProperty("上架明细") + private List taskShelfMaterialDetailList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/todo/StockInTaskOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/todo/StockInTaskOrderDO.java new file mode 100644 index 000000000..fc64e4f1a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/repository/todo/StockInTaskOrderDO.java @@ -0,0 +1,119 @@ +package com.mhd.wms.domain.stockInTaskOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 入库作业单对象 stock_in_task_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInTaskOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库作业单id") + private Long inTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业类型:1-收货 2-上架") + @Excel(name = "作业类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("收货作业物料详情") + private List taskReceiptMaterialDetailList; + + @ApiModelProperty("上架作业物料详情") + private List taskShelfMaterialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java new file mode 100644 index 000000000..33bb8a35d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInTaskOrder/service/StockInTaskOrderDomainService.java @@ -0,0 +1,113 @@ +package com.mhd.wms.domain.stockInTaskOrder.service; + +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.stockInTaskOrder.repository.facade.IStockInTaskOrderService; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrderService; +import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.facade.ITaskReceiptMaterialDetailService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.facade.ITaskShelfMaterialDetailService; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 入库作业单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockInTaskOrderDomainService { + + @Autowired + private IStockInTaskOrderService stockInTaskOrderService; + @Autowired + private IInMaterialDetailService materialDetailService; + @Autowired + private IStockReceiptOrderService stockReceiptOrderService; + @Autowired + private IStockShelfOrderService stockShelfOrderService; + @Autowired + private ITaskReceiptMaterialDetailService taskReceiptMaterialDetailService; + @Autowired + private ITaskShelfMaterialDetailService taskShelfMaterialDetailService; + + + /** + * 分页查询入库作业单列表 + */ + public List queryList(StockInTaskOrderDO stockInTaskOrderDO) { + return stockInTaskOrderService.queryList(stockInTaskOrderDO); + } + + + /** + * 新增入库作业单 + */ + public Boolean insert(StockInTaskOrderDO stockInTaskOrderDO) { + + return stockInTaskOrderService.insert(stockInTaskOrderDO); + } + + /** + * 修改入库作业单 + */ + public Boolean update(StockInTaskOrderDO stockInTaskOrderDO) { + return stockInTaskOrderService.update(stockInTaskOrderDO); + } + + /** + * 批量删除入库作业单 + */ + public Boolean delete(Long[] inTaskOrderIds) { + return stockInTaskOrderService.delete(inTaskOrderIds); + } + + /** + * 获取入库作业单详细信息 + */ + public StockInTaskOrderPO getInfo(Long inTaskOrderId) + { + StockInTaskOrderPO stockInTaskOrderPO = stockInTaskOrderService.getInfo(inTaskOrderId); + if (stockInTaskOrderPO.getType() == 1){ + //根据收货单号查询 + stockInTaskOrderPO.setTaskReceiptMaterialDetailList(getReceiptInfo(stockInTaskOrderPO.getTaskNumber())); + }else { + //根据上架单号查询 + stockInTaskOrderPO.setTaskShelfMaterialDetailList(getShelfInfo(stockInTaskOrderPO.getTaskNumber())); + } + return stockInTaskOrderPO; + } + + + /** + * 获取入库收货作业单详细信息 + */ + public List getReceiptInfo(String receiptOrderNumber) { + //根据收货单号查询 + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = new TaskReceiptMaterialDetailDO(); + taskReceiptMaterialDetailDO.setTaskNumber(receiptOrderNumber); + return taskReceiptMaterialDetailService.queryList(taskReceiptMaterialDetailDO); + } + + + /** + * 获取入库上架作业单详细信息 + */ + public List getShelfInfo(String shelfOrderNumber) { + TaskShelfMaterialDetailDO taskShelfMaterialDetailDO = new TaskShelfMaterialDetailDO(); + //根据上架单号查询 + taskShelfMaterialDetailDO.setTaskNumber(shelfOrderNumber); + return taskShelfMaterialDetailService.queryList(taskShelfMaterialDetailDO); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/entity/StockOutOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/entity/StockOutOrder.java new file mode 100644 index 000000000..fc2649773 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/entity/StockOutOrder.java @@ -0,0 +1,265 @@ +package com.mhd.wms.domain.stockOutOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + @TableId(type = IdType.AUTO) + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @ApiModelProperty("复核任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/facade/IStockOutOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/facade/IStockOutOrderService.java new file mode 100644 index 000000000..eedd03ede --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/facade/IStockOutOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.stockOutOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; + +import java.util.List; + +/** + * 出库单Service接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface IStockOutOrderService extends IService +{ + /** + * 分页查询出库单列表 + */ + public List queryList(StockOutOrderDO stockOutOrderDO); + + /** + * 新增出库单 + */ + public Boolean insert(StockOutOrderDO stockOutOrderDO); + + /** + * 修改出库单 + */ + public Boolean update(StockOutOrderDO stockOutOrderDO); + + /** + * 批量删除出库单 + */ + public Boolean delete(Long[] outOrderIds); + + + /** + * 查询出库单 + */ + public StockOutOrderPO getInfo(Long outOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java new file mode 100644 index 000000000..2e8876033 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/mapper/StockOutOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockOutOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; + +import java.util.List; + +/** + * 出库单Mapper接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface StockOutOrderMapper extends BaseMapper +{ + /** + * 查询出库单列表 + */ + public List queryList(StockOutOrderDO stockOutOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/persistence/StockOutOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/persistence/StockOutOrderImpl.java new file mode 100644 index 000000000..5e75d98a8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/persistence/StockOutOrderImpl.java @@ -0,0 +1,107 @@ +package com.mhd.wms.domain.stockOutOrder.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 出库单Service业务层处理 + * + * @author gen + * @date 2024-05-28 + */ +@Service +public class StockOutOrderImpl extends ServiceImpl implements IStockOutOrderService, IDeliveTaskTypeService { + @Autowired + private StockOutOrderMapper stockOutOrderMapper; + + /** + * 查询出库单列表 + */ + @Override + public List queryList(StockOutOrderDO stockOutOrderDO) + { + return stockOutOrderMapper.queryList(stockOutOrderDO); + } + + /** + * 新增出库单 + */ + @Override + public Boolean insert(StockOutOrderDO stockOutOrderDO) { + StockOutOrder stockOutOrder = new StockOutOrder(); + BeanUtils.copyProperties(stockOutOrderDO,stockOutOrder); + return this.save(stockOutOrder); + } + + /** + * 修改出库单 + */ + @Override + public Boolean update(StockOutOrderDO stockOutOrderDO) { + StockOutOrder stockOutOrder = new StockOutOrder(); + BeanUtils.copyProperties(stockOutOrderDO,stockOutOrder); + return this.updateById(stockOutOrder); + } + + /** + * 批量删除出库单 + */ + @Override + public Boolean delete(Long[] outOrderIds ) { + List list = new ArrayList<>(); + for (Long id : outOrderIds) { + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setOutOrderId(id); + stockOutOrder.setDelFlag(2); + list.add(stockOutOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改出库单 + */ + @Override + public StockOutOrderPO getInfo(Long outOrderId) { + StockOutOrder stockOutOrder = this.getById(outOrderId); + StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); + BeanUtils.copyProperties(stockOutOrder,stockOutOrderPO); + return stockOutOrderPO; + } + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/8/1 13:56 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //标记收货单任务已下发 + return update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getCheckOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(StockOutOrder::getCheckOperatorsName, deliveTaskDO.getOperatorsName()) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderBasePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderBasePO.java new file mode 100644 index 000000000..be185e318 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderBasePO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.domain.stockOutOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockOutOrderBasePO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderPO.java new file mode 100644 index 000000000..9e7532e92 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/po/StockOutOrderPO.java @@ -0,0 +1,274 @@ +package com.mhd.wms.domain.stockOutOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +@ApiModel(value = "出库单对象", description = "出库单响应对象") +public class StockOutOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @ApiModelProperty("复核任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("出库单复核统计") + private OutMaterialCheckPO outMaterialCheckPO; + + @ApiModelProperty("越库单id") + private Long overStockId; + + @ApiModelProperty("越库单状态 0:无状态 1:处理中 2:越库完成") + @Excel(name = "越库单状态 0:无状态 1:处理中 2:越库完成") + private Integer overStockStatus; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long overStockType; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/AllocationByOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/AllocationByOrderDO.java new file mode 100644 index 000000000..fece13d4a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/AllocationByOrderDO.java @@ -0,0 +1,73 @@ +package com.mhd.wms.domain.stockOutOrder.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author ZhouGY + * @title AllocationSowingWallDO + * @description: 播种分货 + * @date 2024/6/5 14:29 + **/ +@Data +public class AllocationByOrderDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料编码/物料条码/序列号") + @Excel(name = "物料编码/物料条码/序列号") + private String materialNumber; + + @ApiModelProperty("是否单件扫描:1-是 2-否") + @Excel(name = "是否单件扫描:1-是 2-否") + private Integer singleScan; + + @ApiModelProperty("数量EA") + @Excel(name = "数量EA") + private BigDecimal quantity; + + @ApiModelProperty("集货仓库id") + @Excel(name = "集货仓库id") + private Long warehouseId; + + @ApiModelProperty("集货仓库编码") + @Excel(name = "集货仓库编码") + private String warehouseCode; + + @ApiModelProperty("集货仓库名称") + @Excel(name = "集货仓库名称") + private String warehouseName; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderBaseDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderBaseDO.java new file mode 100644 index 000000000..d5bd2eb08 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderBaseDO.java @@ -0,0 +1,108 @@ +package com.mhd.wms.domain.stockOutOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockOutOrderBaseDO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderDO.java new file mode 100644 index 000000000..3f825d042 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/todo/StockOutOrderDO.java @@ -0,0 +1,293 @@ +package com.mhd.wms.domain.stockOutOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @ApiModelProperty("复核任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("出库单id集合") + private List outOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("物料审核数量") + @Excel(name = "物料审核数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("出库状态大于某个状态") + private Integer gtStatus; + + @ApiModelProperty("出库状态小于某个状态") + private Integer ltStatus; + + @ApiModelProperty("大于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer gtCheckStatus; + + @ApiModelProperty("小于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer ltCheckStatus; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java new file mode 100644 index 000000000..8bab73d5d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/service/StockOutOrderDomainService.java @@ -0,0 +1,1001 @@ +package com.mhd.wms.domain.stockOutOrder.service; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.PackDetailFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.facade.IMobilizeManageService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO; +import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailBaseDO; +import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; +import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService; +import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import com.mhd.wms.domain.replenishmentNotice.service.ReplenishmentNoticeDomainService; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.waveOrder.factorys.WaveOrderServiceFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 出库单 + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class StockOutOrderDomainService { + + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; + @Autowired + private IHandoverTaskOrderService handoverTaskOrderService; + @Autowired + private IOutOrderAbnormalService outOrderAbnormalService; + @Autowired + private PickingOrderDomainService pickingOrderDomainService; + @Autowired + private ReplenishmentNoticeDomainService replenishmentNoticeDomainService; + @Autowired + private IMobilizeManageService iMobilizeManageService; + @Autowired + private IMobilizeManageDetailService iMobilizeManageDetailService; + @Autowired + private StockInOrderDomainService stockInOrderDomainService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + @Autowired + private WaveOrderServiceFactory waveOrderServiceFactory; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private PushSyncBmsDomainService pushSyncBmsDomainService; + + + /** + * 分页查询出库单列表 + */ + public List queryList(StockOutOrderDO stockOutOrderDO) { + return stockOutOrderService.queryList(stockOutOrderDO); + } + + + /** + * 新增出库单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean insert(StockOutOrderDO stockOutOrderDO) { + stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + //设置物料信息 + setMaterialDetailInfo(stockOutOrderDO); + //统计种类 + stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size()); + //统计总数量 + BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setVolumeLimit(volumeLimit); + stockOutOrderService.insert(stockOutOrderDO); + return outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + } + + /** + * 批量新增出库单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List stockOutOrderDOList) { + for (StockOutOrderDO stockOutOrderDO : stockOutOrderDOList){ + if (StringUtils.isBlank(stockOutOrderDO.getOutOrderNumber())){ + stockOutOrderDO.setOutOrderNumber(OrderSequence.getOrderCode("CK")); + } + //设置物料信息 + setMaterialDetailInfo(stockOutOrderDO); + //统计种类 + stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size()); + //统计总数量 + BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setVolumeLimit(volumeLimit); + stockOutOrderService.insert(stockOutOrderDO); + outMaterialDetailService.batchInsert(stockOutOrderDO.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + } + return true; + } + + /** + * 修改出库单 + */ + public Boolean update(StockOutOrderDO stockOutOrderDO) { + StockOutOrderPO stockInOrderPO = stockOutOrderService.getInfo(stockOutOrderDO.getOutOrderId()); + if (stockInOrderPO == null){ + throw new ServiceException("出库单信息不存在"); + } + //设置物料信息 + setMaterialDetailInfo(stockOutOrderDO); + //统计种类 + stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size()); + //统计总数量 + BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setQuantity(quantity); + //统计总重量 + BigDecimal weightLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setWeightLimit(weightLimit); + //统计总体积 + BigDecimal volumeLimit = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + stockOutOrderDO.setVolumeLimit(volumeLimit); + stockOutOrderService.update(stockOutOrderDO); + OutMaterialDetailBaseDO outMaterialDetailBaseDO = new OutMaterialDetailBaseDO(); + BeanUtils.copyProperties(stockOutOrderDO, outMaterialDetailBaseDO); + outMaterialDetailBaseDO.setOutOrderNumber(stockInOrderPO.getOutOrderNumber()); + return outMaterialDetailService.batchUpdate(stockOutOrderDO.getMaterialDetailList(), outMaterialDetailBaseDO); + } + + public Boolean close(StockOutOrderDO stockOutOrderDO) { + StockOutOrderPO stockInOrderPO = stockOutOrderService.getInfo(stockOutOrderDO.getOutOrderId()); + if (stockInOrderPO == null){ + throw new ServiceException("出库单信息不存在"); + } + + if (stockInOrderPO.getStatus() != 1){ + throw new ServiceException("只有已创建状态下能允许关闭出库单"); + } + stockOutOrderDO.setStatus(11); + return stockOutOrderService.update(stockOutOrderDO); + } + + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean manualAssign(StockOutOrderDO stockOutOrderDO){ + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getStatus() > 3){ + throw new ServiceException("收货单已完成分配"); + } + //修改物料明细信息 + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + //修改出库单 + return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); + } + + @Transactional(rollbackFor = Exception.class) + public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){ + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getStatus() > 3){ + throw new ServiceException("收货单已完成分配"); + } + //TODO 根据规则获取自动分配的库存,并且组装数据 + Boolean isAutoAssign = true; + if(isAutoAssign){ + return isAutoAssign; + } + //1、查询商品的库存周转规则 + //2、查询商品的库存分配规则 + //3、周转规则进行库存排序查询 + //4、库存分配规则锁定库位种类、库位分类、混放策略、物料状态信息 + //5、库存分配规则优先级分配数量,优先级1的不够,再分2的,如果都不够暂时设计先报错 + + //修改物料明细信息 + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + //修改出库单 + return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 1); + } + + + /** + * @description 取消分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean cancelAssign(StockOutOrderDO stockOutOrderDO){ + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getStatus() > 4){ + throw new ServiceException("出库单已拣货,不允许取消分配!"); + } + //修改物料明细信息 + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchCancelAssignUpdate(stockOutOrderDb.getOutOrderNumber(), stockOutOrderDO.getMaterialDetailList()); + //修改出库单 + return updateStockOutOrderByAllocation(stockOutOrderDb, stockOutOrderPO, 2); + } + + /** + * @description 修改出库单 + * @author ZhouGY + * @date 2024/8/8 16:18 + * @param stockOutOrderDb + * @param stockOutOrderPO + * @return Boolean + */ + public Boolean updateStockOutOrderByAllocation(StockOutOrder stockOutOrderDb, StockOutOrderPO stockOutOrderPO, Integer type) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + int status = judgeAllocationQuantityByManualAssign(stockOutOrderPO.getAllocationQuantity(), stockOutOrderDb.getQuantity(),type); + BigDecimal allocationQuantity = stockOutOrderDb.getAllocationQuantity(); + if (type == 2){ + //取消分配需要比较作业数量与已分配数量 + if(stockOutOrderPO.getAllocationQuantity().compareTo(allocationQuantity) > 0){ + throw new ServiceException("取消分配数量不能大于已分配数量"); + } + allocationQuantity = allocationQuantity.subtract(stockOutOrderPO.getAllocationQuantity()); + status = judgeAllocationQuantityByManualAssign(stockOutOrderPO.getAllocationQuantity(), stockOutOrderPO.getAlreadyAllocationQuantity(),type); + + }else { + allocationQuantity = allocationQuantity.add(stockOutOrderPO.getAllocationQuantity()); + } + return stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getStatus, status) + .set(StockOutOrder::getAllocationQuantity, allocationQuantity) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderId, stockOutOrderDb.getOutOrderId())); + } + + + /** + * 批量删除出库单 + */ + public Boolean delete(Long[] outOrderIds) { + return stockOutOrderService.delete(outOrderIds); + } + + /** + * 获取出库单详细信息 + */ + public StockOutOrderPO getInfo(Long outOrderId) { + return stockOutOrderService.getInfo(outOrderId); + } + + /** + * 获取出库单详细信息 + */ + public StockOutOrderPO getInfoChildren(Long outOrderId) { + StockOutOrderPO stockOutOrderPO = stockOutOrderService.getInfo(outOrderId); + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + List materialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO); + stockOutOrderPO.setMaterialDetailList(materialDetailPOList); + return stockOutOrderPO; + } + + /** + * 获取出库单详细信息 + */ + public StockOutOrderPO getInfoByApp(Long outOrderId) { + StockOutOrderPO stockOutOrderPO = stockOutOrderService.getInfo(outOrderId); + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + List materialDetailPOList = outMaterialDetailService.queryList(outMaterialDetailDO); + stockOutOrderPO.setMaterialDetailList(materialDetailPOList); + return stockOutOrderPO; + } + + /** + * @description 审核入库单 + * @author ZhouGY + * @date 2024/5/21 13:53 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean auditState(StockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //统计是否已经审核 + int count = stockOutOrderService.count(new QueryWrapper().lambda() + .eq(StockOutOrder::getAuditStatus, 3) + .eq(StockOutOrder::getDelFlag, 1) + .in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + if (count > 0){ + throw new ServiceException("出库单已审核,请重新选择!"); + } + return stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(3 == stockOutOrderDO.getAuditStatus(), StockOutOrder::getStatus, 2) + .set(StockOutOrder::getAuditStatus, stockOutOrderDO.getAuditStatus()) + .set(StockOutOrder::getAuditRemark, stockOutOrderDO.getAuditRemark()) + .set(StockOutOrder::getAuditBy, loginUser.getUserid()) + .set(StockOutOrder::getAuditByName, loginUser.getUsername()) + .set(StockOutOrder::getAuditTime, new Date()) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + } + + + /** + * @description 生成拣货单 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genPickingOrder(StockOutOrderDO stockOutOrderDO){ + List stockOutOrderList = stockOutOrderService.list(new QueryWrapper().lambda() + .eq(StockOutOrder::getDelFlag, 1) + .in(StockOutOrder::getStatus,3,4) + .in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + if (CollectionUtils.isEmpty(stockOutOrderList)){ + throw new ServiceException("只有已分配过的出库单才能生成拣货单"); + } + //修改出库单状态为拣货中 + List stockOutOrderId = stockOutOrderList.stream().map(StockOutOrder::getOutOrderId).collect(Collectors.toList()); + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setStatus(6); + stockOutOrderService.update(stockOutOrder, new UpdateWrapper().lambda().in(StockOutOrder::getOutOrderId, stockOutOrderId)); + + List stockOutOrderNumber = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList()); + List list = outMaterialDetailService.list(new QueryWrapper().lambda().in(OutMaterialDetail::getOutOrderNumber, stockOutOrderNumber).eq(OutMaterialDetail::getGenPickingOrder, 2)); + if (CollectionUtils.isEmpty(list)){ + throw new ServiceException("不存在已分配且未生成拣货单的物料明细,无法生成拣货单!"); + } + List outOrderNumberList = stockOutOrderList.stream().map(StockOutOrder::getOutOrderNumber).collect(Collectors.toList()); + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumberList(outOrderNumberList); + List outMaterialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO); + Map> outMaterialDetailPOListMap = outMaterialDetailPOList.stream().collect(Collectors.groupingBy(OutMaterialDetailPO::getOutOrderNumber)); + List pickingOrderDOList = new ArrayList<>(); + stockOutOrderList.forEach(p -> { + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + BeanUtils.copyProperties(p, pickingOrderDO); + pickingOrderDO.setOrderNumber(p.getOutOrderNumber()); + pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH")); + pickingOrderDO.setQuantity(p.getAllocationQuantity()); + List outMaterialDetailPOS = outMaterialDetailPOListMap.get(p.getOutOrderNumber()); + List pickingMaterialDetailList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(outMaterialDetailPOS)){ + outMaterialDetailPOS.forEach(outMaterialDetailPO -> { + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(outMaterialDetailPO, pickingMaterialDetailDO); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDO.setQuantity(outMaterialDetailPO.getAllocationQuantity()); + //设置出库明细关联id + pickingMaterialDetailDO.setOutUniqueId(outMaterialDetailPO.getUniqueId()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + List outMaterialDetailPOListChildren = outMaterialDetailPO.getChildren(); + if (!CollectionUtils.isEmpty(outMaterialDetailPOListChildren)){ + outMaterialDetailPOListChildren.forEach(outMaterialDetailPOChildren -> { + PickingMaterialDetailDO pickingMaterialDetailDOChildren = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(pickingMaterialDetailDO, pickingMaterialDetailDOChildren); + BeanUtils.copyProperties(outMaterialDetailPOChildren, pickingMaterialDetailDOChildren); + pickingMaterialDetailDOChildren.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDOChildren.setQuantity(outMaterialDetailPOChildren.getAllocationQuantity()); + //设置出库明细关联id + pickingMaterialDetailDOChildren.setOutUniqueId(outMaterialDetailPOChildren.getUniqueId()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + }); + } + }); + pickingOrderDO.setMaterialDetailList(pickingMaterialDetailList); + } + pickingOrderDOList.add(pickingOrderDO); + }); + return pickingOrderDomainService.batchInsert(pickingOrderDOList); + } + + /** + * @description 补货 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param outOrderId + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genReplenishmentNotice(Long outOrderId){ + StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getDelFlag, 1) + .eq(StockOutOrder::getOutOrderId, outOrderId)); + if (stockOutOrder == null){ + throw new ServiceException("出库单不存在"); + } + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumber(stockOutOrder.getOutOrderNumber()); + outMaterialDetailDO.setLevel(1); + List outMaterialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO); + List replenishmentNoticeDOList = new ArrayList<>(); + outMaterialDetailPOList.forEach(p -> { + ReplenishmentNoticeDO replenishmentNoticeDO = new ReplenishmentNoticeDO(); + BeanUtils.copyProperties(stockOutOrder, replenishmentNoticeDO, "createBy", "createByName", "createTime", + "update_by", "updateByName", "updateTime"); + replenishmentNoticeDO.setQuantity(p.getAllocationQuantity().subtract(BigDecimal.ZERO)); + replenishmentNoticeDOList.add(replenishmentNoticeDO); + }); + + return replenishmentNoticeDomainService.batchInsert(replenishmentNoticeDOList); + } + + /** + * @param stockOutOrderDO + * @return Boolean + * @description 复核下发 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean checkTaskDistribution(StockOutOrderDO stockOutOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockOutOrderDO stockOutOrderDOQuery = new StockOutOrderDO(); + stockOutOrderDOQuery.setOutOrderIds(stockOutOrderDO.getOutOrderIds()); + stockOutOrderDOQuery.setCheckTaskDistribution(1); + List stockOutOrderPOList = stockOutOrderService.queryList(stockOutOrderDOQuery); + if (CollectionUtils.isEmpty(stockOutOrderPOList)) { + throw new ServiceException("收货单不存在或已下发,请重新选择"); + } + //复核下发任务 + genDeliveTask(stockOutOrderPOList, stockOutOrderDO); + //标记收货单任务已下发 + return stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getCheckTaskDistribution, 2) + .set(StockOutOrder::getCheckTaskDistributionTime, new Date()) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .in(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderIds())); + } + + /** + * 获取出库单复核详细信息 + */ + public StockOutOrderPO getCheckInfo(StockOutOrderDO stockOutOrderDO) { + StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getDelFlag, 1) + .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); + if (stockOutOrder == null){ + throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】不存在"); + } + if (stockOutOrder.getReview() != 1){ + throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】不需要复核"); + } + if (stockOutOrder.getStatus() != 7){ + throw new ServiceException("出库单【" + stockOutOrderDO.getOutOrderNumber() + "】状态不是拣货完成"); + } + StockOutOrderPO stockOutOrderPO = new StockOutOrderPO(); + BeanUtils.copyProperties(stockOutOrder, stockOutOrderPO); + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + List outMaterialDetailPOList = outMaterialDetailService.queryListChildren(outMaterialDetailDO); + stockOutOrderPO.setMaterialDetailList(outMaterialDetailPOList); + BigDecimal weightLimit = BigDecimal.ZERO; + BigDecimal volumeLimit = BigDecimal.ZERO; + BigDecimal wantNumber = BigDecimal.ZERO; + BigDecimal alreadyNumber = BigDecimal.ZERO; + for (OutMaterialDetailPO outMaterialDetailPO : outMaterialDetailPOList){ + weightLimit = weightLimit.add(outMaterialDetailPO.getWeightLimit()); + volumeLimit = volumeLimit.add(outMaterialDetailPO.getVolumeLimit()); + wantNumber = wantNumber.add(outMaterialDetailPO.getPickingQuantity()); + alreadyNumber = alreadyNumber.add(outMaterialDetailPO.getCheckQuantity()); + } + OutMaterialCheckPO outMaterialCheckPO = new OutMaterialCheckPO(); + outMaterialCheckPO.setCount(outMaterialDetailPOList.size()); + outMaterialCheckPO.setWeightLimit(weightLimit); + outMaterialCheckPO.setVolumeLimit(volumeLimit); + outMaterialCheckPO.setAlreadyNumber(alreadyNumber); + outMaterialCheckPO.setNotHaveNumber(wantNumber.subtract(alreadyNumber)); + stockOutOrderPO.setOutMaterialCheckPO(outMaterialCheckPO); + return stockOutOrderPO; + } + + /** + * @description 单件复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + public OutMaterialCheckPO singleCheck(StockOutOrderDO stockOutOrderDO){ + if (ObjectUtil.isNull(stockOutOrderDO.getUpdateTime())){ + throw new ServiceException("出库单修改时间不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getCheckStatus() > 2){ + throw new ServiceException("出库单已完成复核,请重新选择"); + } + if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getCheckStatus, 2) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); + //修改物料明细信息 + stockOutOrderDO.setOutOrderNumber(stockOutOrderDb.getOutOrderNumber()); + return outMaterialDetailService.singleCheckUpdate(stockOutOrderDO); + } + + + /** + * @description 批量复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchCheck(StockOutOrderDO stockOutOrderDO){ + if (ObjectUtil.isNull(stockOutOrderDO.getUpdateTime())){ + throw new ServiceException("出库单修改时间不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getReview() == 2){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】不需要复核,请重新选择"); + } + if (stockOutOrderDb.getCheckStatus() > 2){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】已完成复核,请重新选择"); + } + if (stockOutOrderDb.getStatus() > 8){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】已出库,请重新选择"); + } + if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getCheckStatus, 2) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); + //修改物料明细信息 + stockOutOrderDO.setOutOrderNumber(stockOutOrderDb.getOutOrderNumber()); + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchCheckUpdate(stockOutOrderDO, 1); + return updateStockOutOrder(stockOutOrderPO, stockOutOrderDb, 1); + } + + /** + * @description 批量取消复核 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchCancelCheck(StockOutOrderDO stockOutOrderDO){ + if (ObjectUtil.isNull(stockOutOrderDO.getUpdateTime())){ + throw new ServiceException("出库单修改时间不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getCheckStatus() > 2){ + throw new ServiceException("出库单已完成复核,请重新选择"); + } + if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getCheckStatus, 2) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderNumber, stockOutOrderDO.getOutOrderNumber())); + //修改物料明细信息 + stockOutOrderDO.setOutOrderNumber(stockOutOrderDb.getOutOrderNumber()); + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchCheckUpdate(stockOutOrderDO, 2); + return updateStockOutOrder(stockOutOrderPO, stockOutOrderDb, 2); + } + + /** + * @description PDA复核 + * @author ZhouGY + * @date 2024/7/19 15:25 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean checkByApp(StockOutOrderDO stockOutOrderDO){ + if (ObjectUtil.isNull(stockOutOrderDO.getUpdateTime())){ + throw new ServiceException("出库单修改时间不能为空"); + } + StockOutOrder stockOutOrderDb = stockOutOrderService.getById(stockOutOrderDO.getOutOrderId()); + if (stockOutOrderDb == null){ + throw new ServiceException("出库单不存在"); + } + if (stockOutOrderDb.getCheckStatus() > 2){ + throw new ServiceException("出库单已完成复核,请重新选择"); + } + if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("拣货单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + //修改物料明细信息 + stockOutOrderDO.setOutOrderNumber(stockOutOrderDb.getOutOrderNumber()); + StockOutOrderPO stockOutOrderPO = outMaterialDetailService.batchCheckUpdate(stockOutOrderDO, 1); + return updateStockOutOrder(stockOutOrderPO, stockOutOrderDb, 1); + } + + /** + * @description 复核确认 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean checkConfirm(StockOutOrderDO stockOutOrderDO){ + List stockOutOrderPOList = stockOutOrderService.queryList(stockOutOrderDO); + if (CollectionUtils.isEmpty(stockOutOrderPOList)){ + throw new ServiceException("出库单不存在"); + } + StockOutOrderPO stockOutOrderPO = stockOutOrderPOList.get(0); + if (stockOutOrderPO.getCheckStatus() > 2){ + throw new ServiceException("出库单已完成复核,请重新选择"); + } + if (8 != stockOutOrderPO.getStatus()){ + throw new ServiceException("出库单未进行复核不允许确认!"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockOutOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutOrder::getStatus, 9) + .set(StockOutOrder::getCheckStatus, 3) + .set(StockOutOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutOrder::getUpdateTime, new Date()) + .eq(StockOutOrder::getOutOrderId, stockOutOrderDO.getOutOrderId())); + //生成复核追溯记录 + genInventoryStandingDetail(stockOutOrderPO); + //比较是否存在异常 并生成复核异常信息 + OutOrderAbnormalBaseDO outOrderAbnormalBaseDO = new OutOrderAbnormalBaseDO(); + BeanUtils.copyProperties(stockOutOrderPO, outOrderAbnormalBaseDO); + outOrderAbnormalBaseDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + outOrderAbnormalService.genOutOrderAbnormal(outOrderAbnormalBaseDO, 2); + //是否生成交接作业单 + genHandoverTaskOrder(stockOutOrderPO); + genStockInOrder(stockOutOrderPO); + //复核确认后,推送结算系统 +// pushSyncBmsDomainService.pushOutOrder(stockOutOrderPO.getOutOrderNumber()); + return true; + } + + /** + * @description 修改出库单数据 + * @author ZhouGY + * @date 2024/7/19 22:52 + * @param stockOutOrderPO + * @param stockOutOrderDb + * @param type 1-分配 2-取消分配 + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockOutOrder(StockOutOrderPO stockOutOrderPO, StockOutOrder stockOutOrderDb, Integer type){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setOutOrderId(stockOutOrderDb.getOutOrderId()); + stockOutOrder.setStatus(8); + stockOutOrder.setCheckStatus(2); + if (type == 1){ + stockOutOrder.setCheckQuantity(stockOutOrderDb.getCheckQuantity().add(stockOutOrderPO.getCheckQuantity())); + }else { + stockOutOrder.setCheckQuantity(stockOutOrderDb.getCheckQuantity().subtract(stockOutOrderPO.getCheckQuantity())); + } + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + return stockOutOrderService.updateById(stockOutOrder); + } + + + /** + * @description 调拨类型的出库单 根据出库单号 生成入库单 + * @author ZhouGY + * @date 2024/7/20 18:47 + * @param stockOutOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genStockInOrder(StockOutOrderPO stockOutOrderPO){ + if (!"diao_bo_chu_ku".equals(stockOutOrderPO.getOrderTypeCode())){ + return; + } + MobilizeManage mobilizeManage = iMobilizeManageService.getOne(new QueryWrapper().lambda().eq(MobilizeManage::getMobilizeCode, stockOutOrderPO.getMobilizeCode())); + if (ObjectUtil.isNull(mobilizeManage)){ + throw new ServiceException("调拨单不存在,请见调拨单号是否有误"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + MobilizeManageDetailDO mobilizeManageDetailDOQuery = new MobilizeManageDetailDO(); + mobilizeManageDetailDOQuery.setMobilizeCode(mobilizeManage.getMobilizeCode()); + List mobilizeManageDetailPODbList = iMobilizeManageDetailService.queryList(mobilizeManageDetailDOQuery); + Map> mobilizeManageDetailDbMap = mobilizeManageDetailPODbList.stream().collect(Collectors.groupingBy(p -> p + "," + p.getShipperCode())); + List stockInOrderDOList = new ArrayList<>(); + for (Map.Entry> map : mobilizeManageDetailDbMap.entrySet()){ + List mobilizeManageDetailPOList = map.getValue(); + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + stockInOrderDO.setMobilizeCode(mobilizeManage.getMobilizeCode()); + stockInOrderDO.setWarehouseId(mobilizeManage.getOutWarehouseId()); + stockInOrderDO.setWarehouseCode(mobilizeManage.getOutWarehouseCode()); + stockInOrderDO.setWarehouseName(mobilizeManage.getOutWarehouseName()); + MobilizeManageDetailPO mobilizeManageDetailDbPO = mobilizeManageDetailPOList.get(0); + stockInOrderDO.setShipperId(mobilizeManageDetailDbPO.getShipperId()); + stockInOrderDO.setShipperName(mobilizeManageDetailDbPO.getShipperName()); + stockInOrderDO.setOrderTypeCode("diao_po_ru_ku"); + stockInOrderDO.setOrderTypeName("调拨入库"); + stockInOrderDO.setDirectWarehouse(2); + stockInOrderDO.setMaterialQuantity(mobilizeManageDetailPOList.size()); + stockInOrderDO.setCreateBy(loginUser.getUserid()); + stockInOrderDO.setCreateByName(loginUser.getUsername()); + stockInOrderDO.setCreateTime(new Date()); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setQuantity(quantity); + List inMaterialDetailDOList = JSONUtil.toList(JSONUtil.parseArray(mobilizeManageDetailPOList), InMaterialDetailDO.class); + stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList); + stockInOrderDOList.add(stockInOrderDO); + } + stockInOrderDomainService.batchInsert(stockInOrderDOList); + } + + /** + * @description 根据指定规则生成波次单 + * @author ZhouGY + * @date 2024/6/7 15:06 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean genWaveOrder(StockOutOrderDO stockOutOrderDO){ + String waveOrderTypeCode = stockOutOrderDO.getWaveOrderTypeCode(); + return waveOrderServiceFactory.getWaveOrderTypeService(waveOrderTypeCode).saveWaveOrder(stockOutOrderDO); + } + + /** + * @description 生成交接作业单 + * @author ZhouGY + * @date 2024/5/31 14:59 + * @param stockOutOrderPO + */ + private void genHandoverTaskOrder(StockOutOrderPO stockOutOrderPO){ + //判断是否生成交接作业单 不需要复核的单子直接生成交接作业单 需要复核的单子复核后在生成 + if (stockOutOrderPO.getReview() == 2){ + return; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO(); + handoverTaskOrderDO.setOrganizationId(stockOutOrderPO.getOrganizationId()); + handoverTaskOrderDO.setOrganizationName(stockOutOrderPO.getOrganizationName()); + handoverTaskOrderDO.setTopOrganizationId(stockOutOrderPO.getTopOrganizationId()); + handoverTaskOrderDO.setWarehouseId(stockOutOrderPO.getWarehouseId()); + handoverTaskOrderDO.setWarehouseCode(stockOutOrderPO.getWarehouseCode()); + handoverTaskOrderDO.setWarehouseName(stockOutOrderPO.getWarehouseName()); + handoverTaskOrderDO.setShipperId(stockOutOrderPO.getShipperId()); + handoverTaskOrderDO.setShipperName(stockOutOrderPO.getShipperName()); + handoverTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("JJZYLS")); + handoverTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("JJZY")); + handoverTaskOrderDO.setStatus(1); + handoverTaskOrderDO.setOrderTypeCode(stockOutOrderPO.getOrderTypeCode()); + handoverTaskOrderDO.setOrderTypeName(stockOutOrderPO.getOrderTypeName()); + handoverTaskOrderDO.setExpectTime(stockOutOrderPO.getExpectTime()); + handoverTaskOrderDO.setOrderNumber(stockOutOrderPO.getOutOrderNumber()); + handoverTaskOrderDO.setCreateBy(loginUser.getUserid()); + handoverTaskOrderDO.setCreateByName(loginUser.getUsername()); + handoverTaskOrderDO.setCreateTime(new Date()); + handoverTaskOrderService.insert(handoverTaskOrderDO);; + } + + /** + * @description 生成复核追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param stockOutOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(StockOutOrderPO stockOutOrderPO){ + OutMaterialDetailDO outMaterialDetailDO = new OutMaterialDetailDO(); + outMaterialDetailDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber()); + List outMaterialDetailPOList = outMaterialDetailService.queryList(outMaterialDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + for (OutMaterialDetailPO outMaterialDetailPO : outMaterialDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(stockOutOrderPO.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(stockOutOrderPO.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(stockOutOrderPO.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(outMaterialDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(outMaterialDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(outMaterialDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(outMaterialDetailPO.getOutOrderNumber()); + inventoryStandingDetailDO.setWarehouseId(stockOutOrderPO.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(stockOutOrderPO.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(stockOutOrderPO.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(4); + inventoryStandingDetailDO.setMaterialQuantity(outMaterialDetailPO.getCheckQuantity()); + inventoryStandingDetailDO.setCreateBy(loginUser.getUserid()); + inventoryStandingDetailDO.setCreateByName(loginUser.getUsername()); + inventoryStandingDetailDO.setCreateTime(new Date()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + /** + * @description 复核生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param stockOutOrderPOList + * @param stockOutOrderDO + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(List stockOutOrderPOList, StockOutOrderDO stockOutOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (StockOutOrderPO stockOutOrderPO : stockOutOrderPOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(stockOutOrderPO.getOutOrderNumber()); + deliveTaskDO.setWarehouseId(stockOutOrderPO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(stockOutOrderPO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(stockOutOrderPO.getWarehouseName()); + deliveTaskDO.setTaskType(4); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(stockOutOrderDO.getCheckOperatorsBy()); + deliveTaskDO.setOperatorsName(stockOutOrderDO.getCheckOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } + + /** + * @description 设置物料信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param stockOutOrderDO + */ + private void setMaterialDetailInfo(StockOutOrderDO stockOutOrderDO){ + List outMaterialDetailDOList = stockOutOrderDO.getMaterialDetailList(); + outMaterialDetailDOList.forEach(outMaterialDetailDO -> { + MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(outMaterialDetailDO.getMaterialBaseInfoId()); + if (materialBaseInfoPO == null){ + throw new ServiceException("物料基础信息不存在"); + } + outMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + outMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + outMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode()); + outMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId()); + outMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode()); + outMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName()); + + //获取包装详情 + AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA"); + if(!"200".equals(String.valueOf(packDetailResult.get("code")))){ + throw new ServiceException("获取物料单位EA信息失败"); + } + PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class); + outMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId()); + outMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode()); + outMaterialDetailDO.setUnitName(packDetailFeignPO.getName()); + outMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber()); + outMaterialDetailDO.setWeightLimit(packDetailFeignPO.getWeight()); + outMaterialDetailDO.setVolumeLimit(packDetailFeignPO.getVolume()); + + //获取仓库控制信息 + MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId()); + if (materialWarehouseControlPO == null){ + throw new ServiceException("物料仓库控制信息不存在"); + } + outMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId()); + outMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage()); + }); + + } + + /** + * @description 判断分配数量是否等于计划数量 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param allocationQuantity + * @return Integer + */ + private Integer judgeAllocationQuantityByManualAssign(BigDecimal allocationQuantity, BigDecimal quantity,Integer type){ + if(2 == type){ + if (allocationQuantity.compareTo(quantity) == 0) { + return 2; + } else { + return 3; + } + } + if (allocationQuantity.compareTo(quantity) == 0) { + return 4; + } else { + return 3; + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/entity/StockOutTaskOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/entity/StockOutTaskOrder.java new file mode 100644 index 000000000..ee785bcc6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/entity/StockOutTaskOrder.java @@ -0,0 +1,148 @@ +package com.mhd.wms.domain.stockOutTaskOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 拣货作业单对象 stock_out_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutTaskOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货作业单id") + @TableId(type = IdType.AUTO) + private Long outTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + private Integer status; + + @ApiModelProperty("拣货类型:1-按单拣货 2-按品拣货") + @Excel(name = "拣货类型:1-按单拣货 2-按品拣货") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/facade/IStockOutTaskOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/facade/IStockOutTaskOrderService.java new file mode 100644 index 000000000..18a57622d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/facade/IStockOutTaskOrderService.java @@ -0,0 +1,52 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockOutTaskOrder.entity.StockOutTaskOrder; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; + +import java.util.List; + +/** + * 拣货作业单Service接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface IStockOutTaskOrderService extends IService +{ + /** + * 分页查询拣货作业单列表 + */ + public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO); + + /** + * 新增拣货作业单 + */ + public Boolean insert(StockOutTaskOrderDO stockOutTaskOrderDO); + + /** + * 修改拣货作业单 + */ + public Boolean update(StockOutTaskOrderDO stockOutTaskOrderDO); + + /** + * 批量删除拣货作业单 + */ + public Boolean delete(Long[] outTaskOrderIds); + + + /** + * 查询拣货作业单 + */ + public StockOutTaskOrderPO getInfo(Long outTaskOrderId); + + /** + * @description 生成拣货作业单 + * @author ZhouGY + * @date 2024/7/16 15:12 + * @param stockOutTaskOrderDOList + * @return Boolean + */ + public Boolean genStockPickingTaskOrder(List stockOutTaskOrderDOList); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/mapper/StockOutTaskOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/mapper/StockOutTaskOrderMapper.java new file mode 100644 index 000000000..a5a3c0a95 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/mapper/StockOutTaskOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockOutTaskOrder.entity.StockOutTaskOrder; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; + +import java.util.List; + +/** + * 拣货作业单Mapper接口 + * + * @author gen + * @date 2024-05-28 + */ +public interface StockOutTaskOrderMapper extends BaseMapper +{ + /** + * 查询拣货作业单列表 + */ + public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/persistence/StockOutTaskOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/persistence/StockOutTaskOrderImpl.java new file mode 100644 index 000000000..9d53d39f7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/persistence/StockOutTaskOrderImpl.java @@ -0,0 +1,167 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.stockOutTaskOrder.entity.StockOutTaskOrder; +import com.mhd.wms.domain.stockOutTaskOrder.repository.facade.IStockOutTaskOrderService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.mapper.StockOutTaskOrderMapper; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.entity.TaskPickingMaterialDetail; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.facade.ITaskPickingMaterialDetailService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 拣货作业单Service业务层处理 + * + * @author gen + * @date 2024-05-28 + */ +@Service +public class StockOutTaskOrderImpl extends ServiceImpl implements IStockOutTaskOrderService, IDeliveTaskTypeService { + @Autowired + private StockOutTaskOrderMapper stockOutTaskOrderMapper; + @Autowired + private ITaskPickingMaterialDetailService taskPickingMaterialDetailService; + @Autowired + private IdGenerator idGenerator; + + /** + * 查询拣货作业单列表 + */ + @Override + public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO) + { + return stockOutTaskOrderMapper.queryList(stockOutTaskOrderDO); + } + + /** + * 新增拣货作业单 + */ + @Override + public Boolean insert(StockOutTaskOrderDO stockOutTaskOrderDO) { + StockOutTaskOrder stockOutTaskOrder = new StockOutTaskOrder(); + BeanUtils.copyProperties(stockOutTaskOrderDO,stockOutTaskOrder); + return this.save(stockOutTaskOrder); + } + + /** + * 修改拣货作业单 + */ + @Override + public Boolean update(StockOutTaskOrderDO stockOutTaskOrderDO) { + StockOutTaskOrder stockOutTaskOrder = new StockOutTaskOrder(); + BeanUtils.copyProperties(stockOutTaskOrderDO,stockOutTaskOrder); + return this.updateById(stockOutTaskOrder); + } + + /** + * 批量删除拣货作业单 + */ + @Override + public Boolean delete(Long[] outTaskOrderIds ) { + List list = new ArrayList<>(); + for (Long id : outTaskOrderIds) { + StockOutTaskOrder stockOutTaskOrder = new StockOutTaskOrder(); + stockOutTaskOrder.setOutTaskOrderId(id); + stockOutTaskOrder.setDelFlag(2); + list.add(stockOutTaskOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改拣货作业单 + */ + @Override + public StockOutTaskOrderPO getInfo(Long outTaskOrderId) { + StockOutTaskOrder stockOutTaskOrder = this.getById(outTaskOrderId); + StockOutTaskOrderPO stockOutTaskOrderPO = new StockOutTaskOrderPO(); + BeanUtils.copyProperties(stockOutTaskOrder,stockOutTaskOrderPO); + return stockOutTaskOrderPO; + } + + /** + * @description 生成拣货作业单 + * @author ZhouGY + * @date 2024/7/16 15:07 + * @param stockOutTaskOrderDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean genStockPickingTaskOrder(List stockOutTaskOrderDOList){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List stockOutTaskOrderList = new ArrayList<>(); + List taskPickingMaterialDetailList = new ArrayList<>(); + stockOutTaskOrderDOList.forEach(stockOutTaskOrderDO -> { + StockOutTaskOrder stockOutTaskOrder = new StockOutTaskOrder(); + BeanUtils.copyProperties(stockOutTaskOrderDO, stockOutTaskOrder, "materialDetailId", "status", "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + stockOutTaskOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockOutTaskOrder.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockOutTaskOrder.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockOutTaskOrder.setCreateBy(loginUser.getUserid()); + stockOutTaskOrder.setCreateByName(loginUser.getUsername()); + stockOutTaskOrder.setCreateTime(new Date()); + stockOutTaskOrder.setUpdateBy(loginUser.getUserid()); + stockOutTaskOrder.setUpdateByName(loginUser.getUsername()); + stockOutTaskOrder.setUpdateTime(new Date()); + stockOutTaskOrderList.add(stockOutTaskOrder); + stockOutTaskOrderDO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDO -> { + TaskPickingMaterialDetail taskPickingMaterialDetail = new TaskPickingMaterialDetail(); + BeanUtils.copyProperties(taskPickingMaterialDetailDO, taskPickingMaterialDetail, "materialDetailId", "status", "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + taskPickingMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + taskPickingMaterialDetail.setTaskNumber(stockOutTaskOrder.getTaskNumber()); + taskPickingMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + taskPickingMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + taskPickingMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + taskPickingMaterialDetail.setCreateBy(loginUser.getUserid()); + taskPickingMaterialDetail.setCreateByName(loginUser.getUsername()); + taskPickingMaterialDetail.setCreateTime(new Date()); + taskPickingMaterialDetail.setUpdateBy(loginUser.getUserid()); + taskPickingMaterialDetail.setUpdateByName(loginUser.getUsername()); + taskPickingMaterialDetail.setUpdateTime(new Date()); + taskPickingMaterialDetailList.add(taskPickingMaterialDetail); + }); + }); + //保存拣货单作业任务 + saveBatch(stockOutTaskOrderList); + //保存拣货作业单物料明细数量 + return taskPickingMaterialDetailService.saveBatch(taskPickingMaterialDetailList); + } + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/8/1 13:47 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //标记收货单任务已下发 + return update(null, new UpdateWrapper().lambda() + .set(StockOutTaskOrder::getOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(StockOutTaskOrder::getOperatorsName, deliveTaskDO.getOperatorsName()) + .set(StockOutTaskOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutTaskOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutTaskOrder::getUpdateTime, new Date()) + .eq(StockOutTaskOrder::getTaskNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/StockOutTaskOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/StockOutTaskOrderPO.java new file mode 100644 index 000000000..b4649caba --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/StockOutTaskOrderPO.java @@ -0,0 +1,159 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 拣货作业单对象 stock_out_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +@ApiModel(value = "拣货作业单对象", description = "拣货作业单响应对象") +public class StockOutTaskOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货作业单id") + private Long outTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + private Integer status; + + @ApiModelProperty("拣货类型:1-按单拣货 2-按品拣货") + @Excel(name = "拣货类型:1-按单拣货 2-按品拣货") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("库位分组") + private List taskStorageList; + + @ApiModelProperty("物料分组") + private List taskMaterialList; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java new file mode 100644 index 000000000..666e74897 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskMaterialPO.java @@ -0,0 +1,71 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskMaterialPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("待拣货数量") + @Excel(name = "待拣货数量") + private BigDecimal waitPickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("拣货作业物料详情") + private List taskPickingMaterialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskStoragePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskStoragePO.java new file mode 100644 index 000000000..522a32645 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/po/TaskStoragePO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskStoragePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("待拣货数量") + @Excel(name = "待拣货数量") + private BigDecimal waitPickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("拣货作业物料详情") + private List taskPickingMaterialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/todo/StockOutTaskOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/todo/StockOutTaskOrderDO.java new file mode 100644 index 000000000..39a4a417c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/repository/todo/StockOutTaskOrderDO.java @@ -0,0 +1,168 @@ +package com.mhd.wms.domain.stockOutTaskOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 拣货作业单对象 stock_out_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutTaskOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货作业单id") + private Long outTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + private Integer status; + + @ApiModelProperty("拣货类型:1-按单拣货 2-按品拣货") + @Excel(name = "拣货类型:1-按单拣货 2-按品拣货") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("拣货作业物料详情") + private List taskPickingMaterialDetailList; + + @ApiModelProperty("作业数量(当前拣货作业数量)") + @Excel(name = "作业数量 (当前拣货作业数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业拣货物料种数(当前拣货作业物料种数)") + @Excel(name = "作业拣货物料种数(当前拣货作业物料种数)") + private Integer actualPickingMaterialQuantity; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java new file mode 100644 index 000000000..d4a975d5a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutTaskOrder/service/StockOutTaskOrderDomainService.java @@ -0,0 +1,570 @@ +package com.mhd.wms.domain.stockOutTaskOrder.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.mobilizeManage.entity.MobilizeManage; +import com.mhd.wms.domain.mobilizeManage.repository.facade.IMobilizeManageService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.facade.IMobilizeManageDetailService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.mapper.OutMaterialDetailMapper; +import com.mhd.wms.domain.outOrderAbnormal.repository.facade.IOutOrderAbnormalService; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalBaseDO; +import com.mhd.wms.domain.pickingOrder.entity.PickingOrder; +import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.stockOutTaskOrder.entity.StockOutTaskOrder; +import com.mhd.wms.domain.stockOutTaskOrder.repository.facade.IStockOutTaskOrderService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.TaskMaterialPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.TaskStoragePO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.facade.ITaskPickingMaterialDetailService; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderService; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 拣货作业单 + * + * @author gen + * @date 2024-05-28 + */ +@Service +@Slf4j +public class StockOutTaskOrderDomainService { + + @Autowired + private IStockOutTaskOrderService stockOutTaskOrderService; + @Autowired + private IPickingOrderService pickingOrderService; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IWaveOutOrderService waveOutOrderService; + @Autowired + private IWaveOrderService waveOrderService; + @Autowired + private ITaskPickingMaterialDetailService taskPickingMaterialDetailService; + @Autowired + private IMobilizeManageService iMobilizeManageService; + @Autowired + private IMobilizeManageDetailService iMobilizeManageDetailService; + @Autowired + private StockInOrderDomainService stockInOrderDomainService; + @Autowired + private IOutOrderAbnormalService outOrderAbnormalService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Resource + private OutMaterialDetailMapper outMaterialDetailMapper; + + + /** + * 分页查询拣货作业单列表 + */ + public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO) { + return stockOutTaskOrderService.queryList(stockOutTaskOrderDO); + } + + + /** + * 新增拣货作业单 + */ + public Boolean insert(StockOutTaskOrderDO stockOutTaskOrderDO) { + + return stockOutTaskOrderService.insert(stockOutTaskOrderDO); + } + + /** + * 修改拣货作业单 + */ + public Boolean update(StockOutTaskOrderDO stockOutTaskOrderDO) { + return stockOutTaskOrderService.update(stockOutTaskOrderDO); + } + + /** + * 批量删除拣货作业单 + */ + public Boolean delete(Long[] outTaskOrderIds) { + return stockOutTaskOrderService.delete(outTaskOrderIds); + } + + /** + * 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfo(Long outTaskOrderId) + { + StockOutTaskOrderPO stockOutTaskOrderPO = stockOutTaskOrderService.getInfo(outTaskOrderId); + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + taskPickingMaterialDetailDO.setTaskNumber(stockOutTaskOrderPO.getTaskNumber()); + List taskPickingMaterialDetailPOList = taskPickingMaterialDetailService.queryList(taskPickingMaterialDetailDO); + Map> taskPickingMaterialDetailPOMap = taskPickingMaterialDetailPOList.stream().collect(Collectors.groupingBy(TaskPickingMaterialDetailPO::getMaterialBaseInfoId)); + int totalPickingMaterialQuantity = 0;//拣货单按库位分组 统计已拣货进度 + for (Map.Entry> map : taskPickingMaterialDetailPOMap.entrySet()){ + List taskPickingMaterialDetailPOListByMaterial = map.getValue(); + if (CollectionUtil.isEmpty(taskPickingMaterialDetailPOListByMaterial)){ + continue; + } + TaskMaterialPO taskMaterialPO = new TaskMaterialPO(); + BeanUtils.copyProperties(taskPickingMaterialDetailPOListByMaterial.get(0), taskMaterialPO); + BigDecimal quantity = BigDecimal.ZERO; + BigDecimal pickingQuantity = BigDecimal.ZERO; + BigDecimal waitPickingQuantity = BigDecimal.ZERO; + for (TaskPickingMaterialDetailPO taskPickingMaterialDetailPO : taskPickingMaterialDetailPOListByMaterial) { + quantity = quantity.add(taskPickingMaterialDetailPO.getQuantity()); + pickingQuantity = pickingQuantity.add(taskPickingMaterialDetailPO.getPickingQuantity()); + waitPickingQuantity = waitPickingQuantity.add(taskPickingMaterialDetailPO.getWaitPickingQuantity()); + } + taskMaterialPO.setQuantity(quantity); + taskMaterialPO.setPickingQuantity(pickingQuantity); + taskMaterialPO.setWaitPickingQuantity(waitPickingQuantity); + //判断拣货数量是否等于计划数量 + Integer pickingStatus = judgePickingQuantity(pickingQuantity, quantity); + taskMaterialPO.setPickingStatus(pickingStatus); + if (pickingStatus > 2){ + totalPickingMaterialQuantity += 1; + } + } + stockOutTaskOrderPO.setPickingMaterialQuantity(totalPickingMaterialQuantity); + stockOutTaskOrderPO.setMaterialDetailList(taskPickingMaterialDetailPOList); + return stockOutTaskOrderPO; + } + + + /** + * 按库位拣货 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfoByStorageLocation(Long outTaskOrderId) { + StockOutTaskOrderPO stockOutTaskOrderPO = stockOutTaskOrderService.getInfo(outTaskOrderId); + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + taskPickingMaterialDetailDO.setTaskNumber(stockOutTaskOrderPO.getTaskNumber()); +// OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = new OutMaterialDetailSerialNumberDO(); +// outMaterialDetailSerialNumberDO.setOrderNumber(stockOutTaskOrderPO.getTaskNumber()); +// List outMaterialDetailSerialNumberPOList = outMaterialDetailSerialNumberService.queryList(outMaterialDetailSerialNumberDO); +// Map> outMaterialDetailSerialNumberMap = outMaterialDetailSerialNumberPOList.stream() +// .collect(Collectors.groupingBy(OutMaterialDetailSerialNumberPO::getMaterialDetailUniqueId)); + List taskPickingMaterialDetailPOList = taskPickingMaterialDetailService.queryList(taskPickingMaterialDetailDO); + Map> taskPickingMaterialDetailPOMap = taskPickingMaterialDetailPOList.stream().collect(Collectors.groupingBy(TaskPickingMaterialDetailPO::getStorageLocationId)); + int totalPickingMaterialQuantity = 0;//拣货单按库位分组 统计已拣货进度 + List taskStoragePOList = new ArrayList<>(); + for (Map.Entry> map : taskPickingMaterialDetailPOMap.entrySet()){ + List taskPickingMaterialDetailPOListByMaterial = map.getValue(); + if (CollectionUtil.isEmpty(taskPickingMaterialDetailPOListByMaterial)){ + continue; + } + TaskStoragePO taskStoragePO = new TaskStoragePO(); + BeanUtils.copyProperties(taskPickingMaterialDetailPOListByMaterial.get(0), taskStoragePO); + BigDecimal quantity = BigDecimal.ZERO; + BigDecimal pickingQuantity = BigDecimal.ZERO; + BigDecimal waitPickingQuantity = BigDecimal.ZERO; + for (TaskPickingMaterialDetailPO taskPickingMaterialDetailPO : taskPickingMaterialDetailPOListByMaterial) { + quantity = quantity.add(taskPickingMaterialDetailPO.getQuantity()); + pickingQuantity = pickingQuantity.add(taskPickingMaterialDetailPO.getPickingQuantity()); + waitPickingQuantity = waitPickingQuantity.add(taskPickingMaterialDetailPO.getWaitPickingQuantity()); + } + taskStoragePO.setQuantity(quantity); + taskStoragePO.setPickingQuantity(pickingQuantity); + taskStoragePO.setWaitPickingQuantity(waitPickingQuantity); + //判断拣货数量是否等于计划数量 + Integer pickingStatus = judgePickingQuantity(pickingQuantity, quantity); + taskStoragePO.setPickingStatus(pickingStatus); + taskStoragePO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailPOListByMaterial); + taskStoragePOList.add(taskStoragePO); + if (pickingStatus > 2){ + totalPickingMaterialQuantity += 1; + } + } + stockOutTaskOrderPO.setPickingMaterialQuantity(totalPickingMaterialQuantity); + stockOutTaskOrderPO.setTaskStorageList(taskStoragePOList); + return stockOutTaskOrderPO; + } + + /** + * 按物料拣货 获取拣货作业单详细信息 + */ + public StockOutTaskOrderPO getInfoByMaterial(Long outTaskOrderId) { + StockOutTaskOrderPO stockOutTaskOrderPO = stockOutTaskOrderService.getInfo(outTaskOrderId);; + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + taskPickingMaterialDetailDO.setTaskNumber(stockOutTaskOrderPO.getTaskNumber()); + List taskPickingMaterialDetailPOList = taskPickingMaterialDetailService.queryList(taskPickingMaterialDetailDO); + Map> taskPickingMaterialDetailPOMap = taskPickingMaterialDetailPOList.stream().collect(Collectors.groupingBy(TaskPickingMaterialDetailPO::getMaterialBaseInfoId)); + int totalPickingMaterialQuantity = 0;//拣货单按物料分组 统计已拣货进度 + List taskMaterialPOList = new ArrayList<>(); + for (Map.Entry> map : taskPickingMaterialDetailPOMap.entrySet()){ + List taskPickingMaterialDetailPOListByMaterial = map.getValue(); + if (CollectionUtil.isEmpty(taskPickingMaterialDetailPOListByMaterial)){ + continue; + } + TaskMaterialPO taskMaterialPO = new TaskMaterialPO(); + BeanUtils.copyProperties(taskPickingMaterialDetailPOListByMaterial.get(0), taskMaterialPO); + BigDecimal quantity = BigDecimal.ZERO; + BigDecimal pickingQuantity = BigDecimal.ZERO; + BigDecimal waitPickingQuantity = BigDecimal.ZERO; + for (TaskPickingMaterialDetailPO taskPickingMaterialDetailPO : taskPickingMaterialDetailPOListByMaterial) { + quantity = quantity.add(taskPickingMaterialDetailPO.getQuantity()); + pickingQuantity = pickingQuantity.add(taskPickingMaterialDetailPO.getPickingQuantity()); + waitPickingQuantity = waitPickingQuantity.add(taskPickingMaterialDetailPO.getWaitPickingQuantity()); + } + taskMaterialPO.setQuantity(quantity); + taskMaterialPO.setPickingQuantity(pickingQuantity); + taskMaterialPO.setWaitPickingQuantity(waitPickingQuantity); + //判断拣货数量是否等于计划数量 + Integer pickingStatus = judgePickingQuantity(pickingQuantity, quantity); + taskMaterialPO.setPickingStatus(pickingStatus); + taskMaterialPO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailPOListByMaterial); + taskMaterialPOList.add(taskMaterialPO); + if (pickingStatus > 2){ + totalPickingMaterialQuantity += 1; + } + } + stockOutTaskOrderPO.setPickingMaterialQuantity(totalPickingMaterialQuantity); + stockOutTaskOrderPO.setTaskMaterialList(taskMaterialPOList); + return stockOutTaskOrderPO; + } + + /** + * @description 按物料拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param stockOutTaskOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean pickingByMaterial(StockOutTaskOrderDO stockOutTaskOrderDO){ + if (ObjectUtil.isNull(stockOutTaskOrderDO.getUpdateTime())){ + throw new ServiceException("拣货单修改时间不能为空"); + } + StockOutTaskOrderPO stockOutTaskOrderPODb = stockOutTaskOrderService.getInfo(stockOutTaskOrderDO.getOutTaskOrderId()); + if (stockOutTaskOrderPODb == null){ + throw new ServiceException("拣货单不存在"); + } + if (stockOutTaskOrderPODb.getStatus() > 3){ + throw new ServiceException("拣货单已完成拣货"); + } + if (stockOutTaskOrderPODb.getUpdateTime().compareTo(stockOutTaskOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("拣货单【" + stockOutTaskOrderPODb.getPickingOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + stockOutTaskOrderDO.setTaskNumber(stockOutTaskOrderPODb.getTaskNumber()); + StockOutTaskOrderPO stockOutTaskOrderPO = taskPickingMaterialDetailService.batchPickingUpdate(stockOutTaskOrderDO); + //修改库存 + updateMaterialInventory(stockOutTaskOrderDO); + //设置拣货单拣货需要更新的数据数据 + updateStockOutTaskOrder(stockOutTaskOrderPO, stockOutTaskOrderPODb, 2); + return true; + } + + /** + * @description 修改库位信息 + * @author ZhouGY + * @date 2024/7/30 15:35 + * @param stockOutTaskOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public void updateMaterialInventory(StockOutTaskOrderDO stockOutTaskOrderDO){ + List materialInventoryOldList = new ArrayList<>(); + List taskPickingMaterialDetailDOList = stockOutTaskOrderDO.getTaskPickingMaterialDetailList(); + for (TaskPickingMaterialDetailDO taskPickingMaterialDetailDO : taskPickingMaterialDetailDOList){ + BigDecimal actualQuantity = taskPickingMaterialDetailDO.getActualQuantity(); + MaterialInventory materialInventoryOldDb = materialInventoryService.getById(taskPickingMaterialDetailDO.getMaterialInventoryId()); + if (ObjectUtil.isNull(materialInventoryOldDb)){ + throw new ServiceException("物料原库位下的物料库存不存在,不能进行出库"); + } + if (materialInventoryOldDb.getInventoryQuantity().compareTo(actualQuantity) < 0){ + throw new ServiceException("物料原库位下的物料库存不足,不能进行出库"); + } + //原库位 + MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO(); + materialInventoryDOOld.setMaterialInventoryId(taskPickingMaterialDetailDO.getMaterialInventoryId()); + materialInventoryDOOld.setInventoryQuantity(actualQuantity); + materialInventoryDOOld.setAllocationQuantity(actualQuantity); + materialInventoryOldList.add(materialInventoryDOOld); + } + //原库位 需要减少的库存 + if (!CollectionUtils.isEmpty(materialInventoryOldList)){ + materialInventoryService.updateMaterialInventoryInfo(materialInventoryOldList, 2); + } + } + + /** + * @description 完成拣货 + * @author ZhouGY + * @date 2024/5/30 10:30 + * @param outTaskOrderId + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean completePicking(Long outTaskOrderId){ + StockOutTaskOrderPO stockOutTaskOrderPODb = stockOutTaskOrderService.getInfo(outTaskOrderId); + if (stockOutTaskOrderPODb == null){ + throw new ServiceException("拣货单不存在"); + } + if (1 == stockOutTaskOrderPODb.getStatus()){ + throw new ServiceException("拣货单【" + stockOutTaskOrderPODb.getPickingOrderNumber() + "】待拣货,请先进行拣货"); + } + if (3 == stockOutTaskOrderPODb.getStatus()){ + throw new ServiceException("拣货单【" + stockOutTaskOrderPODb.getPickingOrderNumber() + "】已完成拣货,请重新选择"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockOutTaskOrderService.update(null, new UpdateWrapper().lambda() + .set(StockOutTaskOrder::getStatus, 3) + .set(StockOutTaskOrder::getUpdateBy, loginUser.getUserid()) + .set(StockOutTaskOrder::getUpdateByName, loginUser.getUsername()) + .set(StockOutTaskOrder::getUpdateTime, new Date()) + .eq(StockOutTaskOrder::getOutTaskOrderId, outTaskOrderId)); + //比较是否存在异常 并生成复核异常信息 + OutOrderAbnormalBaseDO outOrderAbnormalBaseDO = new OutOrderAbnormalBaseDO(); + BeanUtils.copyProperties(stockOutTaskOrderPODb, outOrderAbnormalBaseDO); + outOrderAbnormalBaseDO.setOutOrderNumber(stockOutTaskOrderPODb.getOrderNumber()); + outOrderAbnormalBaseDO.setPickingOrderNumber(stockOutTaskOrderPODb.getPickingOrderNumber()); + outOrderAbnormalBaseDO.setOutTaskOrderNumber(stockOutTaskOrderPODb.getTaskNumber()); + outOrderAbnormalService.genOutOrderAbnormal(outOrderAbnormalBaseDO, 1); + //设置拣货单拣货需要更新的数据数据 + updateStockOutTaskOrder(null, stockOutTaskOrderPODb, 3); + return true; + } + + /** + * @description 设置拣货单拣货需要更新的数据数据 + * @author ZhouGY + * @date 2024/7/13 10:26 + * @param stockOutTaskOrderPO + * @param stockOutTaskOrderPO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockOutTaskOrder(StockOutTaskOrderPO stockOutTaskOrderPO, StockOutTaskOrderPO stockOutTaskOrderPODb, Integer status){ + BigDecimal pickingQuantity = stockOutTaskOrderPODb.getPickingQuantity(); + Integer pickingMaterialQuantity = stockOutTaskOrderPODb.getPickingMaterialQuantity(); + BigDecimal actualPickingQuantity = stockOutTaskOrderPODb.getPickingQuantity(); + Integer actualPickingMaterialQuantity = stockOutTaskOrderPODb.getPickingMaterialQuantity(); + if (2 == status){ + if (ObjectUtil.isNull(stockOutTaskOrderPO)){ + throw new ServiceException("部分拣货拣货数量不能为空"); + } + pickingQuantity = stockOutTaskOrderPO.getPickingQuantity().add(stockOutTaskOrderPO.getPickingQuantity()); + pickingMaterialQuantity = stockOutTaskOrderPO.getPickingMaterialQuantity() + stockOutTaskOrderPO.getPickingMaterialQuantity(); + actualPickingQuantity = stockOutTaskOrderPO.getPickingQuantity(); + actualPickingMaterialQuantity = stockOutTaskOrderPO.getPickingMaterialQuantity(); + } + //如果已拣货数量等于待拣货数量,则拣货单状态改为已拣货 + if (pickingQuantity.compareTo(stockOutTaskOrderPODb.getQuantity()) == 0){ + status = 3; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockOutTaskOrder stockOutTaskOrder = new StockOutTaskOrder(); + stockOutTaskOrder.setOutTaskOrderId(stockOutTaskOrderPODb.getOutTaskOrderId()); + stockOutTaskOrder.setStatus(status);//拣货单状态: 1-待拣货 2-拣货中 3-已拣货 + stockOutTaskOrder.setPickingQuantity(pickingQuantity); + stockOutTaskOrder.setPickingMaterialQuantity(pickingMaterialQuantity); + stockOutTaskOrder.setUpdateBy(loginUser.getUserid()); + stockOutTaskOrder.setUpdateByName(loginUser.getUsername()); + stockOutTaskOrder.setUpdateTime(new Date()); + stockOutTaskOrderService.updateById(stockOutTaskOrder); + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + pickingOrderDO.setPickingOrderNumber(stockOutTaskOrderPODb.getPickingOrderNumber()); + pickingOrderDO.setPickingQuantity(actualPickingQuantity); + pickingOrderDO.setPickingMaterialQuantity(actualPickingMaterialQuantity); + pickingOrderDO.setStatus(status);//拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭 + pickingOrderDO.setUpdateBy(loginUser.getUserid()); + pickingOrderDO.setUpdateByName(loginUser.getUsername()); + pickingOrderDO.setUpdateTime(new Date()); + pickingOrderService.addQuantity(pickingOrderDO); + PickingOrder onePickingOrder = pickingOrderService.getOne(new QueryWrapper().lambda().eq(PickingOrder::getPickingOrderNumber, stockOutTaskOrderPODb.getPickingOrderNumber())); + PickingOrderPO pickingOrderPODb = pickingOrderService.getInfoByIdAndType(onePickingOrder.getPickingOrderId(), onePickingOrder.getType()); + return updateStockOutOrder(pickingOrderPODb); + } + + /** + * @param pickingOrderPODb + * @return StockReceiptOrder + * @description 更新出库单状态 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockOutOrder(PickingOrderPO pickingOrderPODb) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List pickingOrderList = pickingOrderService.list(new QueryWrapper().lambda() + .eq(PickingOrder::getDelFlag, 1) + .eq(PickingOrder::getOrderNumber, pickingOrderPODb.getOrderNumber())); + BigDecimal pickingQuantity = pickingOrderList.stream().map(PickingOrder::getPickingQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + if (1 == pickingOrderPODb.getType()){ + int status = 6; + //不需要复核的单子 标记出库单完成 + StockOutOrder stockOutOrderDb = stockOutOrderService.getOne(new QueryWrapper().lambda() + .eq(StockOutOrder::getDelFlag, 1) + .eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber())); + if (pickingQuantity.compareTo(stockOutOrderDb.getQuantity()) >= 0){ + status = 7; + if (pickingOrderPODb.getReview() == 2){ + status = 9; + genStockInOrder(stockOutOrderDb); + } + } + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setOutOrderNumber(pickingOrderPODb.getOrderNumber()); + //1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 + stockOutOrder.setStatus(status); + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + return stockOutOrderService.update(stockOutOrder, + new QueryWrapper().lambda().eq(StockOutOrder::getOutOrderNumber, pickingOrderPODb.getOrderNumber())); + }else { + //波次单 + WaveOrder waveOrderDb = waveOrderService.getOne(new QueryWrapper().lambda() + .eq(WaveOrder::getDelFlag, 1) + .eq(WaveOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + int waveOrderStatus = 5; + if (pickingQuantity.compareTo(waveOrderDb.getQuantity()) >= 0){ + waveOrderStatus = 6; + } + //出库单 波次单关联表 + List waveOutOrderList = waveOutOrderService.list(new QueryWrapper().lambda() + .eq(WaveOutOrder::getDelFlag, 1) + .eq(WaveOutOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + List outOrderNumberList = waveOutOrderList.stream().map(WaveOutOrder::getOutOrderNumber).collect(Collectors.toList()); + + StockOutOrder stockOutOrder = new StockOutOrder(); + //1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 + stockOutOrder.setStatus(waveOrderStatus == 6 ? 7 : 6); + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + stockOutOrderService.update(stockOutOrder, + new QueryWrapper().lambda().in(StockOutOrder::getOutOrderNumber, outOrderNumberList)); + if (waveOrderStatus == 6){ + //波次的需要全部拣货完才能,回写出库物料明细表信息,并且所有出库单拣货数量==计划数量 + for(WaveOutOrder waveOutOrder :waveOutOrderList){ + List listWaveOutOrder = waveOutOrderService.list(new QueryWrapper().lambda().eq(WaveOutOrder::getWaveOrderNumber, waveOutOrder.getWaveOrderNumber())); + for (WaveOutOrder waveOutOrder1 :listWaveOutOrder){ + List outMaterialDetails = outMaterialDetailMapper.selectList(new QueryWrapper().lambda().eq(OutMaterialDetail::getOutOrderNumber, waveOutOrder1.getOutOrderNumber())); + for (OutMaterialDetail outMaterialDetail :outMaterialDetails){ + outMaterialDetail.setPickingQuantity(outMaterialDetail.getQuantity()); + outMaterialDetailMapper.updateById(outMaterialDetail); + } + //设置出库单拣货数量 + stockOutOrder.setPickingQuantity(pickingQuantity); + stockOutOrderService.update(stockOutOrder, new QueryWrapper().lambda() + .eq(StockOutOrder::getOutOrderNumber, waveOutOrder1.getOutOrderNumber()) + ); + } + } + } + //波次单 + WaveOrder waveOrder = new WaveOrder(); + waveOrder.setWaveOrderNumber(pickingOrderPODb.getOrderNumber()); + //1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消 + waveOrder.setStatus(waveOrderStatus); + waveOrder.setUpdateBy(loginUser.getUserid()); + waveOrder.setUpdateByName(loginUser.getUsername()); + waveOrder.setUpdateTime(new Date()); + return waveOrderService.update(waveOrder, + new QueryWrapper().lambda().eq(WaveOrder::getWaveOrderNumber, pickingOrderPODb.getOrderNumber())); + } + } + + /** + * @description 调拨类型的出库单 根据出库单号 生成入库单 + * @author ZhouGY + * @date 2024/7/20 18:47 + * @param stockOutOrder + */ + @Transactional(rollbackFor = Exception.class) + public void genStockInOrder(StockOutOrder stockOutOrder){ + if (!"diao_bo_chu_ku".equals(stockOutOrder.getOrderTypeCode())){ + return; + } + MobilizeManage mobilizeManage = iMobilizeManageService.getOne(new QueryWrapper().lambda().eq(MobilizeManage::getMobilizeCode, stockOutOrder.getMobilizeCode())); + if (ObjectUtil.isNull(mobilizeManage)){ + throw new ServiceException("调拨单不存在,请见调拨单号是否有误"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + MobilizeManageDetailDO mobilizeManageDetailDOQuery = new MobilizeManageDetailDO(); + mobilizeManageDetailDOQuery.setMobilizeCode(mobilizeManage.getMobilizeCode()); + List mobilizeManageDetailPODbList = iMobilizeManageDetailService.queryList(mobilizeManageDetailDOQuery); + Map> mobilizeManageDetailDbMap = mobilizeManageDetailPODbList.stream().collect(Collectors.groupingBy(p -> p + "," + p.getShipperCode())); + List stockInOrderDOList = new ArrayList<>(); + for (Map.Entry> map : mobilizeManageDetailDbMap.entrySet()){ + List mobilizeManageDetailPOList = map.getValue(); + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK")); + stockInOrderDO.setMobilizeCode(mobilizeManage.getMobilizeCode()); + stockInOrderDO.setWarehouseId(mobilizeManage.getOutWarehouseId()); + stockInOrderDO.setWarehouseCode(mobilizeManage.getOutWarehouseCode()); + stockInOrderDO.setWarehouseName(mobilizeManage.getOutWarehouseName()); + MobilizeManageDetailPO mobilizeManageDetailDbPO = mobilizeManageDetailPOList.get(0); + stockInOrderDO.setShipperId(mobilizeManageDetailDbPO.getShipperId()); + stockInOrderDO.setShipperName(mobilizeManageDetailDbPO.getShipperName()); + stockInOrderDO.setOrderTypeCode("diao_po_ru_ku"); + stockInOrderDO.setOrderTypeName("调拨入库"); + stockInOrderDO.setDirectWarehouse(2); + stockInOrderDO.setMaterialQuantity(mobilizeManageDetailPOList.size()); + stockInOrderDO.setCreateBy(loginUser.getUserid()); + stockInOrderDO.setCreateByName(loginUser.getUsername()); + stockInOrderDO.setCreateTime(new Date()); + //统计总计划数 + BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + stockInOrderDO.setQuantity(quantity); + List inMaterialDetailDOList = JSONUtil.toList(JSONUtil.parseArray(mobilizeManageDetailPOList), InMaterialDetailDO.class); + stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList); + stockInOrderDOList.add(stockInOrderDO); + } + stockInOrderDomainService.batchInsert(stockInOrderDOList); + } + + /** + * @description 判断拣货数量是否完成 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param pickingQuantity + * @return Integer + */ + private Integer judgePickingQuantity(BigDecimal pickingQuantity, BigDecimal quantity){ + if (pickingQuantity.compareTo(BigDecimal.ZERO) == 0) { + return 1; + }else if (pickingQuantity.compareTo(quantity) == 0) { + return 3; + } else { + return 2; + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/entity/StockReceiptOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/entity/StockReceiptOrder.java new file mode 100644 index 000000000..d01544e79 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/entity/StockReceiptOrder.java @@ -0,0 +1,136 @@ +package com.mhd.wms.domain.stockReceiptOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 收货单对象 stock_receipt_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockReceiptOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("收货单id") + @TableId(type = IdType.AUTO) + private Long receiptOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + @Excel(name = "收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "HH:mm") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "HH:mm") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "收货数量") + private Integer materialQuantity; + + @ApiModelProperty("收货物料种数") + @Excel(name = "收货数量") + private Integer receiptMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务是否合并下发: 1-是 2-否") + @Excel(name = "任务是否合并下发: 1-是 2-否") + private Integer taskDistributionMerge; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/facade/IStockReceiptOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/facade/IStockReceiptOrderService.java new file mode 100644 index 000000000..890c3caf7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/facade/IStockReceiptOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; + +import java.util.List; + +/** + * 收货单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IStockReceiptOrderService extends IService +{ + /** + * 分页查询收货单列表 + */ + public List queryList(StockReceiptOrderDO stockReceiptOrderDO); + + /** + * 新增收货单 + */ + public Boolean batchInsert(List stockReceiptOrderDOList); + + /** + * 修改收货单 + */ + public Boolean update(StockReceiptOrderDO stockReceiptOrderDO); + + /** + * 批量删除收货单 + */ + public Boolean delete(Long[] receiptOrderIds); + + + /** + * 查询收货单 + */ + public StockReceiptOrderPO getInfo(Long receiptOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/mapper/StockReceiptOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/mapper/StockReceiptOrderMapper.java new file mode 100644 index 000000000..eaef0e408 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/mapper/StockReceiptOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; + +import java.util.List; + +/** + * 收货单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface StockReceiptOrderMapper extends BaseMapper +{ + /** + * 查询收货单列表 + */ + public List queryList(StockReceiptOrderDO stockReceiptOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/persistence/StockReceiptOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/persistence/StockReceiptOrderImpl.java new file mode 100644 index 000000000..5937e85b8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/persistence/StockReceiptOrderImpl.java @@ -0,0 +1,120 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder; +import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrderService; +import com.mhd.wms.domain.stockReceiptOrder.repository.mapper.StockReceiptOrderMapper; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 收货单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class StockReceiptOrderImpl extends ServiceImpl implements IStockReceiptOrderService, IDeliveTaskTypeService { + @Autowired + private StockReceiptOrderMapper stockReceiptOrderMapper; + + /** + * 查询收货单列表 + */ + @Override + public List queryList(StockReceiptOrderDO stockReceiptOrderDO) + { + return stockReceiptOrderMapper.queryList(stockReceiptOrderDO); + } + + /** + * 新增收货单 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchInsert(List stockReceiptOrderDOList) { + List stockReceiptOrderList = new ArrayList<>(); + for (StockReceiptOrderDO stockReceiptOrderDO : stockReceiptOrderDOList){ + StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); + BeanUtils.copyProperties(stockReceiptOrderDO,stockReceiptOrder); + stockReceiptOrderList.add(stockReceiptOrder); + } + return this.saveBatch(stockReceiptOrderList); + } + + /** + * 修改收货单 + */ + @Override + public Boolean update(StockReceiptOrderDO stockReceiptOrderDO) { + StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); + BeanUtils.copyProperties(stockReceiptOrderDO,stockReceiptOrder); + return this.updateById(stockReceiptOrder); + } + + /** + * 批量删除收货单 + */ + @Override + public Boolean delete(Long[] receiptOrderIds ) { + List list = new ArrayList<>(); + for (Long id : receiptOrderIds) { + StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); + stockReceiptOrder.setReceiptOrderId(id); + stockReceiptOrder.setDelFlag(2); + list.add(stockReceiptOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改收货单 + */ + @Override + public StockReceiptOrderPO getInfo(Long receiptOrderId) { + StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO(); + stockReceiptOrderDO.setReceiptOrderId(receiptOrderId); + List stockReceiptOrderPOList = queryList(stockReceiptOrderDO); + if (CollectionUtils.isEmpty(stockReceiptOrderPOList)){ + throw new ServiceException("收货单不存在"); + } + return stockReceiptOrderPOList.get(0); + } + + /** + * @description 接受任务下发 处理订单业务数据 + * @author ZhouGY + * @date 2024/8/1 11:18 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + //标记收货单任务已下发 + LoginUser loginUser = SecurityUtils.getLoginUser(); + return update(null, new UpdateWrapper().lambda() + .set(StockReceiptOrder::getTaskDistribution, 1) + .set(StockReceiptOrder::getTaskDistributionTime, new Date()) + .set(StockReceiptOrder::getOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(StockReceiptOrder::getOperatorsName, deliveTaskDO.getOperatorsName()) + .set(StockReceiptOrder::getUpdateBy, loginUser.getUserid()) + .set(StockReceiptOrder::getUpdateByName, loginUser.getUsername()) + .set(StockReceiptOrder::getUpdateTime, new Date()) + .eq(StockReceiptOrder::getReceiptOrderNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/po/StockReceiptOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/po/StockReceiptOrderPO.java new file mode 100644 index 000000000..99dc0caff --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/po/StockReceiptOrderPO.java @@ -0,0 +1,143 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 收货单对象 stock_receipt_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "收货单对象", description = "收货单响应对象") +public class StockReceiptOrderPO extends StockInOrderBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("收货单id") + private Long receiptOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + @Excel(name = "收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "HH:mm") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "HH:mm") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "收货数量") + private Integer materialQuantity; + + @ApiModelProperty("收货物料种数") + @Excel(name = "收货数量") + private Integer receiptMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务是否合并下发: 1-是 2-否") + @Excel(name = "任务是否合并下发: 1-是 2-否") + private Integer taskDistributionMerge; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("作业数量(当前收货作业数量)") + @Excel(name = "作业数量(当前收货作业数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业收货物料种数(当前收货作业物料种数)") + @Excel(name = "作业收货物料种数(当前收货作业物料种数)") + private Integer actualReceiptMaterialQuantity; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/NoReceiptOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/NoReceiptOrderDO.java new file mode 100644 index 000000000..dd6aa36ff --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/NoReceiptOrderDO.java @@ -0,0 +1,27 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.todo; + +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + + +/** + * 收货单对象 stock_receipt_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class NoReceiptOrderDO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单信息") + private StockInOrderDO stockInOrderDO; + + @ApiModelProperty("收货单信息") + private StockReceiptOrderDO stockReceiptOrderDO; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java new file mode 100644 index 000000000..a2c23e31c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/repository/todo/StockReceiptOrderDO.java @@ -0,0 +1,161 @@ +package com.mhd.wms.domain.stockReceiptOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 收货单对象 stock_receipt_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockReceiptOrderDO extends StockInOrderBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("收货单id") + private Long receiptOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + @Excel(name = "收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "HH:mm") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "HH:mm") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "收货数量") + private Integer materialQuantity; + + @ApiModelProperty("收货物料种数") + @Excel(name = "收货数量") + private Integer receiptMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务是否合并下发: 1-是 2-否") + @Excel(name = "任务是否合并下发: 1-是 2-否") + private Integer taskDistributionMerge; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("收货单id集合") + private List receiptOrderIds; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty("作业数量(当前收货作业数量)") + @Excel(name = "作业数量 (当前收货作业数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业收货物料种数(当前收货作业物料种数)") + @Excel(name = "作业收货物料种数(当前收货作业物料种数)") + private Integer actualReceiptMaterialQuantity; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; + + @ApiModelProperty("物料明细") + private List materialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java new file mode 100644 index 000000000..97f3a1d0b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java @@ -0,0 +1,1028 @@ +package com.mhd.wms.domain.stockReceiptOrder.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.BatchDetailFeignPO; +import com.mhd.system.api.domain.ContainerFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.inOrderAbnormal.repository.facade.IInOrderAbnormalService; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalBaseDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule; +import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService; +import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail; +import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.domain.stockInTaskOrder.repository.facade.IStockInTaskOrderService; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder; +import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrderService; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.NoReceiptOrderDO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 收货单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockReceiptOrderDomainService { + + @Autowired + private IStockReceiptOrderService stockReceiptOrderService; + @Autowired + private IReceiptMaterialDetailService receiptMaterialDetailService; + @Autowired + private IStockInTaskOrderService stockInTaskOrderService; + @Autowired + private IInOrderAbnormalService iInOrderAbnormalService; + @Autowired + private StockShelfOrderDomainService stockShelfOrderDomainService; + @Autowired + private IQualityInspectionService qualityInspectionService; + @Autowired + private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService; + @Autowired + private IMaterialMoreDetailService iMaterialMoreDetailService; + @Autowired + private IMaterialGoodsRuleService materialGoodsRuleService; + @Autowired + private IStockInOrderService stockInOrderService; + @Autowired + private IInMaterialDetailService iInMaterialDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + @Autowired + private IdGenerator idGenerator; + @Autowired + private IContainerUsageRecordService containerUsageRecordService; + @Resource + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询收货单列表 + */ + public List queryList(StockReceiptOrderDO stockReceiptOrderDO) { + return stockReceiptOrderService.queryList(stockReceiptOrderDO); + } + + + /** + * 批量新增收货单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List stockReceiptOrderDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List stockReceiptOrderList = new ArrayList<>(); + List receiptMaterialDetailList = new ArrayList<>(); + stockReceiptOrderDOList.forEach(stockReceiptOrderDO -> { + StockReceiptOrder stockReceiptOrder = JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDO), StockReceiptOrder.class); + stockReceiptOrder.setReceiptOrderNumber(OrderSequence.getOrderCode("SH")); + stockReceiptOrder.setCreateBy(loginUser.getUserid()); + stockReceiptOrder.setCreateByName(loginUser.getUsername()); + stockReceiptOrder.setCreateTime(new Date()); + stockReceiptOrder.setUpdateBy(loginUser.getUserid()); + stockReceiptOrder.setUpdateByName(loginUser.getUsername()); + stockReceiptOrder.setUpdateTime(new Date()); + stockReceiptOrderList.add(stockReceiptOrder); + stockReceiptOrderDO.getMaterialDetailList().forEach(materialDetailDO -> { + ReceiptMaterialDetail receiptMaterialDetail = new ReceiptMaterialDetail(); + BeanUtils.copyProperties(materialDetailDO, receiptMaterialDetail, "materialDetailId", "createBy", "createByName", "createTime", + "updateBy", "updateByName", "updateTime"); + receiptMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + receiptMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + receiptMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + receiptMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + receiptMaterialDetail.setReceiptOrderNumber(stockReceiptOrder.getReceiptOrderNumber()); + receiptMaterialDetail.setCreateBy(loginUser.getUserid()); + receiptMaterialDetail.setCreateByName(loginUser.getUsername()); + receiptMaterialDetail.setCreateTime(new Date()); + receiptMaterialDetailList.add(receiptMaterialDetail); + }); + }); + stockReceiptOrderService.saveBatch(stockReceiptOrderList); + return receiptMaterialDetailService.saveBatch(receiptMaterialDetailList); + } + + /** + * 修改收货单 + */ + public Boolean update(StockReceiptOrderDO stockReceiptOrderDO) { + return stockReceiptOrderService.update(stockReceiptOrderDO); + } + + /** + * 批量删除收货单 + */ + public Boolean delete(Long[] receiptOrderIds) { + return stockReceiptOrderService.delete(receiptOrderIds); + } + + /** + * 获取收货单详细信息 + */ + public StockReceiptOrderPO getInfo(Long receiptOrderId) { + return stockReceiptOrderService.getInfo(receiptOrderId); + } + + /** + * 获取收货单详细信息 + */ + public StockReceiptOrderPO getInfoByApp(Long receiptOrderId) { + StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderService.getInfo(receiptOrderId); + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List receiptMaterialDetailPOList = receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO); + InMaterialDetailSerialNumberDO inMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + inMaterialDetailSerialNumberDO.setOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List inMaterialDetailSerialNumberPOList = inMaterialDetailSerialNumberService.queryList(inMaterialDetailSerialNumberDO); + Map> inMaterialDetailSerialNumberMap = inMaterialDetailSerialNumberPOList.stream() + .collect(Collectors.groupingBy(InMaterialDetailSerialNumberPO::getMaterialDetailUniqueId)); + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + materialMoreDetailDO.setOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List materialMoreDetailPOList = iMaterialMoreDetailService.queryList(materialMoreDetailDO); + Map> materialMoreDetailMap = materialMoreDetailPOList.stream() + .collect(Collectors.groupingBy(MaterialMoreDetailPO::getMaterialDetailUniqueId)); + receiptMaterialDetailPOList.forEach(receiptMaterialDetailPO -> { + List receiptMaterialDetailPOChildrenNowList = new ArrayList<>(); + ReceiptMaterialDetailPO receiptMaterialDetailPOChildrenNow = new ReceiptMaterialDetailPO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, receiptMaterialDetailPOChildrenNow, "children"); + List materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)) { + receiptMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(materialDetailSerialNumberList); + } else { + receiptMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + List materialMoreDetailList = materialMoreDetailMap.get(receiptMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialMoreDetailList)) { + receiptMaterialDetailPOChildrenNow.setMaterialMoreDetailList(materialMoreDetailList); + } else { + receiptMaterialDetailPOChildrenNow.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO)); + } + receiptMaterialDetailPOChildrenNowList.add(receiptMaterialDetailPOChildrenNow); + //子集 + List receiptMaterialDetailPOChildrenList = receiptMaterialDetailPO.getChildren(); + receiptMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> { + List materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(receiptMaterialDetailPOChildren.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)) { + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(materialDetailSerialNumberChildrenList); + } else { + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + List materialMoreDetailChildrenList = materialMoreDetailMap.get(receiptMaterialDetailPOChildren.getUniqueId()); + if (!CollectionUtils.isEmpty(materialMoreDetailChildrenList)) { + receiptMaterialDetailPOChildren.setMaterialMoreDetailList(materialMoreDetailChildrenList); + } else { + receiptMaterialDetailPOChildren.setMaterialMoreDetailList(getMaterialMoreDetail(receiptMaterialDetailPO)); + } + }); + receiptMaterialDetailPOChildrenNowList.addAll(receiptMaterialDetailPOChildrenList); + receiptMaterialDetailPO.setChildren(receiptMaterialDetailPOChildrenNowList); + }); + stockReceiptOrderPO.setMaterialDetailList(receiptMaterialDetailPOList); + return stockReceiptOrderPO; + } + + /** + * @param receiptMaterialDetailPO + * @return List + * @description 获取物料更多属性 + * @author ZhouGY + * @date 2024/7/3 13:46 + */ + public List getMaterialMoreDetail(ReceiptMaterialDetailPO receiptMaterialDetailPO) { + MaterialGoodsRule materialGoodsRule = materialGoodsRuleService.getOne(new QueryWrapper().lambda() + .eq(MaterialGoodsRule::getMaterialBaseInfoId, receiptMaterialDetailPO.getMaterialBaseInfoId())); + List materialMoreDetailPOList = new ArrayList<>(); + if (materialGoodsRule != null) { + AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByBatchId(materialGoodsRule.getBatchId()); + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { + throw new ServiceException("获取批次信息失败"); + } + List batchDetailFeignPOList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class); + batchDetailFeignPOList.forEach(batchDetailFeignPO -> { + MaterialMoreDetailPO materialMoreDetailPO = new MaterialMoreDetailPO(); + materialMoreDetailPO.setBatchId(batchDetailFeignPO.getBatchId()); + materialMoreDetailPO.setBatchDetailId(batchDetailFeignPO.getBatchDetailId()); + materialMoreDetailPO.setBatchLabels(batchDetailFeignPO.getBatchLabels()); + materialMoreDetailPO.setInputControl(batchDetailFeignPO.getInputControl()); + materialMoreDetailPO.setAttributeFormat(batchDetailFeignPO.getAttributeFormat()); + materialMoreDetailPO.setAttributeOption(batchDetailFeignPO.getAttributeOption()); + materialMoreDetailPOList.add(materialMoreDetailPO); + }); + } + return materialMoreDetailPOList; + } + + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 分配月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + */ + public Boolean allocationPlatform(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return stockReceiptOrderService.update(null, new UpdateWrapper().lambda() + .set(StockReceiptOrder::getPlatformUseStatus, 1) + .set(StockReceiptOrder::getPlatformId, stockReceiptOrderDO.getPlatformId()) + .set(StockReceiptOrder::getPlatformCode, stockReceiptOrderDO.getPlatformCode()) + .set(StockReceiptOrder::getPlatformName, stockReceiptOrderDO.getPlatformName()) + .set(StockReceiptOrder::getPlatformUseTimeId, stockReceiptOrderDO.getPlatformUseTimeId()) + .set(StockReceiptOrder::getPlatformUseStartTime, stockReceiptOrderDO.getPlatformUseStartTime()) + .set(StockReceiptOrder::getPlatformUseEndTime, stockReceiptOrderDO.getPlatformUseEndTime()) + .set(StockReceiptOrder::getUpdateBy, loginUser.getUserid()) + .set(StockReceiptOrder::getUpdateByName, loginUser.getUsername()) + .set(StockReceiptOrder::getUpdateTime, new Date()) + .in(StockReceiptOrder::getReceiptOrderId, stockReceiptOrderDO.getReceiptOrderIds()) + ); + } + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 释放月台 + * @author ZhouGY + * @date 2024/5/22 15:19 + */ + public Boolean releasePlatform(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return stockReceiptOrderService.update(null, new UpdateWrapper().lambda() + .set(StockReceiptOrder::getPlatformUseStatus, 3) + .set(StockReceiptOrder::getUpdateBy, loginUser.getUserid()) + .set(StockReceiptOrder::getUpdateByName, loginUser.getUsername()) + .set(StockReceiptOrder::getUpdateTime, new Date()) + .in(StockReceiptOrder::getReceiptOrderId, stockReceiptOrderDO.getReceiptOrderIds()) + ); + } + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 任务下发 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean taskDistribution(StockReceiptOrderDO stockReceiptOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockReceiptOrderDO stockReceiptOrderDOQuery = new StockReceiptOrderDO(); + stockReceiptOrderDOQuery.setReceiptOrderIds(stockReceiptOrderDO.getReceiptOrderIds()); + stockReceiptOrderDOQuery.setTaskDistribution(2); + List stockReceiptOrderPOList = stockReceiptOrderService.queryList(stockReceiptOrderDOQuery); + if (CollectionUtils.isEmpty(stockReceiptOrderPOList)) { + throw new ServiceException("收货单不存在或已下发,请重新选择"); + } + //是否任务合并下发 + Integer taskDistributionMerge = stockReceiptOrderDO.getTaskDistributionMerge(); + //收货生成任务下发 + genDeliveTask(stockReceiptOrderPOList, stockReceiptOrderDO); + //标记收货单任务已下发 + return stockReceiptOrderService.update(null, new UpdateWrapper().lambda() + .set(StockReceiptOrder::getTaskDistribution, 1) + .set(StockReceiptOrder::getTaskDistributionMerge, taskDistributionMerge) + .set(StockReceiptOrder::getTaskDistributionTime, new Date()) + .set(StockReceiptOrder::getUpdateBy, loginUser.getUserid()) + .set(StockReceiptOrder::getUpdateByName, loginUser.getUsername()) + .set(StockReceiptOrder::getUpdateTime, new Date()) + .in(StockReceiptOrder::getReceiptOrderId, stockReceiptOrderDO.getReceiptOrderIds())); + } + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO) { + if (ObjectUtil.isNull(stockReceiptOrderDO.getUpdateTime())) { + throw new ServiceException("收货单修改时间不能为空"); + } + //TODO 增加锁 锁收货单单号 + StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderService.getInfo(stockReceiptOrderDO.getReceiptOrderId()); + if (stockReceiptOrderPO == null) { + throw new ServiceException("收货单不存在"); + } + if (stockReceiptOrderPO.getStatus() > 2) { + throw new ServiceException("收货单已完成收货"); + } + if (stockReceiptOrderPO.getUpdateTime().compareTo(stockReceiptOrderDO.getUpdateTime()) != 0) { + throw new ServiceException("收货单【" + stockReceiptOrderPO.getReceiptOrderNumber() + "】数据已被更新,请刷新后重新进行收货"); + } + List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(receiptMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + //保存容器使用记录 + genContainerUsageRecord(stockReceiptOrderDO); + //修改物料明细信息 + receiptMaterialDetailService.batchReceiptUpdate(stockReceiptOrderDO); + //生成 收货作业单 + genStockReceiptTaskOrderByReceivingGoods(stockReceiptOrderPO,stockReceiptOrderDO); + //收货后上架前 生成质检 + genQualityInspectionByReceivingGoods(stockReceiptOrderDO); + + //更新入库单状态 + updateStockInOrder(stockReceiptOrderPO); + //修改收货单 设置收货单收货需要更新的数据数据 + return updateStockReceiptOrder(stockReceiptOrderDO, stockReceiptOrderPO); + + } + + /** + * @param stockReceiptOrderDO + * @return StockReceiptOrder + * @description 设置收货单收货需要更新的数据数据 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockReceiptOrder(StockReceiptOrderDO stockReceiptOrderDO, StockReceiptOrderPO stockReceiptOrderPO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockReceiptOrder stockReceiptOrder = new StockReceiptOrder(); + stockReceiptOrder.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId()); + stockReceiptOrder.setReceiptQuantity(stockReceiptOrderPO.getReceiptQuantity().add(stockReceiptOrderDO.getActualQuantity())); + stockReceiptOrder.setReceiptMaterialQuantity(stockReceiptOrderPO.getReceiptMaterialQuantity() + stockReceiptOrderDO.getActualReceiptMaterialQuantity()); + stockReceiptOrder.setStatus(2); + stockReceiptOrder.setUpdateBy(loginUser.getUserid()); + stockReceiptOrder.setUpdateByName(loginUser.getUsername()); + stockReceiptOrder.setUpdateTime(new Date()); + stockReceiptOrderService.updateById(stockReceiptOrder); + //获取所有明细中的收货状态小于3的数量--未完成收货的明细 + long receiptMaterialQuantity = stockReceiptOrderDO.getMaterialDetailList().stream().filter(receiptMaterialDetailDO -> receiptMaterialDetailDO.getReceiptStatus() < 3).count(); + //收货数量大于等于计划数量 直接完成收货 + if (stockReceiptOrder.getReceiptQuantity().compareTo(stockReceiptOrderPO.getQuantity()) >= 0 && receiptMaterialQuantity == 0){ + completeReceipt(stockReceiptOrderPO.getReceiptOrderId()); + } + return true; + } + + /** + * @param stockReceiptOrderPO + * @return StockReceiptOrder + * @description 更新入库单状态 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockInOrder(StockReceiptOrderPO stockReceiptOrderPO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockInOrder stockInOrder = new StockInOrder(); + stockInOrder.setInOrderNumber(stockReceiptOrderPO.getInOrderNumber()); + stockInOrder.setStatus(3); + stockInOrder.setUpdateBy(loginUser.getUserid()); + stockInOrder.setUpdateByName(loginUser.getUsername()); + stockInOrder.setUpdateTime(new Date()); + return stockInOrderService.update(stockInOrder, + new QueryWrapper().lambda().eq(StockInOrder::getInOrderNumber, stockReceiptOrderPO.getInOrderNumber())); + } + + /** + * @param receiptOrderId + * @return Boolean + * @description 完成收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean completeReceipt(Long receiptOrderId) { + StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderService.getInfo(receiptOrderId); + if (stockReceiptOrderPO == null) { + throw new ServiceException("收货单不存在"); + } + if (3 == stockReceiptOrderPO.getStatus()) { + throw new ServiceException("收货单【" + stockReceiptOrderPO.getReceiptOrderNumber() + "】已完成收货,请重新选择"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + int abnormal = 2; + if (stockReceiptOrderPO.getReceiptQuantity().compareTo(stockReceiptOrderPO.getQuantity()) != 0){ + abnormal = 1; + } + //根据收货数量生成上架 + genStockShelfOrder(stockReceiptOrderPO); + + //生成收货追溯记录 + genInventoryStandingDetail(stockReceiptOrderPO); + //存在异常 生成记录 + if (abnormal == 1){ + genInOrderAbnormal(stockReceiptOrderPO); + } + return stockReceiptOrderService.update(null, new UpdateWrapper().lambda() + .set(StockReceiptOrder::getStatus, 3) + .set(StockReceiptOrder::getAbnormal, abnormal) + .set(StockReceiptOrder::getUpdateBy, loginUser.getUserid()) + .set(StockReceiptOrder::getUpdateByName, loginUser.getUsername()) + .set(StockReceiptOrder::getUpdateTime, new Date()) + .eq(StockReceiptOrder::getReceiptOrderId, receiptOrderId)); + } + + /** + * @param receiptOrderId + * @return Boolean + * @description 完成收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfOrder(Long receiptOrderId) { + StockReceiptOrderPO stockReceiptOrderPO = getInfo(receiptOrderId); + if (stockReceiptOrderPO == null) { + throw new ServiceException("收货单不存在"); + } + + return genStockShelfOrder(stockReceiptOrderPO); + } + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/8/2 15:45 + * @param stockReceiptOrderPO + */ + public void genInOrderAbnormal(StockReceiptOrderPO stockReceiptOrderPO) { + //收货数量与计划数量不符,完成收货会生成收货异常记录 + InOrderAbnormalBaseDO inOrderAbnormalBaseDO = new InOrderAbnormalBaseDO(); + BeanUtils.copyProperties(stockReceiptOrderPO, inOrderAbnormalBaseDO); + inOrderAbnormalBaseDO.setInOrderNumber(stockReceiptOrderPO.getInOrderNumber()); + inOrderAbnormalBaseDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + //完成收货 判断生成异常记录 + iInOrderAbnormalService.genInOrderAbnormal(inOrderAbnormalBaseDO, 1); + } + + /** + * @param receiptOrderIds + * @return Boolean + * @description 整单收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean entireReceipt(Long[] receiptOrderIds) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //判断是否存在序列号收货物料,存在不允许整单收货 + StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO(); + stockReceiptOrderDO.setReceiptOrderIds(Arrays.asList(receiptOrderIds)); + List stockReceiptOrderPOList = stockReceiptOrderService.queryList(stockReceiptOrderDO); + List receiptOrderNumberList = stockReceiptOrderPOList.stream().map(StockReceiptOrderPO::getReceiptOrderNumber).collect(Collectors.toList()); + int count = receiptMaterialDetailService.count(new QueryWrapper().lambda().eq(ReceiptMaterialDetail::getSerialNumberManage, 1).in(ReceiptMaterialDetail::getReceiptOrderNumber, receiptOrderNumberList)); + if (count > 0) { + throw new ServiceException("存在序列号收货物料,不允许整单收货"); + } + UpdateWrapper receiptOrderUpdateWrapper = new UpdateWrapper<>(); + receiptOrderUpdateWrapper.in("receipt_order_id", Arrays.asList(receiptOrderIds)); + receiptOrderUpdateWrapper.set("update_by", loginUser.getUserid()); + receiptOrderUpdateWrapper.set("update_by_name", loginUser.getUsername()); + receiptOrderUpdateWrapper.set("update_time", new Date()); + receiptOrderUpdateWrapper.set("status", 3); + receiptOrderUpdateWrapper.setSql("receipt_quantity = quantity "); + receiptOrderUpdateWrapper.setSql("receipt_material_quantity = material_quantity "); + stockReceiptOrderService.update(receiptOrderUpdateWrapper); + UpdateWrapper receiptMaterialUpdateWrapper = new UpdateWrapper<>(); + receiptMaterialUpdateWrapper.in("receipt_order_number", receiptOrderNumberList); + receiptMaterialUpdateWrapper.eq("del_flag", 1); + receiptMaterialUpdateWrapper.set("update_by", loginUser.getUserid()); + receiptMaterialUpdateWrapper.set("update_by_name", loginUser.getUsername()); + receiptMaterialUpdateWrapper.set("update_time", new Date()); + receiptMaterialUpdateWrapper.set("receipt_status", 3); + receiptMaterialUpdateWrapper.set("allow_modify", 2); + receiptMaterialUpdateWrapper.setSql("already_receipt_quantity = quantity "); + receiptMaterialUpdateWrapper.setSql("receipt_quantity = quantity "); + receiptMaterialDetailService.update(receiptMaterialUpdateWrapper); + //整单收获生成 收获作业单 + genStockReceiptTaskOrder(stockReceiptOrderPOList); + //完成收货 生成上架单 + return genStockShelfOrderByEntireReceipt(stockReceiptOrderPOList); + } + + /** + * @param noReceiptOrderDO + * @return Boolean + * @description 无单收货 + * @author ZhouGY + * @date 2024/5/22 16:20 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean noOrderReceipt(NoReceiptOrderDO noReceiptOrderDO) { + //1.根据收货单生成入库单 + boolean saveInOrderFlag = saveInOrder(noReceiptOrderDO.getStockInOrderDO()); + if (!saveInOrderFlag) { + throw new ServiceException("无单收货,保存入库单信息失败"); + } + //2.生成收货单 + boolean saveReceiptOrderFlag = saveReceiptOrder(noReceiptOrderDO.getStockReceiptOrderDO()); + if (!saveReceiptOrderFlag) { + throw new ServiceException("无单收货,保存收货单信息失败"); + } + return true; + } + + /** + * @param stockInOrderDO + * @return Boolean + * @description 保存入库单 + * @author ZhouGY + * @date 2024/7/8 14:48 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean saveInOrder(StockInOrderDO stockInOrderDO) { + stockInOrderService.insert(stockInOrderDO); + return iInMaterialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); + } + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 保存收货单 + * @author ZhouGY + * @date 2024/7/8 14:48 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean saveReceiptOrder(StockReceiptOrderDO stockReceiptOrderDO) { + //保存收货单及物料明细信息 + receiptMaterialDetailService.noOrderReceiptInsert(stockReceiptOrderDO); + //生成 收货作业单 + genStockReceiptTaskOrderByReceivingGoods(null, stockReceiptOrderDO); + //收货后上架前 生成质检 + genQualityInspectionByReceivingGoods(stockReceiptOrderDO); + //根据收货数量生成上架 + return genStockShelfOrderByReceivingGoods(stockReceiptOrderDO); + } + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 收货 生成上架单 + * @author ZhouGY + * @date 2024/5/24 15:47 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfOrderByReceivingGoods(StockReceiptOrderDO stockReceiptOrderDO) { + List stockShelfOrderDOList = new ArrayList<>(); + StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO(); + BeanUtils.copyProperties(stockReceiptOrderDO, stockShelfOrderDO); + stockShelfOrderDO.setShelfOrderNumber(OrderSequence.getOrderCode("SJ")); + stockShelfOrderDO.setReceiptQuantity(stockReceiptOrderDO.getActualQuantity()); + stockShelfOrderDO.setStatus(1); + List shelfMaterialDetailDOList = new ArrayList<>(); + stockReceiptOrderDO.getMaterialDetailList().forEach(receiptMaterialDetailDO -> { + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDO, shelfMaterialDetailDO); + shelfMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity()); + shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailDO.getInUniqueId()); + shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId()); + receiptMaterialDetailDO.getChildren().forEach(receiptMaterialDetailDOChildren -> { + ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); + shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailDO.getInUniqueId()); + shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId()); + shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); + }); + shelfMaterialDetailDOList.add(shelfMaterialDetailDO); + }); + stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList); + stockShelfOrderDO.setMaterialQuantity(shelfMaterialDetailDOList.size()); + stockShelfOrderDOList.add(stockShelfOrderDO); + return stockShelfOrderDomainService.genStockShelfOrder(stockShelfOrderDOList); + } + + /** + * @param stockReceiptOrderPO + * @return Boolean + * @description 生成上架单 + * @author ZhouGY + * @date 2024/5/24 15:47 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfOrder(StockReceiptOrderPO stockReceiptOrderPO) { + //构造上架单信息 + List stockShelfOrderDOList = new ArrayList<>(); + StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO(); + BeanUtils.copyProperties(stockReceiptOrderPO, stockShelfOrderDO); + stockShelfOrderDO.setShelfOrderNumber(OrderSequence.getOrderCode("SJ")); + stockShelfOrderDO.setStatus(1); + //本次上架数量 + BigDecimal receiptQuantity = BigDecimal.ZERO; + //获取收货单明细 + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List receiptMaterialDetailPOS = receiptMaterialDetailService.queryList(receiptMaterialDetailDO); + //上架单明细集合 + List shelfMaterialDetailDOList = new ArrayList<>(); + for (ReceiptMaterialDetailPO receiptMaterialDetailPO : receiptMaterialDetailPOS) { + if (2 == receiptMaterialDetailPO.getGenStockShelf()) { + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO); + shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity()); + shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId()); + shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId()); + shelfMaterialDetailDOList.add(shelfMaterialDetailDO); + receiptQuantity = receiptQuantity.add(receiptMaterialDetailPO.getReceiptQuantity()); + } +// +// for (ReceiptMaterialDetailPO receiptMaterialDetailPOChildren : receiptMaterialDetailPO.getChildren()) { +// if (2 == receiptMaterialDetailPO.getGenStockShelf()) { +// ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); +// BeanUtils.copyProperties(receiptMaterialDetailPOChildren, shelfMaterialDetailDOChildren); +// shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailPOChildren.getReceiptQuantity()); +// shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPOChildren.getInUniqueId()); +// shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailPOChildren.getUniqueId()); +// shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); +// receiptQuantity = receiptQuantity.add(receiptMaterialDetailPO.getReceiptQuantity()); +// } +// } + } + if(shelfMaterialDetailDOList.isEmpty()){ + throw new ServiceException("不存在需要生成上架单的收货记录!"); + } + //修改收货单信息 + receiptMaterialDetailService.updateDetailForGenStockShelf(stockReceiptOrderPO.getReceiptOrderNumber()); + //收货数量重新计算 + stockShelfOrderDO.setReceiptQuantity(receiptQuantity); + stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList); + stockShelfOrderDO.setMaterialQuantity(shelfMaterialDetailDOList.size()); + stockShelfOrderDOList.add(stockShelfOrderDO); + return stockShelfOrderDomainService.genStockShelfOrder(stockShelfOrderDOList); + } + + /** + * @param stockReceiptOrderPOList + * @return Boolean + * @description 整单收货 生成上架单 + * @author ZhouGY + * @date 2024/5/24 15:47 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfOrderByEntireReceipt(List stockReceiptOrderPOList) { + List receiptOrderNumberList = stockReceiptOrderPOList.stream().map(StockReceiptOrderPO::getReceiptOrderNumber).collect(Collectors.toList()); + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumberList(receiptOrderNumberList); + List receiptMaterialDetailPODbList = receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO); + Map> receiptMaterialDetailPOListMap = receiptMaterialDetailPODbList.stream().collect(Collectors.groupingBy(ReceiptMaterialDetailPO::getReceiptOrderNumber)); + List stockShelfOrderDOList = new ArrayList<>(); + stockReceiptOrderPOList.forEach(p -> { + StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO(); + BeanUtils.copyProperties(p, stockShelfOrderDO); + stockShelfOrderDO.setShelfOrderNumber(OrderSequence.getOrderCode("SJ")); + stockShelfOrderDO.setReceiptQuantity(p.getQuantity()); + List receiptMaterialDetailPODbs = receiptMaterialDetailPOListMap.get(p.getReceiptOrderNumber()); + List shelfMaterialDetailDOList = new ArrayList<>(); + receiptMaterialDetailPODbs.forEach(receiptMaterialDetailPO -> { + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO); + shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity()); + shelfMaterialDetailDO.setInUniqueId(receiptMaterialDetailPO.getInUniqueId()); + shelfMaterialDetailDO.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId()); + receiptMaterialDetailPO.getChildren().forEach(receiptMaterialDetailDOChildren -> { + ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); + shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId()); + shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId()); + shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); + }); + shelfMaterialDetailDOList.add(shelfMaterialDetailDO); + }); + stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList); + stockShelfOrderDOList.add(stockShelfOrderDO); + }); + //收货后 上架前判断是否需要质检 + genQualityInspectionByEntireReceipt(stockShelfOrderDOList); + return stockShelfOrderDomainService.genStockShelfOrder(stockShelfOrderDOList); + } + + + /** + * @param stockReceiptOrderDO + * @return Boolean + * @description 收货后上架前 生成质检 + * @author ZhouGY + * @date 2024/6/19 8:54 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genQualityInspectionByReceivingGoods(StockReceiptOrderDO stockReceiptOrderDO) { + List qualityInspectionDOList = new ArrayList<>(); + stockReceiptOrderDO.getMaterialDetailList().forEach(p -> { + if (p.getQualityInspectionManage() == 1) { + //是否质检管理: 1-是 2-否 + QualityInspectionDO qualityInspectionDO = new QualityInspectionDO(); + BeanUtils.copyProperties(stockReceiptOrderDO, qualityInspectionDO); + BeanUtils.copyProperties(p, qualityInspectionDO, IgnoreNullUtil.getNullPropertyNames(p)); + qualityInspectionDOList.add(qualityInspectionDO); + } + }); + return qualityInspectionService.genQualityInspection(qualityInspectionDOList); + } + + /** + * @param stockShelfOrderDOList + * @return Boolean + * @description 收货后上架前 生成质检 + * @author ZhouGY + * @date 2024/6/19 8:54 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genQualityInspectionByEntireReceipt(List stockShelfOrderDOList) { + List qualityInspectionDOList = new ArrayList<>(); + stockShelfOrderDOList.forEach(stockShelfOrderDO -> { + stockShelfOrderDO.getMaterialDetailList().forEach(p ->{ + if (p.getQualityInspectionManage() == 1) { + //是否质检管理: 1-是 2-否 + QualityInspectionDO qualityInspectionDO = new QualityInspectionDO(); + BeanUtils.copyProperties(stockShelfOrderDO, qualityInspectionDO); + BeanUtils.copyProperties(p, qualityInspectionDO, IgnoreNullUtil.getNullPropertyNames(p)); + qualityInspectionDOList.add(qualityInspectionDO); + } + }); + }); + return qualityInspectionService.genQualityInspection(qualityInspectionDOList); + } + + /** + * @param stockReceiptOrderDO + * @description 生成收货作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockReceiptTaskOrderByReceivingGoods(StockReceiptOrderPO stockReceiptOrderPO, StockReceiptOrderDO stockReceiptOrderDO) { + StockInTaskOrderDO stockInTaskOrderDO = new StockInTaskOrderDO(); + BeanUtils.copyProperties(stockReceiptOrderDO, stockInTaskOrderDO); + stockInTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("SHZYLS")); + stockInTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("SHZY")); + stockInTaskOrderDO.setType(1);//收货 + if (ObjectUtil.isNotNull(stockReceiptOrderPO)){ + stockInTaskOrderDO.setOperatorsBy(stockReceiptOrderPO.getOperatorsBy()); + stockInTaskOrderDO.setOperatorsName(stockReceiptOrderPO.getOperatorsName()); + }else { + stockInTaskOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + stockInTaskOrderDO.setOperatorsName(SecurityUtils.getLoginUser().getUserPo().getUserName()); + } + stockInTaskOrderDO.setOperatorsEndTime(new Date()); + BigDecimal actualQuantity = BigDecimal.ZERO; + List taskReceiptMaterialDetailDOList = new ArrayList<>(); + for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){ + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = new TaskReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDO,taskReceiptMaterialDetailDO); + List taskReceiptMaterialDetailDOChildrenList = new ArrayList<>(); + List receiptMaterialDetailDOChildrenList = receiptMaterialDetailDO.getChildren(); + if (CollectionUtil.isNotEmpty(receiptMaterialDetailDOChildrenList)){ + for (ReceiptMaterialDetailDO receiptMaterialDetailDOChildren : receiptMaterialDetailDOChildrenList){ + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDOChildren = new TaskReceiptMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDOChildren,taskReceiptMaterialDetailDO); + taskReceiptMaterialDetailDOChildrenList.add(taskReceiptMaterialDetailDOChildren); + actualQuantity = actualQuantity.add(taskReceiptMaterialDetailDO.getReceiptQuantity()); + } + } + taskReceiptMaterialDetailDO.setChildren(taskReceiptMaterialDetailDOChildrenList); + taskReceiptMaterialDetailDOList.add(taskReceiptMaterialDetailDO); + actualQuantity = actualQuantity.add(taskReceiptMaterialDetailDO.getReceiptQuantity()); + } + stockInTaskOrderDO.setActualQuantity(actualQuantity); + stockInTaskOrderDO.setTaskReceiptMaterialDetailList(taskReceiptMaterialDetailDOList); + stockReceiptOrderDO.setReceiptTaskNumber(stockInTaskOrderDO.getTaskNumber()); + return stockInTaskOrderService.genStockReceiptTaskOrder(Collections.singletonList(stockInTaskOrderDO)); + } + + /** + * @param stockReceiptOrderPOList + * @description 生成收货作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockReceiptTaskOrder(List stockReceiptOrderPOList) { + List receiptOrderNumberList = stockReceiptOrderPOList.stream().map(StockReceiptOrderPO::getReceiptOrderNumber).collect(Collectors.toList()); + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumberList(receiptOrderNumberList); + List receiptMaterialDetailPODbList = receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO); + Map> receiptMaterialDetailPOListMap = receiptMaterialDetailPODbList.stream().collect(Collectors.groupingBy(ReceiptMaterialDetailPO::getReceiptOrderNumber)); + + InMaterialDetailSerialNumberDO inMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + inMaterialDetailSerialNumberDO.setOrderNumbers(receiptOrderNumberList); + List inMaterialDetailSerialNumberPOList = inMaterialDetailSerialNumberService.queryList(inMaterialDetailSerialNumberDO); + Map> inMaterialDetailSerialNumberPOListMap = inMaterialDetailSerialNumberPOList.stream().collect(Collectors.groupingBy(InMaterialDetailSerialNumberPO::getOrderNumber)); + + List stockInTaskOrderDOList = new ArrayList<>(); + stockReceiptOrderPOList.forEach(stockReceiptOrderPO -> { + StockInTaskOrderDO stockInTaskOrderDO = new StockInTaskOrderDO(); + BeanUtils.copyProperties(stockReceiptOrderPO, stockInTaskOrderDO); + stockInTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("SHZYLS")); + stockInTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("SHZY")); + stockInTaskOrderDO.setType(1);//收货 + stockInTaskOrderDO.setActualQuantity(stockReceiptOrderPO.getQuantity()); + stockInTaskOrderDO.setOperatorsEndTime(new Date()); + List receiptMaterialDetailPODbs = receiptMaterialDetailPOListMap.get(stockReceiptOrderPO.getReceiptOrderNumber()); + if (!CollectionUtils.isEmpty(receiptMaterialDetailPODbs)) { + List taskReceiptMaterialDetailDOList = JSONUtil.toList(JSONUtil.parseArray(receiptMaterialDetailPODbs), TaskReceiptMaterialDetailDO.class); + taskReceiptMaterialDetailDOList.forEach(taskReceiptMaterialDetailDO -> { + List inMaterialDetailSerialNumberPODbs = inMaterialDetailSerialNumberPOListMap.get(stockInTaskOrderDO.getReceiptOrderNumber()); + if (!CollectionUtils.isEmpty(inMaterialDetailSerialNumberPODbs)) { + //封装物流更多属性明细序列号 + List inMaterialDetailSerialNumberDOList = JSONUtil.toList(JSONUtil.parseArray(inMaterialDetailSerialNumberPODbs), InMaterialDetailSerialNumberDO.class); + taskReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(inMaterialDetailSerialNumberDOList); + } + }); + stockInTaskOrderDO.setTaskReceiptMaterialDetailList(taskReceiptMaterialDetailDOList); + } + stockInTaskOrderDOList.add(stockInTaskOrderDO); + stockReceiptOrderPO.setReceiptTaskNumber(stockInTaskOrderDO.getTaskNumber()); + }); + return stockInTaskOrderService.genStockReceiptTaskOrder(stockInTaskOrderDOList); + } + + /** + * @description 生成收货追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param stockReceiptOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(StockReceiptOrderPO stockReceiptOrderPO){ + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + List receiptMaterialDetailPOList = receiptMaterialDetailService.queryList(receiptMaterialDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + for (ReceiptMaterialDetailPO receiptMaterialDetailPO : receiptMaterialDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(stockReceiptOrderPO.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(stockReceiptOrderPO.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(stockReceiptOrderPO.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(receiptMaterialDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(receiptMaterialDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(receiptMaterialDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(receiptMaterialDetailPO.getReceiptOrderNumber()); + inventoryStandingDetailDO.setWarehouseId(stockReceiptOrderPO.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(stockReceiptOrderPO.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(stockReceiptOrderPO.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(1); + inventoryStandingDetailDO.setMaterialQuantity(receiptMaterialDetailPO.getReceiptQuantity()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + /** + * @description 收货生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param stockReceiptOrderPOList + * @param stockReceiptOrderDO + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(List stockReceiptOrderPOList, StockReceiptOrderDO stockReceiptOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (StockReceiptOrderPO stockReceiptOrderPO : stockReceiptOrderPOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(stockReceiptOrderPO.getReceiptOrderNumber()); + deliveTaskDO.setWarehouseId(stockReceiptOrderPO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(stockReceiptOrderPO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(stockReceiptOrderPO.getWarehouseName()); + deliveTaskDO.setTaskType(1); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(stockReceiptOrderDO.getOperatorsBy()); + deliveTaskDO.setOperatorsName(stockReceiptOrderDO.getOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } + + /** + * @description 保存容器使用记录 + * @param stockReceiptOrderDO + * @return + */ + @Transactional(rollbackFor = Exception.class) + public void genContainerUsageRecord(StockReceiptOrderDO stockReceiptOrderDO) { + //获取已收货物料 + List listReceiptMaterialDetail = receiptMaterialDetailService.list(new QueryWrapper().lambda().eq(ReceiptMaterialDetail::getReceiptOrderNumber, stockReceiptOrderDO.getReceiptOrderNumber())); + LoginUser loginUser = SecurityUtils.getLoginUser(); + //根据明细id分组 + Map> mapReceiptMaterialDetail = listReceiptMaterialDetail.stream().collect(Collectors.groupingBy(ReceiptMaterialDetail::getMaterialDetailId)); + //循环传值明细list + for (ReceiptMaterialDetailDO receiptMaterialDetailDO:stockReceiptOrderDO.getMaterialDetailList()) { + List receiptMaterialDetail = mapReceiptMaterialDetail.get(receiptMaterialDetailDO.getMaterialDetailId()); + ContainerUsageRecordDO containerUsageRecordDO = new ContainerUsageRecordDO(); + //如果该明细不存在库里,或者允许修改,说明这个明细还未收货 + if (CollectionUtils.isEmpty(receiptMaterialDetail) || 1 == receiptMaterialDetail.get(0).getAllowModify()) { + //根据容器id获取容器信息 + if (null != receiptMaterialDetailDO.getContainerId() && receiptMaterialDetailDO.getContainerId() != 0L) { + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(receiptMaterialDetailDO.getContainerId()); + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + //构建容器使用记录 + containerUsageRecordDO.setOrganizationId(stockReceiptOrderDO.getOrganizationId()); + containerUsageRecordDO.setOrganizationName(stockReceiptOrderDO.getOrganizationName()); + containerUsageRecordDO.setTopOrganizationId(stockReceiptOrderDO.getTopOrganizationId()); + containerUsageRecordDO.setUseType(1); + containerUsageRecordDO.setNode(1); + containerUsageRecordDO.setMaterialBaseInfoId(receiptMaterialDetailDO.getMaterialBaseInfoId()); + containerUsageRecordDO.setMaterialCode(receiptMaterialDetailDO.getMaterialCode()); + containerUsageRecordDO.setMaterialName(receiptMaterialDetailDO.getMaterialName()); + containerUsageRecordDO.setBarCode(receiptMaterialDetailDO.getBarCode()); + containerUsageRecordDO.setContainerId(receiptMaterialDetailDO.getContainerId()); + containerUsageRecordDO.setContainerType(containerFeignPO.getContainerType()); + containerUsageRecordDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + containerUsageRecordDO.setContainerCode(containerFeignPO.getContainerCode()); + containerUsageRecordDO.setContainerVolume(containerFeignPO.getContainerVolume()); + containerUsageRecordDO.setCreateBy(loginUser.getUserid()); + containerUsageRecordDO.setCreateByName(loginUser.getUsername()); + containerUsageRecordDO.setCreateTime(new Date()); + containerUsageRecordService.insert(containerUsageRecordDO); + } + } + //以上不设置相反跳过循环的原因是,需要关心明细的子项 + //明细子项 + for (ReceiptMaterialDetailDO children : receiptMaterialDetailDO.getChildren()) { + List receiptMaterialDetailChildren = mapReceiptMaterialDetail.get(children.getMaterialDetailId()); + //如果该子项存在,并且不允许修改,说明这个子项已收货,则此处可跳过循环 + if (!CollectionUtils.isEmpty(receiptMaterialDetailChildren) && 2 == receiptMaterialDetailChildren.get(0).getAllowModify()) { + continue; + } + //根据容器id获取容器信息 + if (null != children.getContainerId() && children.getContainerId() != 0L) { + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(children.getContainerId()); + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + containerUsageRecordDO.setContainerId(children.getContainerId()); + containerUsageRecordDO.setContainerType(containerFeignPO.getContainerType()); + containerUsageRecordDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + containerUsageRecordDO.setContainerCode(containerFeignPO.getContainerCode()); + containerUsageRecordDO.setContainerVolume(containerFeignPO.getContainerVolume()); + containerUsageRecordService.insert(containerUsageRecordDO); + } + } + } + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/entity/StockShelfOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/entity/StockShelfOrder.java new file mode 100644 index 000000000..e4529924a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/entity/StockShelfOrder.java @@ -0,0 +1,105 @@ +package com.mhd.wms.domain.stockShelfOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 上架单对象 stock_shelf_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockShelfOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("上架单id") + @TableId(type = IdType.AUTO) + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + @Excel(name = "上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer status; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("上架物料种数") + @Excel(name = "上架物料种数") + private Integer shelvesMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java new file mode 100644 index 000000000..38bb573da --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/facade/IStockShelfOrderService.java @@ -0,0 +1,48 @@ +package com.mhd.wms.domain.stockShelfOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; + +import java.util.List; + +/** + * 上架单Service接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface IStockShelfOrderService extends IService +{ + /** + * 分页查询上架单列表 + */ + public List queryList(StockShelfOrderDO stockShelfOrderDO); + + /** + * 新增上架单 + */ + public Boolean insert(StockShelfOrderDO stockShelfOrderDO); + + /** + * 批量新增上架单 + */ + public Boolean batchInsert(List stockShelfOrderDOList); + + /** + * 修改上架单 + */ + public Boolean update(StockShelfOrderDO stockShelfOrderDO); + + /** + * 批量删除上架单 + */ + public Boolean delete(Long[] shelfOrderIds); + + + /** + * 查询上架单 + */ + public StockShelfOrderPO getInfo(Long shelfOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java new file mode 100644 index 000000000..84041d0fd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/mapper/StockShelfOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.stockShelfOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; + +import java.util.List; + +/** + * 上架单Mapper接口 + * + * @author gen + * @date 2024-05-21 + */ +public interface StockShelfOrderMapper extends BaseMapper +{ + /** + * 查询上架单列表 + */ + public List queryList(StockShelfOrderDO stockShelfOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java new file mode 100644 index 000000000..5053a60b2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/persistence/StockShelfOrderImpl.java @@ -0,0 +1,131 @@ +package com.mhd.wms.domain.stockShelfOrder.repository.persistence; + +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder; +import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService; +import com.mhd.wms.domain.stockShelfOrder.repository.mapper.StockShelfOrderMapper; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 上架单Service业务层处理 + * + * @author gen + * @date 2024-05-21 + */ +@Service +public class StockShelfOrderImpl extends ServiceImpl implements IStockShelfOrderService, IDeliveTaskTypeService { + @Autowired + private StockShelfOrderMapper stockShelfOrderMapper; + + /** + * 查询上架单列表 + */ + @Override + public List queryList(StockShelfOrderDO stockShelfOrderDO) + { + return stockShelfOrderMapper.queryList(stockShelfOrderDO); + } + + /** + * 新增上架单 + */ + @Override + public Boolean insert(StockShelfOrderDO stockShelfOrderDO) { + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + BeanUtils.copyProperties(stockShelfOrderDO,stockShelfOrder); + return this.save(stockShelfOrder); + } + + /** + * 批量新增上架单 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchInsert(List stockShelfOrderDOList) { + List stockShelfOrderList = new ArrayList<>(); + for (StockShelfOrderDO stockShelfOrderDO : stockShelfOrderDOList){ + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + BeanUtils.copyProperties(stockShelfOrderDO,stockShelfOrder); + stockShelfOrderList.add(stockShelfOrder); + } + + return saveBatch(stockShelfOrderList); + } + + /** + * 修改上架单 + */ + @Override + public Boolean update(StockShelfOrderDO stockShelfOrderDO) { + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + BeanUtils.copyProperties(stockShelfOrderDO,stockShelfOrder); + return this.updateById(stockShelfOrder); + } + + /** + * 批量删除上架单 + */ + @Override + public Boolean delete(Long[] shelfOrderIds ) { + List list = new ArrayList<>(); + for (Long id : shelfOrderIds) { + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + stockShelfOrder.setShelfOrderId(id); + stockShelfOrder.setDelFlag(2); + list.add(stockShelfOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改上架单 + */ + @Override + public StockShelfOrderPO getInfo(Long shelfOrderId) { + StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO(); + stockShelfOrderDO.setShelfOrderId(shelfOrderId); + List stockShelfOrderPOList = queryList(stockShelfOrderDO); + if (CollectionUtils.isEmpty(stockShelfOrderPOList)){ + throw new ServiceException("上架单信息不存在"); + } + return stockShelfOrderPOList.get(0); + } + + /** + * @description 更新订单任务下发状态 + * @author ZhouGY + * @date 2024/8/1 13:40 + * @param deliveTaskDO + * @return Boolean + */ + @Override + public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + //标记收货单任务已下发 + return update(null, new UpdateWrapper().lambda() + .set(StockShelfOrder::getTaskDistribution, 1) + .set(StockShelfOrder::getTaskDistributionTime, new Date()) + .set(StockShelfOrder::getOperatorsBy, deliveTaskDO.getOperatorsBy()) + .set(StockShelfOrder::getOperatorsName, deliveTaskDO.getOperatorsName()) + .set(StockShelfOrder::getUpdateBy, loginUser.getUserid()) + .set(StockShelfOrder::getUpdateByName, loginUser.getUsername()) + .set(StockShelfOrder::getUpdateTime, new Date()) + .eq(StockShelfOrder::getShelfOrderNumber, deliveTaskDO.getTrackingNumber())); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java new file mode 100644 index 000000000..abe8d130d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/po/StockShelfOrderPO.java @@ -0,0 +1,108 @@ +package com.mhd.wms.domain.stockShelfOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderBasePO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 上架单对象 stock_shelf_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +@ApiModel(value = "上架单对象", description = "上架单响应对象") +public class StockShelfOrderPO extends StockInOrderBasePO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + @Excel(name = "上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer status; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("上架物料种数") + @Excel(name = "上架物料种数") + private Integer shelvesMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/todo/StockShelfOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/todo/StockShelfOrderDO.java new file mode 100644 index 000000000..8eb433f1f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/repository/todo/StockShelfOrderDO.java @@ -0,0 +1,128 @@ +package com.mhd.wms.domain.stockShelfOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderBaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 上架单对象 stock_shelf_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockShelfOrderDO extends StockInOrderBaseDO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + @Excel(name = "上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer status; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("上架物料种数") + @Excel(name = "上架物料种数") + private Integer shelvesMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("上架单id集合") + private List shelfOrderIds; + + @ApiModelProperty("小于指定状态值:1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty("作业数量(当前收货作业数量)") + @Excel(name = "作业数量 (当前收货作业数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业收货物料种数(当前收货作业物料种数)") + @Excel(name = "作业收货物料种数(当前收货作业物料种数)") + private Integer actualReceiptMaterialQuantity; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java new file mode 100644 index 000000000..a7c613f01 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java @@ -0,0 +1,656 @@ +package com.mhd.wms.domain.stockShelfOrder.service; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.ContainerFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.facade.IInMaterialDetailSerialNumberService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.inOrderAbnormal.repository.facade.IInOrderAbnormalService; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalBaseDO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.domain.materialInventory.entity.MaterialInventory; +import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.domain.serialNumber.entity.SerialNumber; +import com.mhd.wms.domain.serialNumber.repository.facade.ISerialNumberService; +import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail; +import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.domain.stockInOrder.entity.StockInOrder; +import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService; +import com.mhd.wms.domain.stockInTaskOrder.repository.facade.IStockInTaskOrderService; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder; +import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 上架单 + * + * @author gen + * @date 2024-05-21 + */ +@Service +@Slf4j +public class StockShelfOrderDomainService { + + @Autowired + private IStockShelfOrderService stockShelfOrderService; + @Autowired + private IShelfMaterialDetailService shelfMaterialDetailService; + @Autowired + private IStockInOrderService stockInOrderService; + @Autowired + private IInOrderAbnormalService iInOrderAbnormalService; + @Autowired + private IMaterialInventoryService materialInventoryService; + @Autowired + private IInMaterialDetailSerialNumberService inMaterialDetailSerialNumberService; + @Autowired + private IStockInTaskOrderService stockInTaskOrderService; + @Autowired + private IInventoryStandingDetailService inventoryStandingDetailService; + @Autowired + private IDeliveTaskService deliveTaskService; + @Autowired + private IdGenerator idGenerator; + @Autowired + private IContainerUsageRecordService containerUsageRecordService; + @Autowired + private ISerialNumberService iSerialNumberService; + @Resource + private SystemServiceFeign systemServiceFeign; + + /** + * 分页查询上架单列表 + */ + public List queryList(StockShelfOrderDO stockShelfOrderDO) { + return stockShelfOrderService.queryList(stockShelfOrderDO); + } + + + /** + * 新增上架单 + */ + public Boolean insert(StockShelfOrderDO stockShelfOrderDO) { + + return stockShelfOrderService.insert(stockShelfOrderDO); + } + + /** + * 批量新增上架单 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfOrder(List stockShelfOrderDOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List stockShelfOrderList = new ArrayList<>(); + List shelfMaterialDetailList = new ArrayList<>(); + stockShelfOrderDOList.forEach(stockShelfOrderDO -> { + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + BeanUtils.copyProperties(stockShelfOrderDO, stockShelfOrder, "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + if (StringUtils.isBlank(stockShelfOrder.getShelfOrderNumber())){ + stockShelfOrder.setShelfOrderNumber(OrderSequence.getOrderCode("SJ")); + } + stockShelfOrder.setCreateBy(loginUser.getUserid()); + stockShelfOrder.setCreateByName(loginUser.getUsername()); + stockShelfOrder.setCreateTime(new Date()); + stockShelfOrder.setUpdateBy(loginUser.getUserid()); + stockShelfOrder.setUpdateByName(loginUser.getUsername()); + stockShelfOrder.setUpdateTime(new Date()); + stockShelfOrderList.add(stockShelfOrder); + stockShelfOrderDO.getMaterialDetailList().forEach(materialDetailDO -> { + ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail(); + BeanUtils.copyProperties(materialDetailDO, shelfMaterialDetail, "materialDetailId","parentUniqueId","allowModify", "createBy","createByName","createTime", + "updateBy","updateByName","updateTime"); + shelfMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + shelfMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + shelfMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + shelfMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + shelfMaterialDetail.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber()); + shelfMaterialDetail.setLevel(1); + shelfMaterialDetail.setCreateBy(loginUser.getUserid()); + shelfMaterialDetail.setCreateByName(loginUser.getUsername()); + shelfMaterialDetail.setCreateTime(new Date()); + shelfMaterialDetailList.add(shelfMaterialDetail); + }); + }); + stockShelfOrderService.saveBatch(stockShelfOrderList); + shelfMaterialDetailService.saveBatch(shelfMaterialDetailList); + return true; + } + + /** + * 修改上架单 + */ + public Boolean update(StockShelfOrderDO stockShelfOrderDO) { + return stockShelfOrderService.update(stockShelfOrderDO); + } + + /** + * 批量删除上架单 + */ + public Boolean delete(Long[] shelfOrderIds) { + return stockShelfOrderService.delete(shelfOrderIds); + } + + /** + * 获取上架单详细信息 + */ + public StockShelfOrderPO getInfo(Long shelfOrderId) + { + StockShelfOrderPO stockShelfOrderPO = stockShelfOrderService.getInfo(shelfOrderId); + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + shelfMaterialDetailDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + List inMaterialDetailPOList = shelfMaterialDetailService.queryListChildren(shelfMaterialDetailDO); + stockShelfOrderPO.setMaterialDetailList(inMaterialDetailPOList); + return stockShelfOrderPO; + } + + /** + * 获取上架单详细信息 + */ + public StockShelfOrderPO getInfoByApp(Long shelfOrderId) { + StockShelfOrderPO stockShelfOrderPO = stockShelfOrderService.getInfo(shelfOrderId); + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + shelfMaterialDetailDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + List shelfMaterialDetailPOList = shelfMaterialDetailService.queryListChildren(shelfMaterialDetailDO); + InMaterialDetailSerialNumberDO inMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + inMaterialDetailSerialNumberDO.setOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + List inMaterialDetailSerialNumberPOList = inMaterialDetailSerialNumberService.queryList(inMaterialDetailSerialNumberDO); + Map> inMaterialDetailSerialNumberMap = inMaterialDetailSerialNumberPOList.stream() + .collect(Collectors.groupingBy(InMaterialDetailSerialNumberPO::getMaterialDetailUniqueId)); + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + materialMoreDetailDO.setOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> { + List shelfMaterialDetailPOChildrenNowList = new ArrayList<>(); + ShelfMaterialDetailPO shelfMaterialDetailPOChildrenNow = new ShelfMaterialDetailPO(); + BeanUtils.copyProperties(shelfMaterialDetailPO, shelfMaterialDetailPOChildrenNow, "children"); + List materialDetailSerialNumberList = inMaterialDetailSerialNumberMap.get(shelfMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberList)){ + shelfMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(materialDetailSerialNumberList); + }else { + shelfMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + shelfMaterialDetailPOChildrenNowList.add(shelfMaterialDetailPOChildrenNow); + //子集 + List shelfMaterialDetailPOChildrenList = shelfMaterialDetailPO.getChildren(); + shelfMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> { + List materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(shelfMaterialDetailPO.getUniqueId()); + if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)){ + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(materialDetailSerialNumberChildrenList); + }else { + receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(new ArrayList<>()); + } + }); + shelfMaterialDetailPOChildrenNowList.addAll(shelfMaterialDetailPOChildrenList); + shelfMaterialDetailPO.setChildren(shelfMaterialDetailPOChildrenNowList); + }); + stockShelfOrderPO.setMaterialDetailList(shelfMaterialDetailPOList); + return stockShelfOrderPO; + } + + + + /** + * @description 任务下发 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param stockShelfOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean taskDistribution(StockShelfOrderDO stockShelfOrderDO){ + //任务下发 生成上架作业单 + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockShelfOrderDO stockShelfOrderDOQuery = new StockShelfOrderDO(); + stockShelfOrderDOQuery.setShelfOrderIds(stockShelfOrderDO.getShelfOrderIds()); + stockShelfOrderDOQuery.setTaskDistribution(2); + List stockShelfOrderPOList = stockShelfOrderService.queryList(stockShelfOrderDOQuery); + if (CollectionUtils.isEmpty(stockShelfOrderPOList)){ + throw new ServiceException("上架单不存在或已下发,请重新选择"); + } + //上架生成任务下发 + genDeliveTask(stockShelfOrderPOList, stockShelfOrderDO); + //标记收货单任务已下发 + return stockShelfOrderService.update(null, new UpdateWrapper().lambda() + .set(StockShelfOrder::getTaskDistribution, 1) + .set(StockShelfOrder::getTaskDistributionTime, new Date()) + .set(StockShelfOrder::getUpdateBy, loginUser.getUserid()) + .set(StockShelfOrder::getUpdateByName, loginUser.getUsername()) + .set(StockShelfOrder::getUpdateTime, new Date()) + .in(StockShelfOrder::getShelfOrderId, stockShelfOrderDO.getShelfOrderIds())); + } + + /** + * @description 上架 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param stockShelfOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean upShelf(StockShelfOrderDO stockShelfOrderDO){ + if(ObjectUtil.isNull(stockShelfOrderDO.getUpdateTime())){ + throw new ServiceException("上架单修改时间不能为空"); + } + //TODO 加锁 锁上架单号 + StockShelfOrderPO stockShelfOrderPO = stockShelfOrderService.getInfo(stockShelfOrderDO.getShelfOrderId()); + if (stockShelfOrderPO.getUpdateTime().compareTo(stockShelfOrderDO.getUpdateTime()) != 0){ + throw new ServiceException("上架单【" + stockShelfOrderPO.getShelfOrderNumber() + "】数据已被更新,请刷新后重新进行上架"); + } + //上架保存容器使用记录 + genContainerUsageRecord(stockShelfOrderDO); + //修改物料明细信息 + shelfMaterialDetailService.batchShelfUpdate(stockShelfOrderDO); + //生成 上架作业单 + genStockShelfTaskOrderByUpShelf(stockShelfOrderDO); + //修改入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 + updateStockInOrder(stockShelfOrderPO, 4); + //保存库存序列号数据 + saveSerialNumberByUpShelf(stockShelfOrderDO); + //设置上架单上架需要更新的数据数据 + return updateStockShelfOrder(stockShelfOrderDO, stockShelfOrderPO); + } + + /** + * @description 设置上架单上架需要更新的数据数据 + * @author ZhouGY + * @date 2024/6/14 17:27 + * @param stockShelfOrderDO + * @return StockReceiptOrder + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockShelfOrder(StockShelfOrderDO stockShelfOrderDO, StockShelfOrderPO stockShelfOrderPO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockShelfOrder stockShelfOrder = new StockShelfOrder(); + stockShelfOrder.setShelfOrderId(stockShelfOrderDO.getShelfOrderId()); + stockShelfOrder.setStatus(2); + stockShelfOrder.setShelvesQuantity(stockShelfOrderPO.getShelvesQuantity().add(stockShelfOrderDO.getActualQuantity())); + stockShelfOrder.setShelvesMaterialQuantity(stockShelfOrderPO.getShelvesMaterialQuantity() + stockShelfOrderDO.getActualReceiptMaterialQuantity()); + stockShelfOrder.setUpdateBy(loginUser.getUserid()); + stockShelfOrder.setUpdateByName(loginUser.getUsername()); + stockShelfOrder.setUpdateTime(new Date()); + stockShelfOrderService.updateById(stockShelfOrder); + //上架数量大于等于计划数量 直接完成上架 + if (stockShelfOrder.getShelvesQuantity().compareTo(stockShelfOrderPO.getReceiptQuantity()) >= 0){ + completeUpShelf(stockShelfOrderPO.getShelfOrderId()); + } + return true; + } + + /** + * @param stockShelfOrderPO + * @param status 入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入 + * @return StockReceiptOrder + * @description 更新入库单状态 + * @author ZhouGY + * @date 2024/6/14 17:27 + */ + @Transactional(rollbackFor = Exception.class) + public Boolean updateStockInOrder(StockShelfOrderPO stockShelfOrderPO, Integer status) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + StockInOrder stockInOrder = new StockInOrder(); + stockInOrder.setInOrderNumber(stockShelfOrderPO.getInOrderNumber()); + stockInOrder.setStatus(status); + stockInOrder.setUpdateBy(loginUser.getUserid()); + stockInOrder.setUpdateByName(loginUser.getUsername()); + stockInOrder.setUpdateTime(new Date()); + return stockInOrderService.update(stockInOrder, + new QueryWrapper().lambda().eq(StockInOrder::getInOrderNumber, stockShelfOrderPO.getInOrderNumber())); + } + /** + * @description 完成上架 + * @author ZhouGY + * @date 2024/5/22 17:13 + * @param shelfOrderId + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean completeUpShelf(Long shelfOrderId){ + //完成上架 上架数量与收货数量不符,完成上架会生成上架异常记录 + StockShelfOrderPO stockShelfOrderPO = stockShelfOrderService.getInfo(shelfOrderId); + if (stockShelfOrderPO == null){ + throw new ServiceException("上架单不存在"); + } + if (3 == stockShelfOrderPO.getStatus()){ + throw new ServiceException("上架单【" + stockShelfOrderPO.getReceiptOrderNumber() + "】已完成上架,请重新选择"); + } + int abnormal = 2; + if (stockShelfOrderPO.getShelvesQuantity().compareTo(stockShelfOrderPO.getQuantity()) != 0){ + abnormal = 1; + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockShelfOrderService.update(null, new UpdateWrapper().lambda() + .set(StockShelfOrder::getStatus, 3) + .set(StockShelfOrder::getAbnormal, abnormal) + .set(StockShelfOrder::getUpdateBy, loginUser.getUserid()) + .set(StockShelfOrder::getUpdateByName, loginUser.getUsername()) + .set(StockShelfOrder::getUpdateTime, new Date()) + .eq(StockShelfOrder::getShelfOrderId, shelfOrderId)); + //修改入库单状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库 + updateStockInOrder(stockShelfOrderPO, 5); + //上架修改物料库存 + List shelfMaterialDetailList = shelfMaterialDetailService.list(new QueryWrapper().lambda().eq(ShelfMaterialDetail::getShelfOrderNumber, stockShelfOrderPO.getShelfOrderNumber())); + //组装上架修改库存参数 + shelfAddMaterialInventory(shelfMaterialDetailList); + //修改上架对应的序列号的库存信息 + updateSerialNumberforInventory(shelfMaterialDetailList); + //生成上架追溯记录 + genInventoryStandingDetail(stockShelfOrderPO); + //存在异常 生成记录 + if (abnormal == 1){ + genInOrderAbnormal(stockShelfOrderPO); + } + //推送业务数据到BMS系统 +// pushSyncBmsDomainService.pushInShelfOrder(stockShelfOrderPO.getInOrderNumber()); + return true; + } + + /** + * @description 生成异常记录 + * @author ZhouGY + * @date 2024/8/2 15:47 + * @param stockShelfOrderPO + */ + public void genInOrderAbnormal(StockShelfOrderPO stockShelfOrderPO){ + //收货数量与计划数量不符,完成收货会生成收货异常记录 + InOrderAbnormalBaseDO inOrderAbnormalBaseDO = new InOrderAbnormalBaseDO(); + BeanUtils.copyProperties(stockShelfOrderPO, inOrderAbnormalBaseDO); + inOrderAbnormalBaseDO.setInOrderNumber(stockShelfOrderPO.getInOrderNumber()); + inOrderAbnormalBaseDO.setReceiptOrderNumber(stockShelfOrderPO.getReceiptOrderNumber()); + inOrderAbnormalBaseDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + iInOrderAbnormalService.genInOrderAbnormal(inOrderAbnormalBaseDO, 2); + } + + /** + * @description 组装上架修改库存参数 + * @author ZhouGY + * @date 2024/6/19 10:07 + * @param shelfMaterialDetailList + * @return Boolean + */ + public void shelfAddMaterialInventory(List shelfMaterialDetailList){ + List materialInventoryDOList = new ArrayList<>(); + for (ShelfMaterialDetail shelfMaterialDetail : shelfMaterialDetailList){ + MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); + BeanUtils.copyProperties(shelfMaterialDetail, materialInventoryDO); + materialInventoryDO.setInventoryQuantity(shelfMaterialDetail.getShelvesQuantity()); + materialInventoryDO.setAllocationQuantity(shelfMaterialDetail.getShelvesQuantity()); + materialInventoryDOList.add(materialInventoryDO); + } + materialInventoryService.updateMaterialInventoryInfo(materialInventoryDOList, 1); + } + + public void updateSerialNumberforInventory(List shelfMaterialDetailList){ + for (ShelfMaterialDetail shelfMaterialDetail : shelfMaterialDetailList){ + MaterialInventory one = materialInventoryService.getOne(new QueryWrapper().lambda().eq(MaterialInventory::getMaterialDetailId, shelfMaterialDetail.getMaterialDetailId())); + iSerialNumberService.update(new UpdateWrapper().lambda().eq(SerialNumber::getMaterialDetailId, one.getMaterialDetailId()).set(SerialNumber::getMaterialInventoryId, one.getMaterialInventoryId())); + } + } + + + /** + * @description 生成上架作业单 + * @author ZhouGY + * @date 2024/6/17 14:58 + * @param stockShelfOrderDO + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genStockShelfTaskOrderByUpShelf(StockShelfOrderDO stockShelfOrderDO) { + StockInTaskOrderDO stockInTaskOrderDO = new StockInTaskOrderDO(); + BeanUtils.copyProperties(stockShelfOrderDO, stockInTaskOrderDO); + stockInTaskOrderDO.setSerialNumber(OrderSequence.getOrderCode("SHZYLS")); + stockInTaskOrderDO.setTaskNumber(OrderSequence.getOrderCode("SHZY")); + stockInTaskOrderDO.setType(2);//上架 + List taskReceiptMaterialDetailDOList = stockShelfOrderDO.getMaterialDetailList().stream() + .map(shelfMaterialDetailDO -> JSONUtil.toBean(JSONUtil.toJsonStr(shelfMaterialDetailDO), TaskShelfMaterialDetailDO.class)) + .collect(Collectors.toList()); + stockInTaskOrderDO.setTaskShelfMaterialDetailList(taskReceiptMaterialDetailDOList); + return stockInTaskOrderService.genStockShelfTaskOrder(Collections.singletonList(stockInTaskOrderDO)); + } + + /** + * @description 生成上架追溯记录 + * @author ZhouGY + * @date 2024/7/27 14:19 + * @param stockShelfOrderPO + */ + @Transactional(rollbackFor = Exception.class) + public void genInventoryStandingDetail(StockShelfOrderPO stockShelfOrderPO){ + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + shelfMaterialDetailDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber()); + List shelfMaterialDetailPOList = shelfMaterialDetailService.queryList(shelfMaterialDetailDO); + //生成追溯记录 + List inventoryStandingDetailDOList = new ArrayList<>(); + LoginUser loginUser = SecurityUtils.getLoginUser(); + for (ShelfMaterialDetailPO shelfMaterialDetailPO : shelfMaterialDetailPOList){ + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + inventoryStandingDetailDO.setOrganizationId(stockShelfOrderPO.getOrganizationId()); + inventoryStandingDetailDO.setOrganizationName(stockShelfOrderPO.getOrganizationName()); + inventoryStandingDetailDO.setTopOrganizationId(stockShelfOrderPO.getTopOrganizationId()); + inventoryStandingDetailDO.setMaterialCode(shelfMaterialDetailPO.getMaterialCode()); + inventoryStandingDetailDO.setMaterialName(shelfMaterialDetailPO.getMaterialName()); + inventoryStandingDetailDO.setMaterialBarCode(shelfMaterialDetailPO.getBarCode()); + inventoryStandingDetailDO.setTrackingNumber(shelfMaterialDetailPO.getShelfOrderNumber()); + inventoryStandingDetailDO.setWarehouseId(stockShelfOrderPO.getWarehouseId()); + inventoryStandingDetailDO.setWarehouseCode(stockShelfOrderPO.getWarehouseCode()); + inventoryStandingDetailDO.setWarehouseName(stockShelfOrderPO.getWarehouseName()); + inventoryStandingDetailDO.setNodeStatus(2); + inventoryStandingDetailDO.setMaterialQuantity(shelfMaterialDetailPO.getShelvesQuantity()); + inventoryStandingDetailDO.setCreateBy(loginUser.getUserid()); + inventoryStandingDetailDO.setCreateByName(loginUser.getUsername()); + inventoryStandingDetailDO.setCreateTime(new Date()); + inventoryStandingDetailDOList.add(inventoryStandingDetailDO); + } + inventoryStandingDetailService.batchInsert(inventoryStandingDetailDOList); + } + + /** + * @description 上架生成任务下发 + * @author ZhouGY + * @date 2024/7/27 15:23 + * @param stockReceiptOrderPOList + * @param stockReceiptOrderDO + */ + @Transactional(rollbackFor = Exception.class) + public void genDeliveTask(List stockReceiptOrderPOList, StockShelfOrderDO stockReceiptOrderDO){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + List deliveTaskDOList = new ArrayList<>(); + for (StockShelfOrderPO stockShelfOrderPO : stockReceiptOrderPOList){ + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + deliveTaskDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + deliveTaskDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + deliveTaskDO.setTaskNumber(OrderSequence.getOrderCode("RW")); + deliveTaskDO.setTrackingNumber(stockShelfOrderPO.getShelfOrderNumber()); + deliveTaskDO.setWarehouseId(stockShelfOrderPO.getWarehouseId()); + deliveTaskDO.setWarehouseCode(stockShelfOrderPO.getWarehouseCode()); + deliveTaskDO.setWarehouseName(stockShelfOrderPO.getWarehouseName()); + deliveTaskDO.setTaskType(2); + deliveTaskDO.setTaskDistribution(1); + deliveTaskDO.setTaskDistributionId(loginUser.getUserid()); + deliveTaskDO.setTaskDistributionName(loginUser.getUsername()); + deliveTaskDO.setTaskDistributionTime(new Date()); + deliveTaskDO.setOperatorsBy(stockReceiptOrderDO.getOperatorsBy()); + deliveTaskDO.setOperatorsName(stockReceiptOrderDO.getOperatorsName()); + deliveTaskDO.setCreateBy(loginUser.getUserid()); + deliveTaskDO.setCreateByName(loginUser.getUsername()); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDOList.add(deliveTaskDO); + } + deliveTaskService.batchInsert(deliveTaskDOList); + } + + /** + * @description 保存库存序列号 + * @author liyc + * @date 2024/8/7 + * @param stockShelfOrderDO + */ + @Transactional(rollbackFor = Exception.class) + public void saveSerialNumberByUpShelf(StockShelfOrderDO stockShelfOrderDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + stockShelfOrderDO.getMaterialDetailList().forEach(shelfMaterialDetailDO -> { + if (CollectionUtil.isNotEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())) { + List serialNumberList = new ArrayList<>(); + shelfMaterialDetailDO.getMaterialDetailSerialNumberList().forEach(materialDetailSerialNumber -> { + SerialNumber serialNumber = new SerialNumber(); + BeanUtils.copyProperties(shelfMaterialDetailDO, serialNumber); + serialNumber.setSerialNumber(materialDetailSerialNumber.getSerialNumber()); + serialNumber.setShelfOrderId(stockShelfOrderDO.getShelfOrderId()); + serialNumber.setInOrderNumber(stockShelfOrderDO.getInOrderNumber()); +// serialNumber.setMaterialBaseInfoId(shelfMaterialDetailDO.getMaterialBaseInfoId()); +// serialNumber.setMaterialName(shelfMaterialDetailDO.getMaterialName()); +// serialNumber.setMaterialCode(shelfMaterialDetailDO.getMaterialCode()); +// serialNumber.setBarCode(shelfMaterialDetailDO.getBarCode()); + //仓库信息前端选择后传值 我全都要! + serialNumber.setWarehouseId(stockShelfOrderDO.getWarehouseId()); + serialNumber.setWarehouseCode(stockShelfOrderDO.getWarehouseCode()); + serialNumber.setWarehouseName(stockShelfOrderDO.getWarehouseName()); +// serialNumber.setStorageSectionId(shelfMaterialDetailDO.getStorageSectionId()); +// serialNumber.setStorageCode(shelfMaterialDetailDO.getStorageCode()); +// serialNumber.setStorageName(shelfMaterialDetailDO.getStorageName()); +// serialNumber.setStorageLocationId(shelfMaterialDetailDO.getStorageLocationId()); +// serialNumber.setStorageLocationCode(shelfMaterialDetailDO.getStorageLocationCode()); +// serialNumber.setStorageLocationName(shelfMaterialDetailDO.getStorageLocationName()); +// serialNumber.setBatchNumber(shelfMaterialDetailDO.getBatchNumber()); +// serialNumber.setContainerId(shelfMaterialDetailDO.getContainerId()); + //获取容器详情 +// if(null != shelfMaterialDetailDO.getContainerId() && shelfMaterialDetailDO.getContainerId() != 0L){ +// AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId()); +// if(!"200".equals(String.valueOf(ajaxResult.get("code")))){ +// throw new ServiceException("获取容器信息失败"); +// } +// ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); +// serialNumber.setContainerCode(containerFeignPO.getContainerCode()); +// serialNumber.setContainerType(containerFeignPO.getContainerType()); +// serialNumber.setContainerTypeName(containerFeignPO.getContainerTypeName()); +// } + //在库 + serialNumber.setStatus(1); + serialNumber.setCreateBy(loginUser.getUserid()); + serialNumber.setCreateByName(loginUser.getUsername()); + serialNumber.setCreateTime(new Date()); + serialNumber.setUpdateBy(loginUser.getUserid()); + serialNumber.setUpdateByName(loginUser.getUsername()); + serialNumber.setUpdateTime(new Date()); + serialNumberList.add(serialNumber); + }); + iSerialNumberService.saveBatch(serialNumberList); + } + }); + + } + + /** + * @description 保存容器使用记录 + * @param stockShelfOrderDO + * @return + */ + @Transactional(rollbackFor = Exception.class) + public void genContainerUsageRecord(StockShelfOrderDO stockShelfOrderDO) { + List shelfMaterialDetailDOList = stockShelfOrderDO.getMaterialDetailList(); + if (CollectionUtils.isEmpty(shelfMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + //所有明细 + List listShelfMaterialDetail = shelfMaterialDetailService.list(new QueryWrapper().lambda().eq(ShelfMaterialDetail::getShelfOrderNumber, stockShelfOrderDO.getShelfOrderNumber())); + LoginUser loginUser = SecurityUtils.getLoginUser(); + //根据明细id分组 + Map> mapReceiptMaterialDetail = listShelfMaterialDetail.stream().collect(Collectors.groupingBy(ShelfMaterialDetail::getMaterialDetailId)); + //循环传值明细list + for (ShelfMaterialDetailDO shelfMaterialDetailDO:stockShelfOrderDO.getMaterialDetailList()) { + List shelfMaterialDetails = mapReceiptMaterialDetail.get(shelfMaterialDetailDO.getMaterialDetailId()); + + ContainerUsageRecordDO containerUsageRecordDO = new ContainerUsageRecordDO(); + //如果该明细不存在库里,或者允许修改,说明这个明细还未上架 + if (CollectionUtils.isEmpty(shelfMaterialDetails) || 1 == shelfMaterialDetails.get(0).getAllowModify()) { + //根据容器id获取容器信息 + if (null != shelfMaterialDetailDO.getContainerId() && shelfMaterialDetailDO.getContainerId() != 0L) { + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId()); + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + //构建容器使用记录 + containerUsageRecordDO.setOrganizationId(stockShelfOrderDO.getOrganizationId()); + containerUsageRecordDO.setOrganizationName(stockShelfOrderDO.getOrganizationName()); + containerUsageRecordDO.setTopOrganizationId(stockShelfOrderDO.getTopOrganizationId()); + containerUsageRecordDO.setUseType(1); + containerUsageRecordDO.setNode(1); + containerUsageRecordDO.setMaterialBaseInfoId(shelfMaterialDetailDO.getMaterialBaseInfoId()); + containerUsageRecordDO.setMaterialCode(shelfMaterialDetailDO.getMaterialCode()); + containerUsageRecordDO.setMaterialName(shelfMaterialDetailDO.getMaterialName()); + containerUsageRecordDO.setBarCode(shelfMaterialDetailDO.getBarCode()); + containerUsageRecordDO.setContainerId(shelfMaterialDetailDO.getContainerId()); + containerUsageRecordDO.setContainerType(containerFeignPO.getContainerType()); + containerUsageRecordDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + containerUsageRecordDO.setContainerCode(containerFeignPO.getContainerCode()); + containerUsageRecordDO.setContainerVolume(containerFeignPO.getContainerVolume()); + containerUsageRecordDO.setCreateBy(loginUser.getUserid()); + containerUsageRecordDO.setCreateByName(loginUser.getUsername()); + containerUsageRecordDO.setCreateTime(new Date()); + containerUsageRecordService.insert(containerUsageRecordDO); + } + } + //以上不设置相反跳过循环的原因是,需要关心明细的子项 + //明细子项 + for (ShelfMaterialDetailDO children : shelfMaterialDetailDO.getChildren()) { + List shelfMaterialDetailsChildren = mapReceiptMaterialDetail.get(shelfMaterialDetailDO.getMaterialDetailId()); + //如果该子项存在,并且不允许修改,说明这个子项已收货,则此处可跳过循环 + if (!CollectionUtils.isEmpty(shelfMaterialDetailsChildren) && 2 == shelfMaterialDetailsChildren.get(0).getAllowModify()) { + continue; + } + //根据容器id获取容器信息 + if (null != children.getContainerId() && children.getContainerId() != 0L) { + AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(children.getContainerId()); + if (!"200".equals(String.valueOf(ajaxResult.get("code")))) { + throw new ServiceException("获取容器信息失败"); + } + ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class); + containerUsageRecordDO.setContainerId(children.getContainerId()); + containerUsageRecordDO.setContainerType(containerFeignPO.getContainerType()); + containerUsageRecordDO.setContainerTypeName(containerFeignPO.getContainerTypeName()); + containerUsageRecordDO.setContainerCode(containerFeignPO.getContainerCode()); + containerUsageRecordDO.setContainerVolume(containerFeignPO.getContainerVolume()); + containerUsageRecordService.insert(containerUsageRecordDO); + } + } + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/entity/TaskHandoverMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/entity/TaskHandoverMaterialDetail.java new file mode 100644 index 000000000..f7268793e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/entity/TaskHandoverMaterialDetail.java @@ -0,0 +1,128 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 交接作业单物料明细对象 task_handover_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskHandoverMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/facade/ITaskHandoverMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/facade/ITaskHandoverMaterialDetailService.java new file mode 100644 index 000000000..24182bf93 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/facade/ITaskHandoverMaterialDetailService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.taskHandoverMaterialDetail.entity.TaskHandoverMaterialDetail; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.todo.TaskHandoverMaterialDetailDO; + +import java.util.List; + +/** + * 交接作业单物料明细Service接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface ITaskHandoverMaterialDetailService extends IService +{ + /** + * 分页查询交接作业单物料明细列表 + */ + public List queryList(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO); + + /** + * 新增交接作业单物料明细 + */ + public Boolean insert(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO); + + /** + * 修改交接作业单物料明细 + */ + public Boolean update(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO); + + /** + * 批量删除交接作业单物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询交接作业单物料明细 + */ + public TaskHandoverMaterialDetailPO getInfo(Long materialDetailId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/mapper/TaskHandoverMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/mapper/TaskHandoverMaterialDetailMapper.java new file mode 100644 index 000000000..7c57aefd3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/mapper/TaskHandoverMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.taskHandoverMaterialDetail.entity.TaskHandoverMaterialDetail; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.todo.TaskHandoverMaterialDetailDO; + +import java.util.List; + +/** + * 交接作业单物料明细Mapper接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface TaskHandoverMaterialDetailMapper extends BaseMapper +{ + /** + * 查询交接作业单物料明细列表 + */ + public List queryList(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/persistence/TaskHandoverMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/persistence/TaskHandoverMaterialDetailImpl.java new file mode 100644 index 000000000..c2fe7ea68 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/persistence/TaskHandoverMaterialDetailImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.taskHandoverMaterialDetail.entity.TaskHandoverMaterialDetail; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.facade.ITaskHandoverMaterialDetailService; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.mapper.TaskHandoverMaterialDetailMapper; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.todo.TaskHandoverMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 交接作业单物料明细Service业务层处理 + * + * @author gen + * @date 2024-07-13 + */ +@Service +public class TaskHandoverMaterialDetailImpl extends ServiceImpl implements ITaskHandoverMaterialDetailService { + @Autowired + private TaskHandoverMaterialDetailMapper taskHandoverMaterialDetailMapper; + + /** + * 查询交接作业单物料明细列表 + */ + @Override + public List queryList(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) + { + return taskHandoverMaterialDetailMapper.queryList(taskHandoverMaterialDetailDO); + } + + /** + * 新增交接作业单物料明细 + */ + @Override + public Boolean insert(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) { + TaskHandoverMaterialDetail taskHandoverMaterialDetail = new TaskHandoverMaterialDetail(); + BeanUtils.copyProperties(taskHandoverMaterialDetailDO,taskHandoverMaterialDetail); + return this.save(taskHandoverMaterialDetail); + } + + /** + * 修改交接作业单物料明细 + */ + @Override + public Boolean update(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) { + TaskHandoverMaterialDetail taskHandoverMaterialDetail = new TaskHandoverMaterialDetail(); + BeanUtils.copyProperties(taskHandoverMaterialDetailDO,taskHandoverMaterialDetail); + return this.updateById(taskHandoverMaterialDetail); + } + + /** + * 批量删除交接作业单物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + TaskHandoverMaterialDetail taskHandoverMaterialDetail = new TaskHandoverMaterialDetail(); + taskHandoverMaterialDetail.setMaterialDetailId(id); + taskHandoverMaterialDetail.setDelFlag(2); + list.add(taskHandoverMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改交接作业单物料明细 + */ + @Override + public TaskHandoverMaterialDetailPO getInfo(Long materialDetailId) { + TaskHandoverMaterialDetail taskHandoverMaterialDetail = this.getById(materialDetailId); + TaskHandoverMaterialDetailPO taskHandoverMaterialDetailPO = new TaskHandoverMaterialDetailPO(); + BeanUtils.copyProperties(taskHandoverMaterialDetail,taskHandoverMaterialDetailPO); + return taskHandoverMaterialDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/po/TaskHandoverMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/po/TaskHandoverMaterialDetailPO.java new file mode 100644 index 000000000..41ede051d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/po/TaskHandoverMaterialDetailPO.java @@ -0,0 +1,128 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 交接作业单物料明细对象 task_handover_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +@ApiModel(value = "交接作业单物料明细对象", description = "交接作业单物料明细响应对象") +public class TaskHandoverMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/todo/TaskHandoverMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/todo/TaskHandoverMaterialDetailDO.java new file mode 100644 index 000000000..ee101b58e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/repository/todo/TaskHandoverMaterialDetailDO.java @@ -0,0 +1,130 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 交接作业单物料明细对象 task_handover_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskHandoverMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/service/TaskHandoverMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/service/TaskHandoverMaterialDetailDomainService.java new file mode 100644 index 000000000..0e7473bbc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskHandoverMaterialDetail/service/TaskHandoverMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.taskHandoverMaterialDetail.service; + +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.facade.ITaskHandoverMaterialDetailService; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.po.TaskHandoverMaterialDetailPO; +import com.mhd.wms.domain.taskHandoverMaterialDetail.repository.todo.TaskHandoverMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 交接作业单物料明细 + * + * @author gen + * @date 2024-07-13 + */ +@Service +@Slf4j +public class TaskHandoverMaterialDetailDomainService { + + @Autowired + private ITaskHandoverMaterialDetailService taskHandoverMaterialDetailService; + + + /** + * 分页查询交接作业单物料明细列表 + */ + public List queryList(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) { + return taskHandoverMaterialDetailService.queryList(taskHandoverMaterialDetailDO); + } + + + /** + * 新增交接作业单物料明细 + */ + public Boolean insert(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) { + + return taskHandoverMaterialDetailService.insert(taskHandoverMaterialDetailDO); + } + + /** + * 修改交接作业单物料明细 + */ + public Boolean update(TaskHandoverMaterialDetailDO taskHandoverMaterialDetailDO) { + return taskHandoverMaterialDetailService.update(taskHandoverMaterialDetailDO); + } + + /** + * 批量删除交接作业单物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return taskHandoverMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取交接作业单物料明细详细信息 + */ + public TaskHandoverMaterialDetailPO getInfo(Long materialDetailId) + { + return taskHandoverMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/entity/TaskPickingMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/entity/TaskPickingMaterialDetail.java new file mode 100644 index 000000000..b8cf8b46c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/entity/TaskPickingMaterialDetail.java @@ -0,0 +1,202 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 拣货作业单物料明细对象 task_picking_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskPickingMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("拣货单明细唯一Id") + @Excel(name = "拣货单明细唯一Id") + private Long pickingUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/facade/ITaskPickingMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/facade/ITaskPickingMaterialDetailService.java new file mode 100644 index 000000000..0e8353099 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/facade/ITaskPickingMaterialDetailService.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.entity.TaskPickingMaterialDetail; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; + +import java.util.List; + +/** + * 拣货作业单物料明细Service接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface ITaskPickingMaterialDetailService extends IService +{ + /** + * 分页查询拣货作业单物料明细列表 + */ + public List queryList(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO); + + /** + * 新增拣货作业单物料明细 + */ + public Boolean insert(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO); + + /** + * 修改拣货作业单物料明细 + */ + public Boolean update(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO); + + /** + * 批量删除拣货作业单物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询拣货作业单物料明细 + */ + public TaskPickingMaterialDetailPO getInfo(Long materialDetailId); + + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/7/17 14:55 + * @param stockOutTaskOrderDO + * @return Boolean + */ + public StockOutTaskOrderPO batchPickingUpdate(StockOutTaskOrderDO stockOutTaskOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/mapper/TaskPickingMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/mapper/TaskPickingMaterialDetailMapper.java new file mode 100644 index 000000000..48bf5f010 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/mapper/TaskPickingMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.taskPickingMaterialDetail.entity.TaskPickingMaterialDetail; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; + +import java.util.List; + +/** + * 拣货作业单物料明细Mapper接口 + * + * @author gen + * @date 2024-07-13 + */ +public interface TaskPickingMaterialDetailMapper extends BaseMapper +{ + /** + * 查询拣货作业单物料明细列表 + */ + public List queryList(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java new file mode 100644 index 000000000..203f51342 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/persistence/TaskPickingMaterialDetailImpl.java @@ -0,0 +1,238 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.repository.persistence; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.entity.OutMaterialDetailSerialNumber; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDOByUpdate; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.entity.TaskPickingMaterialDetail; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.facade.ITaskPickingMaterialDetailService; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.mapper.TaskPickingMaterialDetailMapper; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 拣货作业单物料明细Service业务层处理 + * + * @author gen + * @date 2024-07-13 + */ +@Service +public class TaskPickingMaterialDetailImpl extends ServiceImpl implements ITaskPickingMaterialDetailService{ + @Autowired + private TaskPickingMaterialDetailMapper taskPickingMaterialDetailMapper; + @Autowired + private IOutMaterialDetailSerialNumberService outMaterialDetailSerialNumberService; + @Autowired + private IPickingMaterialDetailService pickingMaterialDetailService; + + /** + * 查询拣货作业单物料明细列表 + */ + @Override + public List queryList(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) + { + return taskPickingMaterialDetailMapper.queryList(taskPickingMaterialDetailDO); + } + + /** + * 新增拣货作业单物料明细 + */ + @Override + public Boolean insert(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) { + TaskPickingMaterialDetail taskPickingMaterialDetail = new TaskPickingMaterialDetail(); + BeanUtils.copyProperties(taskPickingMaterialDetailDO,taskPickingMaterialDetail); + return this.save(taskPickingMaterialDetail); + } + + /** + * 修改拣货作业单物料明细 + */ + @Override + public Boolean update(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) { + TaskPickingMaterialDetail taskPickingMaterialDetail = new TaskPickingMaterialDetail(); + BeanUtils.copyProperties(taskPickingMaterialDetailDO,taskPickingMaterialDetail); + return this.updateById(taskPickingMaterialDetail); + } + + /** + * 批量删除拣货作业单物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + TaskPickingMaterialDetail taskPickingMaterialDetail = new TaskPickingMaterialDetail(); + taskPickingMaterialDetail.setMaterialDetailId(id); + taskPickingMaterialDetail.setDelFlag(2); + list.add(taskPickingMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改拣货作业单物料明细 + */ + @Override + public TaskPickingMaterialDetailPO getInfo(Long materialDetailId) { + TaskPickingMaterialDetail taskPickingMaterialDetail = this.getById(materialDetailId); + TaskPickingMaterialDetailPO taskPickingMaterialDetailPO = new TaskPickingMaterialDetailPO(); + BeanUtils.copyProperties(taskPickingMaterialDetail,taskPickingMaterialDetailPO); + return taskPickingMaterialDetailPO; + } + + /** + * @description 拣货批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param stockOutTaskOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public StockOutTaskOrderPO batchPickingUpdate(StockOutTaskOrderDO stockOutTaskOrderDO) { + List taskPickingMaterialDetailDOList = stockOutTaskOrderDO.getTaskPickingMaterialDetailList(); + if (CollectionUtils.isEmpty(taskPickingMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //批量新增或修改物料信息 + List taskPickingMaterialDetailList = new ArrayList<>(); + List pickingMaterialDetailList = new ArrayList<>(); + List taskPickingMaterialDetailDbList = taskPickingMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(TaskPickingMaterialDetail::getTaskNumber, stockOutTaskOrderDO.getTaskNumber()) + .eq(TaskPickingMaterialDetail::getDelFlag, 1)); + Map taskPickingMaterialDetailMap = taskPickingMaterialDetailDbList.stream().collect(Collectors.toMap(TaskPickingMaterialDetail::getMaterialDetailId, Function.identity())); + // 批量新增或修改序列号 + List outMaterialDetailSerialNumberList = new ArrayList<>(); + BigDecimal totalPickingQuantity = BigDecimal.ZERO; + int totalPickingMaterialQuantity = 0; + for (TaskPickingMaterialDetailDO taskPickingMaterialDetailDO : taskPickingMaterialDetailDOList){ + TaskPickingMaterialDetail taskPickingMaterialDetailDb = taskPickingMaterialDetailMap.get(taskPickingMaterialDetailDO.getMaterialDetailId()); + if (taskPickingMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + if (ObjectUtil.isNull(taskPickingMaterialDetailDO.getActualQuantity()) || taskPickingMaterialDetailDO.getActualQuantity().compareTo(BigDecimal.ZERO) == 0){ + //未进行拣货直接跳过 + continue; + } + //设置目标库位信息 + TaskPickingMaterialDetail taskPickingMaterialDetail = new TaskPickingMaterialDetail(); + taskPickingMaterialDetail.setMaterialDetailId(taskPickingMaterialDetailDO.getMaterialDetailId()); + taskPickingMaterialDetail.setPickingQuantity(taskPickingMaterialDetailDb.getPickingQuantity().add(taskPickingMaterialDetailDO.getActualQuantity())); + taskPickingMaterialDetail.setUpdateBy(loginUser.getUserid()); + taskPickingMaterialDetail.setUpdateByName(loginUser.getUsername()); + taskPickingMaterialDetail.setUpdateTime(new Date()); + //判断拣货数量是否等于计划数量 + Integer pickingStatus = judgePickingQuantity(taskPickingMaterialDetail.getPickingQuantity(), taskPickingMaterialDetailDb.getQuantity()); + taskPickingMaterialDetail.setPickingStatus(pickingStatus); + if (pickingStatus > 2){ + totalPickingMaterialQuantity += 1; + } + taskPickingMaterialDetailList.add(taskPickingMaterialDetail); + //判断是否开启了序列号管理 + if (taskPickingMaterialDetailDb.getSerialNumberManage() == 1) { + if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())) { + throw new ServiceException("物料【" + taskPickingMaterialDetailDb.getMaterialName() + "】开启了序列号管理的序列号不能为空"); + } + outMaterialDetailSerialNumberList.addAll(genMaterialDetailSerialNumber(taskPickingMaterialDetailDO)); + } + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + pickingMaterialDetailDO.setUniqueId(taskPickingMaterialDetailDb.getPickingUniqueId()); + pickingMaterialDetailDO.setPickingQuantity(taskPickingMaterialDetailDO.getPickingQuantity()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + totalPickingQuantity = totalPickingQuantity.add(taskPickingMaterialDetailDO.getActualQuantity()); + } + //保存物料明细信息 + saveOrUpdateBatch(taskPickingMaterialDetailList); + //批量新增或修改序列号 + if (!CollectionUtils.isEmpty(outMaterialDetailSerialNumberList)){ + outMaterialDetailSerialNumberService.saveBatch(outMaterialDetailSerialNumberList); + } + PickingMaterialDetailDOByUpdate pickingMaterialDetailDOByUpdate = new PickingMaterialDetailDOByUpdate(); + pickingMaterialDetailDOByUpdate.setUpdateBy(loginUser.getUserid()); + pickingMaterialDetailDOByUpdate.setUpdateByName(loginUser.getUsername()); + pickingMaterialDetailDOByUpdate.setUpdateTime(new Date()); + pickingMaterialDetailDOByUpdate.setPickingMaterialDetailList(pickingMaterialDetailList); + pickingMaterialDetailService.addQuantity(pickingMaterialDetailDOByUpdate); + StockOutTaskOrderPO stockOutTaskOrderPO = new StockOutTaskOrderPO(); + stockOutTaskOrderPO.setPickingQuantity(totalPickingQuantity); + stockOutTaskOrderPO.setPickingMaterialQuantity(totalPickingMaterialQuantity); + return stockOutTaskOrderPO; + } + + /** + * @description 生成流水号 + * @author ZhouGY + * @date 2024/5/28 15:06 + * @param taskPickingMaterialDetailDO + * @return List + */ + private List genMaterialDetailSerialNumber(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO){ + //批量新增或修改序列号 + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outMaterialDetailSerialNumberList = new ArrayList<>(); + List outMaterialDetailSerialNumberDOList = taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList(); + if (!CollectionUtils.isEmpty(outMaterialDetailSerialNumberDOList)){ + for (OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO : outMaterialDetailSerialNumberDOList){ + if (ObjectUtil.isNotNull(outMaterialDetailSerialNumberDO.getOutMaterialDetailSerialNumberId())){ + continue; + } + OutMaterialDetailSerialNumber outMaterialDetailSerialNumber = new OutMaterialDetailSerialNumber(); + BeanUtils.copyProperties(outMaterialDetailSerialNumberDO, outMaterialDetailSerialNumber, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailSerialNumberDO)); + outMaterialDetailSerialNumber.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetailSerialNumber.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outMaterialDetailSerialNumber.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + outMaterialDetailSerialNumber.setOrderNumber(taskPickingMaterialDetailDO.getTaskNumber()); + outMaterialDetailSerialNumber.setMaterialDetailUniqueId(taskPickingMaterialDetailDO.getUniqueId()); + outMaterialDetailSerialNumber.setType(1); + outMaterialDetailSerialNumber.setCreateBy(taskPickingMaterialDetailDO.getCreateBy()); + outMaterialDetailSerialNumber.setCreateByName(taskPickingMaterialDetailDO.getCreateByName()); + outMaterialDetailSerialNumber.setCreateTime(new Date()); + outMaterialDetailSerialNumberList.add(outMaterialDetailSerialNumber); + } + } + return outMaterialDetailSerialNumberList; + } + + /** + * @description 判断拣货数量是否完成 + * @author ZhouGY + * @date 2024/6/14 17:50 + * @param quantity + * @param pickingQuantity + * @return Integer + */ + private Integer judgePickingQuantity(BigDecimal pickingQuantity, BigDecimal quantity){ + if (pickingQuantity.compareTo(quantity) == 0) { + return 3; + } else if (pickingQuantity.compareTo(quantity) < 0) { + return 2; + } else { + throw new ServiceException("拣货数量不允许超出计划数量"); + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/po/TaskPickingMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/po/TaskPickingMaterialDetailPO.java new file mode 100644 index 000000000..5545f4622 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/po/TaskPickingMaterialDetailPO.java @@ -0,0 +1,207 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货作业单物料明细对象 task_picking_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +@ApiModel(value = "拣货作业单物料明细对象", description = "拣货作业单物料明细响应对象") +public class TaskPickingMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("待拣货数量") + @Excel(name = "待拣货数量") + private BigDecimal waitPickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("拣货单明细唯一Id") + @Excel(name = "拣货单明细唯一Id") + private Long pickingUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/todo/TaskPickingMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/todo/TaskPickingMaterialDetailDO.java new file mode 100644 index 000000000..c00697173 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/repository/todo/TaskPickingMaterialDetailDO.java @@ -0,0 +1,210 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货作业单物料明细对象 task_picking_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskPickingMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("作业数量:拣货数量") + @Excel(name = "作业数量:拣货数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("拣货单明细唯一Id") + @Excel(name = "拣货单明细唯一Id") + private Long pickingUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/service/TaskPickingMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/service/TaskPickingMaterialDetailDomainService.java new file mode 100644 index 000000000..b39460052 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskPickingMaterialDetail/service/TaskPickingMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.taskPickingMaterialDetail.service; + +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.facade.ITaskPickingMaterialDetailService; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 拣货作业单物料明细 + * + * @author gen + * @date 2024-07-13 + */ +@Service +@Slf4j +public class TaskPickingMaterialDetailDomainService { + + @Autowired + private ITaskPickingMaterialDetailService taskPickingMaterialDetailService; + + + /** + * 分页查询拣货作业单物料明细列表 + */ + public List queryList(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) { + return taskPickingMaterialDetailService.queryList(taskPickingMaterialDetailDO); + } + + + /** + * 新增拣货作业单物料明细 + */ + public Boolean insert(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) { + + return taskPickingMaterialDetailService.insert(taskPickingMaterialDetailDO); + } + + /** + * 修改拣货作业单物料明细 + */ + public Boolean update(TaskPickingMaterialDetailDO taskPickingMaterialDetailDO) { + return taskPickingMaterialDetailService.update(taskPickingMaterialDetailDO); + } + + /** + * 批量删除拣货作业单物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return taskPickingMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取拣货作业单物料明细详细信息 + */ + public TaskPickingMaterialDetailPO getInfo(Long materialDetailId) + { + return taskPickingMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/entity/TaskReceiptMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/entity/TaskReceiptMaterialDetail.java new file mode 100644 index 000000000..436794a5f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/entity/TaskReceiptMaterialDetail.java @@ -0,0 +1,202 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.entity; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 收货作业单物料详情对象 task_receipt_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskReceiptMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/facade/ITaskReceiptMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/facade/ITaskReceiptMaterialDetailService.java new file mode 100644 index 000000000..275ce4c85 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/facade/ITaskReceiptMaterialDetailService.java @@ -0,0 +1,55 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.taskReceiptMaterialDetail.entity.TaskReceiptMaterialDetail; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; + +import java.util.List; + +/** + * 收货作业单物料详情Service接口 + * + * @author gen + * @date 2024-06-19 + */ +public interface ITaskReceiptMaterialDetailService extends IService +{ + /** + * 分页查询收货作业单物料详情列表 + */ + public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO); + + /** + * 新增收货作业单物料详情 + */ + public Boolean insert(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO); + + /** + * 修改收货作业单物料详情 + */ + public Boolean update(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO); + + /** + * 批量删除收货作业单物料详情 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询收货作业单物料详情 + */ + public TaskReceiptMaterialDetailPO getInfo(Long materialDetailId); + + + /** + * @description 修改物料更多属性 + * @author ZhouGY + * @date 2024/5/28 15:03 + * @param taskReceiptMaterialDetailDO + * @return List + */ + public List genMaterialMoreDetail(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/mapper/TaskReceiptMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/mapper/TaskReceiptMaterialDetailMapper.java new file mode 100644 index 000000000..004b895f1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/mapper/TaskReceiptMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.taskReceiptMaterialDetail.entity.TaskReceiptMaterialDetail; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; + +import java.util.List; + +/** + * 收货作业单物料详情Mapper接口 + * + * @author gen + * @date 2024-06-19 + */ +public interface TaskReceiptMaterialDetailMapper extends BaseMapper +{ + /** + * 查询收货作业单物料详情列表 + */ + public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/persistence/TaskReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/persistence/TaskReceiptMaterialDetailImpl.java new file mode 100644 index 000000000..8aeb7a219 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/persistence/TaskReceiptMaterialDetailImpl.java @@ -0,0 +1,140 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.entity.TaskReceiptMaterialDetail; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.facade.ITaskReceiptMaterialDetailService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.mapper.TaskReceiptMaterialDetailMapper; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 收货作业单物料详情Service业务层处理 + * + * @author gen + * @date 2024-06-19 + */ +@Service +public class TaskReceiptMaterialDetailImpl extends ServiceImpl implements ITaskReceiptMaterialDetailService{ + @Autowired + private TaskReceiptMaterialDetailMapper taskReceiptMaterialDetailMapper; + + /** + * 查询收货作业单物料详情列表 + */ + @Override + public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) + { + List taskReceiptMaterialDetailPOList = taskReceiptMaterialDetailMapper.queryList(taskReceiptMaterialDetailDO); + // 获取查询的层级 + List receiptMaterialDetailPOParentList = taskReceiptMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + receiptMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), taskReceiptMaterialDetailPOList, 2))); + return receiptMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List taskReceiptMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = taskReceiptMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), taskReceiptMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增收货作业单物料详情 + */ + @Override + public Boolean insert(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + TaskReceiptMaterialDetail taskReceiptMaterialDetail = new TaskReceiptMaterialDetail(); + BeanUtils.copyProperties(taskReceiptMaterialDetailDO,taskReceiptMaterialDetail); + return this.save(taskReceiptMaterialDetail); + } + + /** + * 修改收货作业单物料详情 + */ + @Override + public Boolean update(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + TaskReceiptMaterialDetail taskReceiptMaterialDetail = new TaskReceiptMaterialDetail(); + BeanUtils.copyProperties(taskReceiptMaterialDetailDO,taskReceiptMaterialDetail); + return this.updateById(taskReceiptMaterialDetail); + } + + /** + * 批量删除收货作业单物料详情 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + TaskReceiptMaterialDetail taskReceiptMaterialDetail = new TaskReceiptMaterialDetail(); + taskReceiptMaterialDetail.setMaterialDetailId(id); + taskReceiptMaterialDetail.setDelFlag(2); + list.add(taskReceiptMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改收货作业单物料详情 + */ + @Override + public TaskReceiptMaterialDetailPO getInfo(Long materialDetailId) { + TaskReceiptMaterialDetail taskReceiptMaterialDetail = this.getById(materialDetailId); + TaskReceiptMaterialDetailPO taskReceiptMaterialDetailPO = new TaskReceiptMaterialDetailPO(); + BeanUtils.copyProperties(taskReceiptMaterialDetail,taskReceiptMaterialDetailPO); + return taskReceiptMaterialDetailPO; + } + + /** + * @description 修改物料更多属性 + * @author ZhouGY + * @date 2024/5/28 15:03 + * @param taskReceiptMaterialDetailDO + * @return List + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List genMaterialMoreDetail(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + List materialMoreDetailList = new ArrayList<>(); + List materialMoreDetailDOList = taskReceiptMaterialDetailDO.getMaterialMoreDetailList(); + if (CollectionUtils.isEmpty(materialMoreDetailDOList)){ + return materialMoreDetailList; + } + for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailDOList){ + MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail(); + BeanUtils.copyProperties(materialMoreDetailDO, materialMoreDetail); + materialMoreDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialMoreDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialMoreDetail.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialMoreDetail.setOrderNumber(taskReceiptMaterialDetailDO.getTaskNumber()); + materialMoreDetail.setMaterialDetailUniqueId(taskReceiptMaterialDetailDO.getUniqueId()); + materialMoreDetail.setCreateBy(loginUser.getUserid()); + materialMoreDetail.setCreateByName(loginUser.getUsername()); + materialMoreDetail.setCreateTime(new Date()); + materialMoreDetailList.add(materialMoreDetail); + } + return materialMoreDetailList; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/po/TaskReceiptMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/po/TaskReceiptMaterialDetailPO.java new file mode 100644 index 000000000..41495ccb0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/po/TaskReceiptMaterialDetailPO.java @@ -0,0 +1,204 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 收货作业单物料详情对象 task_receipt_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +@ApiModel(value = "收货作业单物料详情对象", description = "收货作业单物料详情响应对象") +public class TaskReceiptMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细子集") + private List children; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/todo/TaskReceiptMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/todo/TaskReceiptMaterialDetailDO.java new file mode 100644 index 000000000..ed0740c0e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/repository/todo/TaskReceiptMaterialDetailDO.java @@ -0,0 +1,215 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 收货作业单物料详情对象 task_receipt_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskReceiptMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/service/TaskReceiptMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/service/TaskReceiptMaterialDetailDomainService.java new file mode 100644 index 000000000..9d03cccd0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskReceiptMaterialDetail/service/TaskReceiptMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.taskReceiptMaterialDetail.service; + +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.facade.ITaskReceiptMaterialDetailService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 收货作业单物料详情 + * + * @author gen + * @date 2024-06-19 + */ +@Service +@Slf4j +public class TaskReceiptMaterialDetailDomainService { + + @Autowired + private ITaskReceiptMaterialDetailService taskReceiptMaterialDetailService; + + + /** + * 分页查询收货作业单物料详情列表 + */ + public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + return taskReceiptMaterialDetailService.queryList(taskReceiptMaterialDetailDO); + } + + + /** + * 新增收货作业单物料详情 + */ + public Boolean insert(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + + return taskReceiptMaterialDetailService.insert(taskReceiptMaterialDetailDO); + } + + /** + * 修改收货作业单物料详情 + */ + public Boolean update(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) { + return taskReceiptMaterialDetailService.update(taskReceiptMaterialDetailDO); + } + + /** + * 批量删除收货作业单物料详情 + */ + public Boolean delete(Long[] materialDetailIds) { + return taskReceiptMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取收货作业单物料详情详细信息 + */ + public TaskReceiptMaterialDetailPO getInfo(Long materialDetailId) + { + return taskReceiptMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/entity/TaskShelfMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/entity/TaskShelfMaterialDetail.java new file mode 100644 index 000000000..b5075d774 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/entity/TaskShelfMaterialDetail.java @@ -0,0 +1,185 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 上架作业物料详情对象 task_shelf_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskShelfMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/facade/ITaskShelfMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/facade/ITaskShelfMaterialDetailService.java new file mode 100644 index 000000000..a7e1d7f7e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/facade/ITaskShelfMaterialDetailService.java @@ -0,0 +1,45 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.taskShelfMaterialDetail.entity.TaskShelfMaterialDetail; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; + +import java.util.List; + +/** + * 上架作业物料详情Service接口 + * + * @author gen + * @date 2024-06-19 + */ +public interface ITaskShelfMaterialDetailService extends IService +{ + /** + * 分页查询上架作业物料详情列表 + */ + public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO); + + /** + * 新增上架作业物料详情 + */ + public Boolean insert(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO); + + /** + * 修改上架作业物料详情 + */ + public Boolean update(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO); + + /** + * 批量删除上架作业物料详情 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询上架作业物料详情 + */ + public TaskShelfMaterialDetailPO getInfo(Long materialDetailId); + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/mapper/TaskShelfMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/mapper/TaskShelfMaterialDetailMapper.java new file mode 100644 index 000000000..bef3a0955 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/mapper/TaskShelfMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.taskShelfMaterialDetail.entity.TaskShelfMaterialDetail; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; + +import java.util.List; + +/** + * 上架作业物料详情Mapper接口 + * + * @author gen + * @date 2024-06-19 + */ +public interface TaskShelfMaterialDetailMapper extends BaseMapper +{ + /** + * 查询上架作业物料详情列表 + */ + public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/persistence/TaskShelfMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/persistence/TaskShelfMaterialDetailImpl.java new file mode 100644 index 000000000..49a35691f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/persistence/TaskShelfMaterialDetailImpl.java @@ -0,0 +1,102 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.taskShelfMaterialDetail.entity.TaskShelfMaterialDetail; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.facade.ITaskShelfMaterialDetailService; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.mapper.TaskShelfMaterialDetailMapper; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 上架作业物料详情Service业务层处理 + * + * @author gen + * @date 2024-06-19 + */ +@Service +public class TaskShelfMaterialDetailImpl extends ServiceImpl implements ITaskShelfMaterialDetailService{ + @Autowired + private TaskShelfMaterialDetailMapper taskShelfMaterialDetailMapper; + + /** + * 查询上架作业物料详情列表 + */ + @Override + public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) + { + List taskShelfMaterialDetailPOList = taskShelfMaterialDetailMapper.queryList(taskShelfMaterialDetailDO); + // 获取查询的层级 + List askShelfMaterialDetailPOParentList = taskShelfMaterialDetailPOList + .stream().filter(e -> 1 == e.getLevel()).collect(Collectors.toList()); + // 递归查询子集 + askShelfMaterialDetailPOParentList.forEach(materialDetailPO -> materialDetailPO.setChildren(getChildren(materialDetailPO.getUniqueId(), taskShelfMaterialDetailPOList, 2))); + return askShelfMaterialDetailPOParentList; + } + + private List getChildren(Long parentUniqueId, List taskShelfMaterialDetailPOList, Integer maxLevel){ + List childrenCityList = taskShelfMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(childrenCityList)){ + childrenCityList.forEach(childrenCity -> { + if (childrenCity.getLevel() < maxLevel){ + childrenCity.setChildren(getChildren(childrenCity.getUniqueId(), taskShelfMaterialDetailPOList, maxLevel)); + } + }); + } + return childrenCityList; + } + + /** + * 新增上架作业物料详情 + */ + @Override + public Boolean insert(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + TaskShelfMaterialDetail taskShelfMaterialDetail = new TaskShelfMaterialDetail(); + BeanUtils.copyProperties(taskShelfMaterialDetailDO,taskShelfMaterialDetail); + return this.save(taskShelfMaterialDetail); + } + + /** + * 修改上架作业物料详情 + */ + @Override + public Boolean update(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + TaskShelfMaterialDetail taskShelfMaterialDetail = new TaskShelfMaterialDetail(); + BeanUtils.copyProperties(taskShelfMaterialDetailDO,taskShelfMaterialDetail); + return this.updateById(taskShelfMaterialDetail); + } + + /** + * 批量删除上架作业物料详情 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + TaskShelfMaterialDetail taskShelfMaterialDetail = new TaskShelfMaterialDetail(); + taskShelfMaterialDetail.setMaterialDetailId(id); + taskShelfMaterialDetail.setDelFlag(2); + list.add(taskShelfMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改上架作业物料详情 + */ + @Override + public TaskShelfMaterialDetailPO getInfo(Long materialDetailId) { + TaskShelfMaterialDetail taskShelfMaterialDetail = this.getById(materialDetailId); + TaskShelfMaterialDetailPO taskShelfMaterialDetailPO = new TaskShelfMaterialDetailPO(); + BeanUtils.copyProperties(taskShelfMaterialDetail,taskShelfMaterialDetailPO); + return taskShelfMaterialDetailPO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/po/TaskShelfMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/po/TaskShelfMaterialDetailPO.java new file mode 100644 index 000000000..91c9c3555 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/po/TaskShelfMaterialDetailPO.java @@ -0,0 +1,187 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 上架作业物料详情对象 task_shelf_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +@ApiModel(value = "上架作业物料详情对象", description = "上架作业物料详情响应对象") +public class TaskShelfMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细子集") + private List children; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/todo/TaskShelfMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/todo/TaskShelfMaterialDetailDO.java new file mode 100644 index 000000000..e5c2660a4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/repository/todo/TaskShelfMaterialDetailDO.java @@ -0,0 +1,198 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 上架作业物料详情对象 task_shelf_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskShelfMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/service/TaskShelfMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/service/TaskShelfMaterialDetailDomainService.java new file mode 100644 index 000000000..462265fa0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/taskShelfMaterialDetail/service/TaskShelfMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.taskShelfMaterialDetail.service; + +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.facade.ITaskShelfMaterialDetailService; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 上架作业物料详情 + * + * @author gen + * @date 2024-06-19 + */ +@Service +@Slf4j +public class TaskShelfMaterialDetailDomainService { + + @Autowired + private ITaskShelfMaterialDetailService taskShelfMaterialDetailService; + + + /** + * 分页查询上架作业物料详情列表 + */ + public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + return taskShelfMaterialDetailService.queryList(taskShelfMaterialDetailDO); + } + + + /** + * 新增上架作业物料详情 + */ + public Boolean insert(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + + return taskShelfMaterialDetailService.insert(taskShelfMaterialDetailDO); + } + + /** + * 修改上架作业物料详情 + */ + public Boolean update(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) { + return taskShelfMaterialDetailService.update(taskShelfMaterialDetailDO); + } + + /** + * 批量删除上架作业物料详情 + */ + public Boolean delete(Long[] materialDetailIds) { + return taskShelfMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取上架作业物料详情详细信息 + */ + public TaskShelfMaterialDetailPO getInfo(Long materialDetailId) + { + return taskShelfMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/entity/UserCommonSettings.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/entity/UserCommonSettings.java new file mode 100644 index 000000000..ed6245911 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/entity/UserCommonSettings.java @@ -0,0 +1,57 @@ +package com.mhd.wms.domain.userCommonSettings.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 用户常用设置关联对象 user_common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class UserCommonSettings extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户常用设置id") + @TableId(type = IdType.AUTO) + private Long userCommonSettingsId; + + @ApiModelProperty("用户id") + @Excel(name = "用户id") + private Long userId; + + @ApiModelProperty("常用设置id") + @Excel(name = "常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("是否设置为常用 0-否 1-是") + @Excel(name = "是否设置为常用 0-否 1-是") + private Integer isSettings; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/facade/IUserCommonSettingsService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/facade/IUserCommonSettingsService.java new file mode 100644 index 000000000..4eba89b1e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/facade/IUserCommonSettingsService.java @@ -0,0 +1,47 @@ +package com.mhd.wms.domain.userCommonSettings.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.userCommonSettings.entity.UserCommonSettings; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; + +import java.util.List; + +/** + * 用户常用设置关联Service接口 + * + * @author gen + * @date 2024-07-29 + */ +public interface IUserCommonSettingsService extends IService +{ + /** + * 分页查询用户常用设置关联列表 + */ + public List queryList(UserCommonSettingsDO userCommonSettingsDO); + + /** + * 新增用户常用设置关联 + */ + public Boolean insert(UserCommonSettingsDO userCommonSettingsDO); + + /** + * 修改用户常用设置关联 + */ + public Boolean update(UserCommonSettingsDO userCommonSettingsDO); + + /** + * 批量删除用户常用设置关联 + */ + public Boolean delete(Long[] userCommonSettingsIds); + /** + * 根据用户id批量删除用户常用设置关联 + */ + public Boolean deleteByUserId(Long userId); + + + /** + * 查询用户常用设置关联 + */ + public UserCommonSettingsPO getInfo(Long userCommonSettingsId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/mapper/UserCommonSettingsMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/mapper/UserCommonSettingsMapper.java new file mode 100644 index 000000000..a8e38f38d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/mapper/UserCommonSettingsMapper.java @@ -0,0 +1,24 @@ +package com.mhd.wms.domain.userCommonSettings.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.userCommonSettings.entity.UserCommonSettings; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; + +import java.util.List; + +/** + * 用户常用设置关联Mapper接口 + * + * @author gen + * @date 2024-07-29 + */ +public interface UserCommonSettingsMapper extends BaseMapper +{ + /** + * 查询用户常用设置关联列表 + */ + public List queryList(UserCommonSettingsDO userCommonSettingsDO); + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/persistence/UserCommonSettingsImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/persistence/UserCommonSettingsImpl.java new file mode 100644 index 000000000..033f1828e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/persistence/UserCommonSettingsImpl.java @@ -0,0 +1,98 @@ +package com.mhd.wms.domain.userCommonSettings.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.userCommonSettings.entity.UserCommonSettings; +import com.mhd.wms.domain.userCommonSettings.repository.facade.IUserCommonSettingsService; +import com.mhd.wms.domain.userCommonSettings.repository.mapper.UserCommonSettingsMapper; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 用户常用设置关联Service业务层处理 + * + * @author gen + * @date 2024-07-29 + */ +@Service +public class UserCommonSettingsImpl extends ServiceImpl implements IUserCommonSettingsService { + @Autowired + private UserCommonSettingsMapper userCommonSettingsMapper; + + /** + * 查询用户常用设置关联列表 + */ + @Override + public List queryList(UserCommonSettingsDO userCommonSettingsDO) + { + return userCommonSettingsMapper.queryList(userCommonSettingsDO); + } + + /** + * 新增用户常用设置关联 + */ + @Override + public Boolean insert(UserCommonSettingsDO userCommonSettingsDO) { + UserCommonSettings userCommonSettings = new UserCommonSettings(); + BeanUtils.copyProperties(userCommonSettingsDO,userCommonSettings); + return this.save(userCommonSettings); + } + + /** + * 修改用户常用设置关联 + */ + @Override + public Boolean update(UserCommonSettingsDO userCommonSettingsDO) { + UserCommonSettings userCommonSettings = new UserCommonSettings(); + BeanUtils.copyProperties(userCommonSettingsDO,userCommonSettings); + return this.updateById(userCommonSettings); + } + + /** + * 批量删除用户常用设置关联 + */ + @Override + public Boolean delete(Long[] userCommonSettingsIds ) { + List list = new ArrayList<>(); + for (Long id : userCommonSettingsIds) { + UserCommonSettings userCommonSettings = new UserCommonSettings(); + userCommonSettings.setUserCommonSettingsId(id); + userCommonSettings.setDelFlag(2); + list.add(userCommonSettings); + } + return this.updateBatchById(list); + } + /** + * 批量删除用户常用设置关联 + */ + @Override + public Boolean deleteByUserId(Long userId) { + UserCommonSettingsDO userCommonSettingsDO=new UserCommonSettingsDO(); + userCommonSettingsDO.setUserId(userId); + List userCommonSettingsPOList= userCommonSettingsMapper.queryList(userCommonSettingsDO); + List list = new ArrayList<>(); + for (UserCommonSettingsPO userCommonSettingsPO:userCommonSettingsPOList){ + UserCommonSettings userCommonSettings = new UserCommonSettings(); + userCommonSettings.setUserCommonSettingsId(userCommonSettingsPO.getUserCommonSettingsId()); + userCommonSettings.setDelFlag(2); + list.add(userCommonSettings); + } + return this.updateBatchById(list); + } + + /** + * 修改用户常用设置关联 + */ + @Override + public UserCommonSettingsPO getInfo(Long userCommonSettingsId) { + UserCommonSettings userCommonSettings = this.getById(userCommonSettingsId); + UserCommonSettingsPO userCommonSettingsPO = new UserCommonSettingsPO(); + BeanUtils.copyProperties(userCommonSettings,userCommonSettingsPO); + return userCommonSettingsPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/po/UserCommonSettingsPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/po/UserCommonSettingsPO.java new file mode 100644 index 000000000..e79a3a9c8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/po/UserCommonSettingsPO.java @@ -0,0 +1,57 @@ +package com.mhd.wms.domain.userCommonSettings.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 用户常用设置关联对象 user_common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +@ApiModel(value = "用户常用设置关联对象", description = "用户常用设置关联响应对象") +public class UserCommonSettingsPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户常用设置id") + private Long userCommonSettingsId; + + @ApiModelProperty("用户id") + @Excel(name = "用户id") + private Long userId; + + @ApiModelProperty("常用设置id") + @Excel(name = "常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("是否设置为常用 0-否 1-是") + @Excel(name = "是否设置为常用 0-否 1-是") + private Integer isSettings; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/todo/UserCommonSettingsDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/todo/UserCommonSettingsDO.java new file mode 100644 index 000000000..ca7a2c86d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/repository/todo/UserCommonSettingsDO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.domain.userCommonSettings.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.userCommonSettings.UserCommonSettingsAddDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 用户常用设置关联对象 user_common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class UserCommonSettingsDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户常用设置id") + private Long userCommonSettingsId; + + @ApiModelProperty("用户id") + @Excel(name = "用户id") + private Long userId; + + @ApiModelProperty("常用设置id") + @Excel(name = "常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + + @ApiModelProperty(name = "常用设置id集合") + private List userCommonSettingsAddDTOList; + + @ApiModelProperty("是否设置为常用 0-否 1-是") + @Excel(name = "是否设置为常用 0-否 1-是") + private Integer isSettings; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/service/UserCommonSettingsDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/service/UserCommonSettingsDomainService.java new file mode 100644 index 000000000..e49451416 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/userCommonSettings/service/UserCommonSettingsDomainService.java @@ -0,0 +1,71 @@ +package com.mhd.wms.domain.userCommonSettings.service; + +import com.mhd.wms.domain.userCommonSettings.repository.facade.IUserCommonSettingsService; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户常用设置关联 + * + * @author gen + * @date 2024-07-29 + */ +@Service +@Slf4j +public class UserCommonSettingsDomainService { + + @Autowired + private IUserCommonSettingsService userCommonSettingsService; + + + /** + * 分页查询用户常用设置关联列表 + */ + public List queryList(UserCommonSettingsDO userCommonSettingsDO) { + return userCommonSettingsService.queryList(userCommonSettingsDO); + } + + + /** + * 新增用户常用设置关联 + */ + public Boolean insert(UserCommonSettingsDO userCommonSettingsDO) { + + return userCommonSettingsService.insert(userCommonSettingsDO); + } + + /** + * 修改用户常用设置关联 + */ + public Boolean update(UserCommonSettingsDO userCommonSettingsDO) { + return userCommonSettingsService.update(userCommonSettingsDO); + } + + /** + * 批量删除用户常用设置关联 + */ + public Boolean delete(Long[] userCommonSettingsIds) { + return userCommonSettingsService.delete(userCommonSettingsIds); + } + /** + * 根据用户id批量删除用户常用设置关联 + */ + public Boolean deleteByUserId(Long userId) { + return userCommonSettingsService.deleteByUserId(userId); + } + + /** + * 获取用户常用设置关联详细信息 + */ + public UserCommonSettingsPO getInfo(Long userCommonSettingsId) + { + return userCommonSettingsService.getInfo(userCommonSettingsId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/entity/WaveMaterialDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/entity/WaveMaterialDetail.java new file mode 100644 index 000000000..b43fe8bf7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/entity/WaveMaterialDetail.java @@ -0,0 +1,185 @@ +package com.mhd.wms.domain.waveMaterialDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +/** + * 出库单物料明细对象 wave_material_detail + * + * @author gen + * @date 2024-06-27 + */ + +@Data +public class WaveMaterialDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + @TableId(type = IdType.AUTO) + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单数量") + private BigDecimal alreadyGenPickingQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/facade/IWaveMaterialDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/facade/IWaveMaterialDetailService.java new file mode 100644 index 000000000..9e0ca221d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/facade/IWaveMaterialDetailService.java @@ -0,0 +1,64 @@ +package com.mhd.wms.domain.waveMaterialDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.waveMaterialDetail.entity.WaveMaterialDetail; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; + +import java.util.List; + +/** + * 出库单物料明细Service接口 + * + * @author gen + * @date 2024-06-27 + */ +public interface IWaveMaterialDetailService extends IService +{ + /** + * 分页查询出库单物料明细列表 + */ + public List queryList(WaveMaterialDetailDO waveMaterialDetailDO); + + /** + * 新增出库单物料明细 + */ + public Boolean insert(WaveMaterialDetailDO waveMaterialDetailDO); + + public Boolean batchInsert(String outOrderNumber, List waveMaterialDetailDOList); + + /** + * 修改出库单物料明细 + */ + public Boolean update(WaveMaterialDetailDO waveMaterialDetailDO); + + /** + * 批量删除出库单物料明细 + */ + public Boolean delete(Long[] materialDetailIds); + + + /** + * 查询出库单物料明细 + */ + public WaveMaterialDetailPO getInfo(Long materialDetailId); + + /** + * @description 分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param waveMaterialDetailDOList + * @return Boolean + */ + public Boolean batchAssignUpdate(String outOrderNumber, List waveMaterialDetailDOList); + + /** + * @description 取消分配批量修改物流明细 + * @author ZhouGY + * @date 2024/6/5 8:48 + * @param outOrderNumber + * @param waveMaterialDetailDOList + * @return Boolean + */ + public Boolean batchCancelAssignUpdate(String outOrderNumber, List waveMaterialDetailDOList); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/mapper/WaveMaterialDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/mapper/WaveMaterialDetailMapper.java new file mode 100644 index 000000000..d60f40f50 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/mapper/WaveMaterialDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.waveMaterialDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.waveMaterialDetail.entity.WaveMaterialDetail; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; + +import java.util.List; + +/** + * 出库单物料明细Mapper接口 + * + * @author gen + * @date 2024-06-27 + */ +public interface WaveMaterialDetailMapper extends BaseMapper +{ + /** + * 查询出库单物料明细列表 + */ + public List queryList(WaveMaterialDetailDO waveMaterialDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/persistence/WaveMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/persistence/WaveMaterialDetailImpl.java new file mode 100644 index 000000000..98b6342c7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/persistence/WaveMaterialDetailImpl.java @@ -0,0 +1,332 @@ +package com.mhd.wms.domain.waveMaterialDetail.repository.persistence; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.common.core.constant.SnowFlakeConstants; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.uuid.IdGenerator; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.StorageLocationFeignPO; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService; +import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService; +import com.mhd.wms.domain.waveMaterialDetail.entity.WaveMaterialDetail; +import com.mhd.wms.domain.waveMaterialDetail.repository.facade.IWaveMaterialDetailService; +import com.mhd.wms.domain.waveMaterialDetail.repository.mapper.WaveMaterialDetailMapper; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 出库单物料明细Service业务层处理 + * + * @author gen + * @date 2024-06-27 + */ +@Service +public class WaveMaterialDetailImpl extends ServiceImpl implements IWaveMaterialDetailService{ + @Autowired + private WaveMaterialDetailMapper waveMaterialDetailMapper; + @Autowired + private IMaterialBaseInfoService materialBaseInfoService; + @Autowired + private IMaterialWarehouseControlService materialWarehouseControlService; + @Autowired + private SystemServiceFeign systemServiceFeign; + @Autowired + private IdGenerator idGenerator; + + /** + * 查询出库单物料明细列表 + */ + @Override + public List queryList(WaveMaterialDetailDO waveMaterialDetailDO) + { + return waveMaterialDetailMapper.queryList(waveMaterialDetailDO); + } + + /** + * 新增出库单物料明细 + */ + @Override + public Boolean insert(WaveMaterialDetailDO waveMaterialDetailDO) { + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + BeanUtils.copyProperties(waveMaterialDetailDO,waveMaterialDetail); + return this.save(waveMaterialDetail); + } + + /** + * @description 批量新增物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param waveOrderNumber + * @param waveMaterialDetailDOList + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean batchInsert(String waveOrderNumber,List waveMaterialDetailDOList) { + if (CollectionUtils.isEmpty(waveMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + // 批量新增或修改 + List waveMaterialDetailList = new ArrayList<>(); + for (WaveMaterialDetailDO waveMaterialDetailDO : waveMaterialDetailDOList){ + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + BeanUtils.copyProperties(waveMaterialDetailDO, waveMaterialDetail); + waveMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + waveMaterialDetail.setWaveOrderNumber(waveOrderNumber); + waveMaterialDetail.setTopOrganizationId(loginUser.getUserPo().getOrganizationId()); + waveMaterialDetail.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + waveMaterialDetail.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + waveMaterialDetail.setCreateBy(loginUser.getUserid()); + waveMaterialDetail.setCreateByName(loginUser.getUsername()); + waveMaterialDetail.setCreateTime(new Date()); + waveMaterialDetailList.add(waveMaterialDetail); + } + return saveBatch(waveMaterialDetailList); + } + + /** + * 修改出库单物料明细 + */ + @Override + public Boolean update(WaveMaterialDetailDO waveMaterialDetailDO) { + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + BeanUtils.copyProperties(waveMaterialDetailDO,waveMaterialDetail); + return this.updateById(waveMaterialDetail); + } + + /** + * 批量删除出库单物料明细 + */ + @Override + public Boolean delete(Long[] materialDetailIds ) { + List list = new ArrayList<>(); + for (Long id : materialDetailIds) { + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + waveMaterialDetail.setMaterialDetailId(id); + waveMaterialDetail.setDelFlag(2); + list.add(waveMaterialDetail); + } + return this.updateBatchById(list); + } + + /** + * 修改出库单物料明细 + */ + @Override + public WaveMaterialDetailPO getInfo(Long materialDetailId) { + WaveMaterialDetail waveMaterialDetail = this.getById(materialDetailId); + WaveMaterialDetailPO waveMaterialDetailPO = new WaveMaterialDetailPO(); + BeanUtils.copyProperties(waveMaterialDetail,waveMaterialDetailPO); + return waveMaterialDetailPO; + } + + /** + * @description 分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param waveMaterialDetailDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchAssignUpdate(String waveOrderNumber, List waveMaterialDetailDOList) { + if (CollectionUtils.isEmpty(waveMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + List waveMaterialDetailDbList = waveMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(WaveMaterialDetail::getWaveOrderNumber, waveOrderNumber) + .eq(WaveMaterialDetail::getDelFlag, 1)); + Map materialDetailMap = waveMaterialDetailDbList.stream().collect(Collectors.toMap(WaveMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List waveMaterialDetailList = new ArrayList<>(); + //需要修改的物流明细 + List materialDetailIdsByUpdate = new ArrayList<>(); + for (WaveMaterialDetailDO waveMaterialDetailDO : waveMaterialDetailDOList){ + //设置目标库位信息 + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + setStorageLocationInfo(waveMaterialDetailDO, waveMaterialDetail); + waveMaterialDetail.setMaterialDetailId(waveMaterialDetailDO.getMaterialDetailId()); + waveMaterialDetail.setUpdateBy(loginUser.getUserid()); + waveMaterialDetail.setUpdateByName(loginUser.getUsername()); + waveMaterialDetail.setUpdateTime(new Date()); + //判断是否存在子项 + BigDecimal allocationQuantity = waveMaterialDetailDO.getActualQuantity(); + List waveMaterialDetailDOChildList = waveMaterialDetailDO.getChildren(); + if (!CollectionUtils.isEmpty(waveMaterialDetailDOChildList)){ + for (WaveMaterialDetailDO waveMaterialDetailDOChild : waveMaterialDetailDOChildList){ + //判断是否需要修改 + WaveMaterialDetail waveMaterialDetailChild = new WaveMaterialDetail(); + BeanUtils.copyProperties(waveMaterialDetailDO, waveMaterialDetailChild); + //设置上架库位 + setStorageLocationInfo(waveMaterialDetailDOChild, waveMaterialDetail); + BeanUtils.copyProperties(waveMaterialDetail, waveMaterialDetailChild, IgnoreNullUtil.getNullPropertyNames(waveMaterialDetail)); + WaveMaterialDetail waveMaterialDetailDb = materialDetailMap.get(waveMaterialDetailDO.getMaterialDetailId()); + if (waveMaterialDetailDb == null){ + waveMaterialDetailChild.setMaterialDetailId(null); + waveMaterialDetailChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId)); + waveMaterialDetailChild.setLevel(2); + waveMaterialDetailChild.setParentUniqueId(waveMaterialDetailDO.getUniqueId()); + waveMaterialDetailChild.setCreateBy(loginUser.getUserid()); + waveMaterialDetailChild.setCreateByName(loginUser.getUsername()); + waveMaterialDetailChild.setCreateTime(new Date()); + }else { + waveMaterialDetailChild.setUpdateBy(loginUser.getUserid()); + waveMaterialDetailChild.setUpdateByName(loginUser.getUsername()); + waveMaterialDetailChild.setUpdateTime(new Date()); + materialDetailIdsByUpdate.add(waveMaterialDetailDOChild.getMaterialDetailId()); + } + waveMaterialDetailList.add(waveMaterialDetailChild); + allocationQuantity = allocationQuantity.add(waveMaterialDetailDOChild.getActualQuantity()); + } + } + materialDetailIdsByUpdate.add(waveMaterialDetailDO.getMaterialDetailId()); + waveMaterialDetail.setAllocationQuantity(allocationQuantity); + waveMaterialDetailList.add(waveMaterialDetail); + } + //需修改的物料明细id集合不为空 + if (!CollectionUtils.isEmpty(materialDetailIdsByUpdate)){ + List materialDetailIdsByDb = waveMaterialDetailDbList.stream().map(WaveMaterialDetail::getMaterialDetailId).collect(Collectors.toList()); + //过滤需要修改的id集合 + materialDetailIdsByDb.removeAll(materialDetailIdsByUpdate); + //判断是否存在需要删除的物流明细 标记删除 + if (!CollectionUtils.isEmpty(materialDetailIdsByDb)){ + update(new UpdateWrapper().lambda() + .set(WaveMaterialDetail::getDelFlag, 2) + .set(WaveMaterialDetail::getUpdateBy, loginUser.getUserid()) + .set(WaveMaterialDetail::getUpdateByName, loginUser.getUsername()) + .set(WaveMaterialDetail::getUpdateTime, new Date()) + .in(WaveMaterialDetail::getMaterialDetailId, materialDetailIdsByDb)); + } + } + //保存物料明细信息 + return saveOrUpdateBatch(waveMaterialDetailList); + } + + /** + * @description 取消分配批量修改物流明细 + * @author ZhouGY + * @date 2024/5/22 9:27 + * @param waveMaterialDetailDOList + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean batchCancelAssignUpdate(String waveOrderNumber, List waveMaterialDetailDOList) { + if (CollectionUtils.isEmpty(waveMaterialDetailDOList)) { + throw new ServiceException("物料明细不能为空"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + List waveMaterialDetailDbList = waveMaterialDetailMapper.selectList(new QueryWrapper().lambda() + .eq(WaveMaterialDetail::getWaveOrderNumber, waveOrderNumber) + .eq(WaveMaterialDetail::getDelFlag, 1)); + Map waveMaterialDetailMap = waveMaterialDetailDbList.stream().collect(Collectors.toMap(WaveMaterialDetail::getMaterialDetailId, Function.identity())); + //批量新增或修改物料信息 + List waveMaterialDetailList = new ArrayList<>(); + //需要修改的物流明细 + List materialDetailIdsByUpdate = new ArrayList<>(); + for (WaveMaterialDetailDO waveMaterialDetailDO : waveMaterialDetailDOList){ + WaveMaterialDetail waveMaterialDetailDb = waveMaterialDetailMap.get(waveMaterialDetailDO.getMaterialDetailId()); + if (waveMaterialDetailDb == null){ + throw new ServiceException("物料信息不存在"); + } + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + //设置目标库位信息 + setStorageLocationInfo(waveMaterialDetailDO, waveMaterialDetail); + waveMaterialDetail.setMaterialDetailId(waveMaterialDetailDO.getMaterialDetailId()); + waveMaterialDetail.setUpdateBy(loginUser.getUserid()); + waveMaterialDetail.setUpdateByName(loginUser.getUsername()); + waveMaterialDetail.setUpdateTime(new Date()); + //判断是否存在子项 + BigDecimal allocationQuantity = waveMaterialDetailDO.getActualQuantity(); + List waveMaterialDetailDOChildList = waveMaterialDetailDO.getChildren(); + List waveMaterialDetailListChild = new ArrayList<>(); + if (!CollectionUtils.isEmpty(waveMaterialDetailDOChildList)){ + for (WaveMaterialDetailDO waveMaterialDetailDOChild : waveMaterialDetailDOChildList){ + WaveMaterialDetail waveMaterialDetailDbChild = waveMaterialDetailMap.get(waveMaterialDetailDO.getMaterialDetailId()); + if (waveMaterialDetailDbChild == null){ + throw new ServiceException("物料信息不存在"); + } + WaveMaterialDetail waveMaterialDetailChild = new WaveMaterialDetail(); + waveMaterialDetailChild.setMaterialDetailId(waveMaterialDetailDO.getMaterialDetailId()); + waveMaterialDetailChild.setAllocationQuantity(waveMaterialDetailDbChild.getAllocationQuantity().subtract(waveMaterialDetailDOChild.getActualQuantity())); + waveMaterialDetailChild.setUpdateBy(loginUser.getUserid()); + waveMaterialDetailChild.setUpdateByName(loginUser.getUsername()); + waveMaterialDetailChild.setUpdateTime(new Date()); + waveMaterialDetailListChild.add(waveMaterialDetailChild); + materialDetailIdsByUpdate.add(waveMaterialDetailDOChild.getMaterialDetailId()); + allocationQuantity = allocationQuantity.add(waveMaterialDetailDO.getActualQuantity()); + } + } + waveMaterialDetail.setAllocationQuantity(waveMaterialDetailDb.getAllocationQuantity().subtract(allocationQuantity)); + waveMaterialDetailList.add(waveMaterialDetail); + if (!CollectionUtils.isEmpty(waveMaterialDetailListChild)){ + waveMaterialDetailList.addAll(waveMaterialDetailListChild); + } + materialDetailIdsByUpdate.add(waveMaterialDetailDO.getMaterialDetailId()); + } + //需修改的物料明细id集合不为空 + if (!CollectionUtils.isEmpty(materialDetailIdsByUpdate)){ + List materialDetailIdsByDb = waveMaterialDetailDbList.stream().map(WaveMaterialDetail::getMaterialDetailId).collect(Collectors.toList()); + //过滤需要修改的id集合 + materialDetailIdsByDb.removeAll(materialDetailIdsByUpdate); + //判断是否存在需要删除的物流明细 标记删除 + if (!CollectionUtils.isEmpty(materialDetailIdsByDb)){ + update(new UpdateWrapper().lambda() + .set(WaveMaterialDetail::getDelFlag, 2) + .set(WaveMaterialDetail::getUpdateBy, loginUser.getUserid()) + .set(WaveMaterialDetail::getUpdateByName, loginUser.getUsername()) + .set(WaveMaterialDetail::getUpdateTime, new Date()) + .in(WaveMaterialDetail::getMaterialDetailId, materialDetailIdsByDb)); + } + } + //保存物料明细信息 + return updateBatchById(waveMaterialDetailList); + } + + + /** + * @description 设置上架库位信息 + * @author ZhouGY + * @date 2024/5/23 14:03 + * @param waveMaterialDetailDO + */ + private void setStorageLocationInfo(WaveMaterialDetailDO waveMaterialDetailDO, WaveMaterialDetail waveMaterialDetail){ + AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(waveMaterialDetailDO.getStorageLocationId()); + if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){ + throw new ServiceException("获取上架库位信息失败"); + } + StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class); + waveMaterialDetail.setWarehouseId(storageLocationFeignPO.getWarehouseId()); + waveMaterialDetail.setWarehouseCode(storageLocationFeignPO.getWarehouseCode()); + waveMaterialDetail.setWarehouseName(storageLocationFeignPO.getWarehouseName()); + waveMaterialDetail.setStorageSectionId(storageLocationFeignPO.getStorageSectionId()); + waveMaterialDetail.setStorageCode(storageLocationFeignPO.getStorageCode()); + waveMaterialDetail.setStorageName(storageLocationFeignPO.getStorageName()); + waveMaterialDetail.setStorageLocationId(storageLocationFeignPO.getStorageLocationId()); + waveMaterialDetail.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode()); + waveMaterialDetail.setStorageLocationName(storageLocationFeignPO.getStorageLocationName()); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/po/WaveMaterialDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/po/WaveMaterialDetailPO.java new file mode 100644 index 000000000..b62c45dad --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/po/WaveMaterialDetailPO.java @@ -0,0 +1,190 @@ +package com.mhd.wms.domain.waveMaterialDetail.repository.po; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 出库单物料明细对象 wave_material_detail + * + * @author gen + * @date 2024-06-27 + */ + +@Data +@ApiModel(value = "出库单物料明细对象", description = "出库单物料明细响应对象") +public class WaveMaterialDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单数量") + private BigDecimal alreadyGenPickingQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细子集") + private List children; + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/todo/WaveMaterialDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/todo/WaveMaterialDetailDO.java new file mode 100644 index 000000000..d8cded50c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/repository/todo/WaveMaterialDetailDO.java @@ -0,0 +1,197 @@ +package com.mhd.wms.domain.waveMaterialDetail.repository.todo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 出库单物料明细对象 wave_material_detail + * + * @author gen + * @date 2024-06-27 + */ + +@Data +public class WaveMaterialDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单数量") + private BigDecimal alreadyGenPickingQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("波次单号集合") + private List waveOrderNumberList; + + @ApiModelProperty("作业数量(例如:分配数量)") + @Excel(name = "作业数量(例如:分配数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("物料明细子集") + private List children; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/service/WaveMaterialDetailDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/service/WaveMaterialDetailDomainService.java new file mode 100644 index 000000000..455ab7084 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveMaterialDetail/service/WaveMaterialDetailDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.waveMaterialDetail.service; + +import com.mhd.wms.domain.waveMaterialDetail.repository.facade.IWaveMaterialDetailService; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 出库单物料明细 + * + * @author gen + * @date 2024-06-27 + */ +@Service +@Slf4j +public class WaveMaterialDetailDomainService { + + @Autowired + private IWaveMaterialDetailService waveMaterialDetailService; + + + /** + * 分页查询出库单物料明细列表 + */ + public List queryList(WaveMaterialDetailDO waveMaterialDetailDO) { + return waveMaterialDetailService.queryList(waveMaterialDetailDO); + } + + + /** + * 新增出库单物料明细 + */ + public Boolean insert(WaveMaterialDetailDO waveMaterialDetailDO) { + + return waveMaterialDetailService.insert(waveMaterialDetailDO); + } + + /** + * 修改出库单物料明细 + */ + public Boolean update(WaveMaterialDetailDO waveMaterialDetailDO) { + return waveMaterialDetailService.update(waveMaterialDetailDO); + } + + /** + * 批量删除出库单物料明细 + */ + public Boolean delete(Long[] materialDetailIds) { + return waveMaterialDetailService.delete(materialDetailIds); + } + + /** + * 获取出库单物料明细详细信息 + */ + public WaveMaterialDetailPO getInfo(Long materialDetailId) + { + return waveMaterialDetailService.getInfo(materialDetailId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/abstracts/AbstractWaveOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/abstracts/AbstractWaveOrderService.java new file mode 100644 index 000000000..18cf428a8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/abstracts/AbstractWaveOrderService.java @@ -0,0 +1,56 @@ +package com.mhd.wms.domain.waveOrder.abstracts; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderTypeService; +import org.springframework.util.CollectionUtils; + +/** + * @author ZhouGY + * @title AbstractWaveOrderService + * @description: TODO + * @date 2024/6/4 10:49 + **/ +public abstract class AbstractWaveOrderService implements IWaveOrderTypeService { + + /** + * @description 生成波次单 + * @author ZhouGY + * @date 2024/6/4 10:43 + * @param stockOutOrderDO + * @return Boolean + */ + @Override + public Boolean saveWaveOrder(StockOutOrderDO stockOutOrderDO){ + //检查生成波次单所需参数 + validateRequest(stockOutOrderDO); + //核心业务逻辑 + return handleWaveOrderDO(stockOutOrderDO); + } + + /** + * @description 核心业务逻辑 + * @author ZhouGY + * @date 2024/6/4 11:02 + * @param stockOutOrderDO + * @return Boolean + */ + public abstract Boolean handleWaveOrderDO(StockOutOrderDO stockOutOrderDO); + + /** + * @description 参数检查 + * @author ZhouGY + * @date 2024/6/4 10:54 + * @param stockOutOrderDO + */ + private void validateRequest(StockOutOrderDO stockOutOrderDO){ + if (StringUtils.isBlank(stockOutOrderDO.getWaveOrderTypeCode())){ + throw new ServiceException("波次类型不能为空"); + } + + if (CollectionUtils.isEmpty(stockOutOrderDO.getOutOrderIds())){ + throw new ServiceException("出库单id不能为空"); + } + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/entity/WaveOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/entity/WaveOrder.java new file mode 100644 index 000000000..4a797f94f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/entity/WaveOrder.java @@ -0,0 +1,167 @@ +package com.mhd.wms.domain.waveOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + + +/** + * 波次单对象 wave_order + * + * @author gen + * @date 2024-06-04 + */ + +@Data +public class WaveOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + @TableId(type = IdType.AUTO) + private Long waveOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + @Excel(name = "出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + private Integer status; + + @ApiModelProperty("波次类型编码") + @Excel(name = "波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("波次类型名称") + @Excel(name = "波次类型名称") + private String waveOrderTypeName; + + @ApiModelProperty("出库单数量") + @Excel(name = "出库单数量") + private Integer outOrderQuantity; + + @ApiModelProperty("物料种类数量") + @Excel(name = "物料种类数量") + private Integer materialCategoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outQuantity; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("是否取消波次: 1-是 2-否") + @Excel(name = "是否取消波次: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消波次备注") + @Excel(name = "取消波次备注") + private String cancelRemark; + + @ApiModelProperty("取消波次人") + @Excel(name = "取消波次人") + private Long cancelBy; + + @ApiModelProperty("取消波次人姓名") + @Excel(name = "取消波次人姓名") + private String cancelByName; + + @ApiModelProperty("取消波次时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消波次时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/factorys/WaveOrderServiceFactory.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/factorys/WaveOrderServiceFactory.java new file mode 100644 index 000000000..83080ec62 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/factorys/WaveOrderServiceFactory.java @@ -0,0 +1,32 @@ +package com.mhd.wms.domain.waveOrder.factorys; + +import com.aliyun.oss.common.utils.CaseInsensitiveMap; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + * @author ZhouGY + * @title WaveOrderFactory + * @description: 生成波次单规则类型工厂 + * @date 2024/6/4 11:12 + **/ +@Service +public class WaveOrderServiceFactory { + + @Autowired + private Map waveOrderTypeServiceMap = new CaseInsensitiveMap<>(); + + /** + * @description 获取对应的服务 + * @author ZhouGY + * @date 2024/6/4 11:14 + * @param waveOrderTypeCode + * @return IWaveOrderTypeService + */ + public IWaveOrderTypeService getWaveOrderTypeService(String waveOrderTypeCode) { + return waveOrderTypeServiceMap.get(waveOrderTypeCode + "Service"); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderService.java new file mode 100644 index 000000000..57a1a0e48 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.waveOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; + +import java.util.List; + +/** + * 波次单Service接口 + * + * @author gen + * @date 2024-06-04 + */ +public interface IWaveOrderService extends IService +{ + /** + * 分页查询波次单列表 + */ + public List queryList(WaveOrderDO waveOrderDO); + + /** + * 新增波次单 + */ + public Boolean insert(WaveOrderDO waveOrderDO); + + /** + * 修改波次单 + */ + public Boolean update(WaveOrderDO waveOrderDO); + + /** + * 批量删除波次单 + */ + public Boolean delete(Long[] waveOrderIds); + + + /** + * 查询波次单 + */ + public WaveOrderPO getInfo(Long waveOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderTypeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderTypeService.java new file mode 100644 index 000000000..f007cc484 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/facade/IWaveOrderTypeService.java @@ -0,0 +1,21 @@ +package com.mhd.wms.domain.waveOrder.repository.facade; + +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; + +/** + * @author ZhouGY + * @title IWaveOrderType + * @description: 生成波次单 + * @date 2024/6/4 10:42 + **/ +public interface IWaveOrderTypeService { + + /** + * @description 生成波次单 + * @author ZhouGY + * @date 2024/6/4 10:43 + * @param stockOutOrderDO + * @return Boolean + */ + public Boolean saveWaveOrder(StockOutOrderDO stockOutOrderDO); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/mapper/WaveOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/mapper/WaveOrderMapper.java new file mode 100644 index 000000000..1f0c9db58 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/mapper/WaveOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.waveOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; + +import java.util.List; + +/** + * 波次单Mapper接口 + * + * @author gen + * @date 2024-06-04 + */ +public interface WaveOrderMapper extends BaseMapper +{ + /** + * 查询波次单列表 + */ + public List queryList(WaveOrderDO waveOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/persistence/WaveOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/persistence/WaveOrderImpl.java new file mode 100644 index 000000000..3b98b9616 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/persistence/WaveOrderImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.waveOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderService; +import com.mhd.wms.domain.waveOrder.repository.mapper.WaveOrderMapper; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 波次单Service业务层处理 + * + * @author gen + * @date 2024-06-04 + */ +@Service +public class WaveOrderImpl extends ServiceImpl implements IWaveOrderService { + @Autowired + private WaveOrderMapper waveOrderMapper; + + /** + * 查询波次单列表 + */ + @Override + public List queryList(WaveOrderDO waveOrderDO) + { + return waveOrderMapper.queryList(waveOrderDO); + } + + /** + * 新增波次单 + */ + @Override + public Boolean insert(WaveOrderDO waveOrderDO) { + WaveOrder waveOrder = new WaveOrder(); + BeanUtils.copyProperties(waveOrderDO,waveOrder); + return this.save(waveOrder); + } + + /** + * 修改波次单 + */ + @Override + public Boolean update(WaveOrderDO waveOrderDO) { + WaveOrder waveOrder = new WaveOrder(); + BeanUtils.copyProperties(waveOrderDO,waveOrder); + return this.updateById(waveOrder); + } + + /** + * 批量删除波次单 + */ + @Override + public Boolean delete(Long[] waveOrderIds ) { + List list = new ArrayList<>(); + for (Long id : waveOrderIds) { + WaveOrder waveOrder = new WaveOrder(); + waveOrder.setWaveOrderId(id); + waveOrder.setDelFlag(2); + list.add(waveOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改波次单 + */ + @Override + public WaveOrderPO getInfo(Long waveOrderId) { + WaveOrder waveOrder = this.getById(waveOrderId); + WaveOrderPO waveOrderPO = new WaveOrderPO(); + BeanUtils.copyProperties(waveOrder,waveOrderPO); + return waveOrderPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/po/WaveOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/po/WaveOrderPO.java new file mode 100644 index 000000000..4b5afc871 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/po/WaveOrderPO.java @@ -0,0 +1,170 @@ +package com.mhd.wms.domain.waveOrder.repository.po; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 波次单对象 wave_order + * + * @author gen + * @date 2024-06-04 + */ + +@Data +@ApiModel(value = "波次单对象", description = "波次单响应对象") +public class WaveOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + private Long waveOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + @Excel(name = "出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + private Integer status; + + @ApiModelProperty("波次类型编码") + @Excel(name = "波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("波次类型名称") + @Excel(name = "波次类型名称") + private String waveOrderTypeName; + + @ApiModelProperty("出库单数量") + @Excel(name = "出库单数量") + private Integer outOrderQuantity; + + @ApiModelProperty("物料种类数量") + @Excel(name = "物料种类数量") + private Integer materialCategoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outQuantity; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("是否取消波次: 1-是 2-否") + @Excel(name = "是否取消波次: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消波次备注") + @Excel(name = "取消波次备注") + private String cancelRemark; + + @ApiModelProperty("取消波次人") + @Excel(name = "取消波次人") + private Long cancelBy; + + @ApiModelProperty("取消波次人姓名") + @Excel(name = "取消波次人姓名") + private String cancelByName; + + @ApiModelProperty("取消波次时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消波次时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("物料明细") + private List materialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/AllocationSowingWallDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/AllocationSowingWallDO.java new file mode 100644 index 000000000..7d5b3ebbb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/AllocationSowingWallDO.java @@ -0,0 +1,35 @@ +package com.mhd.wms.domain.waveOrder.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author ZhouGY + * @title AllocationSowingWallDO + * @description: 播种分货 + * @date 2024/6/5 14:29 + **/ +@Data +public class AllocationSowingWallDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("物料编码/物料条码/序列号") + @Excel(name = "物料编码/物料条码/序列号") + private String materialNumber; + + @ApiModelProperty("是否序列号: 1-是 2-否") + @Excel(name = "是否序列号: 1-是 2-否") + private Integer serialNumberManage; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/WaveOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/WaveOrderDO.java new file mode 100644 index 000000000..ed7d8a0a6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/repository/todo/WaveOrderDO.java @@ -0,0 +1,176 @@ +package com.mhd.wms.domain.waveOrder.repository.todo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +/** + * 波次单对象 wave_order + * + * @author gen + * @date 2024-06-04 + */ + +@Data +public class WaveOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + private Long waveOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + @Excel(name = "出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + private Integer status; + + @ApiModelProperty("波次类型编码") + @Excel(name = "波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("波次类型名称") + @Excel(name = "波次类型名称") + private String waveOrderTypeName; + + @ApiModelProperty("出库单数量") + @Excel(name = "出库单数量") + private Integer outOrderQuantity; + + @ApiModelProperty("物料种类数量") + @Excel(name = "物料种类数量") + private Integer materialCategoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outQuantity; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("是否取消波次: 1-是 2-否") + @Excel(name = "是否取消波次: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消波次备注") + @Excel(name = "取消波次备注") + private String cancelRemark; + + @ApiModelProperty("取消波次人") + @Excel(name = "取消波次人") + private Long cancelBy; + + @ApiModelProperty("取消波次人姓名") + @Excel(name = "取消波次人姓名") + private String cancelByName; + + @ApiModelProperty("取消波次时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消波次时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("波次单id集合") + private List waveOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/DirectGenerationService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/DirectGenerationService.java new file mode 100644 index 000000000..95eb0e8cb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/DirectGenerationService.java @@ -0,0 +1,164 @@ +package com.mhd.wms.domain.waveOrder.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail; +import com.mhd.wms.domain.outMaterialDetail.repository.facade.IOutMaterialDetailService; +import com.mhd.wms.domain.sowingDistributionDetails.repository.facade.ISowingDistributionDetailsService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.domain.waveMaterialDetail.repository.facade.IWaveMaterialDetailService; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import com.mhd.wms.domain.waveOrder.abstracts.AbstractWaveOrderService; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderService; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author ZhouGY + * @title DirectGenerationImpl + * @description: TODO + * @date 2024/6/4 11:09 + **/ +@Service +public class DirectGenerationService extends AbstractWaveOrderService { + + @Autowired + private IWaveOrderService waveOrderService; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IOutMaterialDetailService outMaterialDetailService; + @Autowired + private IWaveMaterialDetailService waveMaterialDetailService; + @Autowired + private ISowingDistributionDetailsService sowingDistributionDetailsService; + @Autowired + private IWaveOutOrderService waveOutOrderService; + + /** + * @description 核心业务逻辑 直接生成 + * @author ZhouGY + * @date 2024/6/4 11:10 + * @param stockOutOrderDO + * @return Boolean + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean handleWaveOrderDO(StockOutOrderDO stockOutOrderDO) { + //出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 + stockOutOrderDO.setStatus(2); + List stockOutOrderPOList = stockOutOrderService.queryList(stockOutOrderDO); + if (CollectionUtils.isEmpty(stockOutOrderPOList)){ + throw new ServiceException("直接生成波次单,请选择已审核的出库单"); + } + //判断是不是同一货主、同一仓库下的订单 + boolean flag = stockOutOrderPOList.stream().map(p -> p.getWarehouseId() + "_" + p.getShipperId()).distinct().count() == 1; + if (!flag){ + throw new ServiceException("非同一个货主、同一仓库下的订单不能合并"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + List outOrderNumberList = stockOutOrderPOList.stream().map(StockOutOrderPO::getOutOrderNumber).collect(Collectors.toList()); + List outMaterialDetailList = outMaterialDetailService.list(new QueryWrapper().lambda() + .in(OutMaterialDetail::getOutOrderNumber, outOrderNumberList)); + Map> outMaterialDetailListMap = outMaterialDetailList.stream().collect(Collectors.groupingBy(OutMaterialDetail::getMaterialCode)); + int outOrderQuantity = stockOutOrderPOList.size(); + int materialCategoryQuantity = outMaterialDetailListMap.size(); + //统计总数量 + BigDecimal materialTotalQuantity = BigDecimal.ZERO; + //统计总重量 + BigDecimal weightTotalLimit = BigDecimal.ZERO; + //统计总体积 + BigDecimal volumeTotalLimit = BigDecimal.ZERO; + if (!CollectionUtils.isEmpty(outMaterialDetailList)){ + materialTotalQuantity = outMaterialDetailList.stream().map(OutMaterialDetail::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + weightTotalLimit = outMaterialDetailList.stream().map(OutMaterialDetail::getWeightLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + volumeTotalLimit = outMaterialDetailList.stream().map(OutMaterialDetail::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + } + StockOutOrderPO stockOutOrderPO = stockOutOrderPOList.get(0); + WaveOrderDO waveOrderDO = new WaveOrderDO(); + waveOrderDO.setOrganizationId(stockOutOrderPO.getOrganizationId()); + waveOrderDO.setOrganizationName(stockOutOrderPO.getOrganizationName()); + waveOrderDO.setTopOrganizationId(stockOutOrderPO.getTopOrganizationId()); + waveOrderDO.setStatus(1); + waveOrderDO.setWaveOrderTypeCode("directGeneration"); + waveOrderDO.setWaveOrderTypeName("直接生成"); + waveOrderDO.setOutOrderQuantity(outOrderQuantity); + waveOrderDO.setMaterialCategoryQuantity(materialCategoryQuantity); + waveOrderDO.setQuantity(materialTotalQuantity); + waveOrderDO.setWeightLimit(weightTotalLimit); + waveOrderDO.setVolumeLimit(volumeTotalLimit); + waveOrderDO.setOrderTypeCode(stockOutOrderPO.getOrderTypeCode()); + waveOrderDO.setOrderTypeName(stockOutOrderPO.getOrderTypeName()); + waveOrderDO.setWaveOrderNumber(OrderSequence.getOrderCode("BC")); + waveOrderDO.setWarehouseId(stockOutOrderPO.getWarehouseId()); + waveOrderDO.setWarehouseCode(stockOutOrderPO.getWarehouseCode()); + waveOrderDO.setWarehouseName(stockOutOrderPO.getWarehouseName()); + waveOrderDO.setShipperId(stockOutOrderPO.getShipperId()); + waveOrderDO.setShipperCode(stockOutOrderPO.getShipperCode()); + waveOrderDO.setShipperName(stockOutOrderPO.getShipperName()); + waveOrderDO.setAllocationQuantity(stockOutOrderPO.getAllocationQuantity()); + waveOrderDO.setCreateBy(loginUser.getUserid()); + waveOrderDO.setCreateByName(loginUser.getUsername()); + waveOrderDO.setCreateTime(new Date()); + waveOrderService.insert(waveOrderDO); + List waveOutOrderList = new ArrayList<>(); + for (StockOutOrderPO stockOutOrderPODb : stockOutOrderPOList){ + WaveOutOrder waveOutOrder = new WaveOutOrder(); + waveOutOrder.setWaveOrderNumber(waveOrderDO.getWaveOrderNumber()); + waveOutOrder.setOutOrderNumber(stockOutOrderPODb.getOutOrderNumber()); + waveOutOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + waveOutOrder.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + waveOutOrder.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + waveOutOrder.setCreateBy(loginUser.getUserid()); + waveOutOrder.setCreateByName(loginUser.getUsername()); + waveOutOrder.setCreateTime(new Date()); + waveOutOrderList.add(waveOutOrder); + } + // 批量插入明细 + List waveMaterialDetailDOList = new ArrayList<>(); + for (Map.Entry> entry : outMaterialDetailListMap.entrySet()){ + WaveMaterialDetailDO waveMaterialDetailDO = new WaveMaterialDetailDO(); + OutMaterialDetail outMaterialDetail = entry.getValue().get(entry.getValue().size() - 1); + BeanUtils.copyProperties(outMaterialDetail, waveMaterialDetailDO, + "materialDetailId", "uniqueId", "noticeNumber", "outOrderNumber", "quantity", + "createBy", "createByName", "createTime", + "updateBy", "updateByName", "updateTime"); + BigDecimal weightLimit = entry.getValue().stream().map(OutMaterialDetail::getWeightLimit).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal volumeLimit = entry.getValue().stream().map(OutMaterialDetail::getVolumeLimit).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal quantity = entry.getValue().stream().map(OutMaterialDetail::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + waveMaterialDetailDO.setQuantity(quantity); + waveMaterialDetailDO.setWeightLimit(weightLimit); + waveMaterialDetailDO.setVolumeLimit(volumeLimit); + waveMaterialDetailDOList.add(waveMaterialDetailDO); + } + //修改出库单状态为波次中 + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setStatus(5);//波次中 + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + stockOutOrderService.update(stockOutOrder, new QueryWrapper().lambda().in(StockOutOrder::getOutOrderNumber, outOrderNumberList)); + //插入波次单、出库单关联表 + waveOutOrderService.saveBatch(waveOutOrderList); + //插入波次单播种分货明细 + sowingDistributionDetailsService.batchInsert(waveOrderDO.getWaveOrderNumber(), outMaterialDetailList); + //插入波次单物料明细 + return waveMaterialDetailService.batchInsert(waveOrderDO.getWaveOrderNumber(), waveMaterialDetailDOList); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/WaveOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/WaveOrderDomainService.java new file mode 100644 index 000000000..469728435 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOrder/service/WaveOrderDomainService.java @@ -0,0 +1,323 @@ +package com.mhd.wms.domain.waveOrder.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService; +import com.mhd.wms.domain.sowingDistributionDetails.entity.SowingDistributionDetails; +import com.mhd.wms.domain.sowingDistributionDetails.repository.facade.ISowingDistributionDetailsService; +import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; +import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; +import com.mhd.wms.domain.waveMaterialDetail.entity.WaveMaterialDetail; +import com.mhd.wms.domain.waveMaterialDetail.repository.facade.IWaveMaterialDetailService; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import com.mhd.wms.domain.waveOrder.entity.WaveOrder; +import com.mhd.wms.domain.waveOrder.repository.facade.IWaveOrderService; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 波次单 + * + * @author gen + * @date 2024-06-04 + */ +@Service +@Slf4j +public class WaveOrderDomainService { + + @Autowired + private IWaveOrderService waveOrderService; + @Autowired + private IWaveMaterialDetailService waveMaterialDetailService; + @Autowired + private PickingOrderDomainService pickingOrderDomainService; + @Autowired + private IStockOutOrderService stockOutOrderService; + @Autowired + private IWaveOutOrderService waveOutOrderService; + @Autowired + private ISowingDistributionDetailsService sowingDistributionDetailsService; + + + /** + * 分页查询波次单列表 + */ + public List queryList(WaveOrderDO waveOrderDO) { + return waveOrderService.queryList(waveOrderDO); + } + + + /** + * 新增波次单 + */ + public Boolean insert(WaveOrderDO waveOrderDO) { + + return waveOrderService.insert(waveOrderDO); + } + + /** + * 修改波次单 + */ + public Boolean update(WaveOrderDO waveOrderDO) { + return waveOrderService.update(waveOrderDO); + } + + /** + * 批量删除波次单 + */ + public Boolean delete(Long[] waveOrderIds) { + return waveOrderService.delete(waveOrderIds); + } + + /** + * 获取波次单详细信息 + */ + public WaveOrderPO getInfo(Long waveOrderId) + { + WaveOrderPO waveOrderPO = waveOrderService.getInfo(waveOrderId); + WaveMaterialDetailDO waveMaterialDetailDO = new WaveMaterialDetailDO(); + waveMaterialDetailDO.setWaveOrderNumber(waveOrderPO.getWaveOrderNumber()); + List waveMaterialDetailPOList = waveMaterialDetailService.queryList(waveMaterialDetailDO); + waveOrderPO.setMaterialDetailList(waveMaterialDetailPOList); + return waveOrderPO; + } + + /** + * @description 手动分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param waveOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean manualAssign(WaveOrderDO waveOrderDO){ + WaveOrder waveOrder = waveOrderService.getById(waveOrderDO.getWaveOrderId()); + if (waveOrder == null){ + throw new ServiceException("波次单不存在"); + } + if (waveOrder.getStatus() > 3){ + throw new ServiceException("波次单已完成分配"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //总计划数 + BigDecimal quantity = waveOrder.getQuantity(); + //统计总分配数 + BigDecimal allocationQuantity = waveOrderDO.getMaterialDetailList().stream().map(WaveMaterialDetailDO::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + if (allocationQuantity.compareTo(quantity) > 0){ + throw new ServiceException("分配数量不能大于计划数量"); + } + int status = 2; + if (allocationQuantity.compareTo(quantity) == 0){ + status = 4; + } + waveOrderService.update(null, new UpdateWrapper().lambda() + .set(WaveOrder::getStatus, status) + .set(WaveOrder::getAllocationQuantity, allocationQuantity) + .set(WaveOrder::getUpdateBy, loginUser.getUserid()) + .set(WaveOrder::getUpdateByName, loginUser.getUsername()) + .set(WaveOrder::getUpdateTime, new Date()) + .eq(WaveOrder::getWaveOrderId, waveOrderDO.getWaveOrderId())); + + //修改物料明细信息 + return waveMaterialDetailService.batchAssignUpdate(waveOrder.getWaveOrderNumber(), waveOrderDO.getMaterialDetailList()); + } + + + /** + * @description 取消分配 + * @author ZhouGY + * @date 2024/5/22 16:20 + * @param waveOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean cancelAssign(WaveOrderDO waveOrderDO){ + WaveOrder waveOrder = waveOrderService.getById(waveOrderDO.getWaveOrderId()); + if (waveOrder == null){ + throw new ServiceException("出库单不存在"); + } + if (waveOrder.getStatus() > 4){ + throw new ServiceException("收货单已完成分配"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + //统计总分配数 + BigDecimal allocationQuantity = waveOrderDO.getMaterialDetailList().stream().map(WaveMaterialDetailDO::getActualQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); + waveOrderService.update(null, new UpdateWrapper().lambda() + .set(WaveOrder::getStatus, 2) + .set(WaveOrder::getAllocationQuantity, allocationQuantity) + .set(WaveOrder::getUpdateBy, loginUser.getUserid()) + .set(WaveOrder::getUpdateByName, loginUser.getUsername()) + .set(WaveOrder::getUpdateTime, new Date()) + .eq(WaveOrder::getWaveOrderId, waveOrderDO.getWaveOrderId())); + //修改物料明细信息 + return waveMaterialDetailService.batchCancelAssignUpdate(waveOrder.getWaveOrderNumber(), waveOrderDO.getMaterialDetailList()); + } + + /** + * @description 生成拣货单 + * @author ZhouGY + * @date 2024/5/28 13:47 + * @param waveOrderDO + * @return Boolean + */ + @Transactional(rollbackFor = Exception.class) + public Boolean genPickingOrder(WaveOrderDO waveOrderDO){ + List waveOrderList = waveOrderService.list(new QueryWrapper().lambda() + .eq(WaveOrder::getDelFlag, 1) + .eq(WaveOrder::getStatus, 4) + .in(WaveOrder::getWaveOrderId, waveOrderDO.getWaveOrderIds())); + if (CollectionUtils.isEmpty(waveOrderList)){ + throw new ServiceException("只有已分配过的波次单才能生成拣货单"); + } + List waveOrderNumberList = waveOrderList.stream().map(WaveOrder::getWaveOrderNumber).collect(Collectors.toList()); + //修改状态 + for (String waveOrderNumber : waveOrderNumberList){ + //修改波次单状态 + waveOrderService.update(new UpdateWrapper().lambda().set(WaveOrder::getStatus, 5).eq(WaveOrder::getWaveOrderNumber, waveOrderNumber)); + //修改出库单状态 + List listWaveOutOrder = waveOutOrderService.list(new QueryWrapper().lambda().eq(WaveOutOrder::getWaveOrderNumber, waveOrderDO.getWaveOrderNumber())); + List collectOutOrderNumber = listWaveOutOrder.stream().map(WaveOutOrder::getOutOrderNumber).collect(Collectors.toList()); + stockOutOrderService.update(new UpdateWrapper().lambda().set(StockOutOrder::getStatus, 6).in(StockOutOrder::getOutOrderNumber, collectOutOrderNumber)); + } + WaveMaterialDetailDO waveMaterialDetailDO = new WaveMaterialDetailDO(); + waveMaterialDetailDO.setWaveOrderNumberList(waveOrderNumberList); + List materialDetailPOList = waveMaterialDetailService.queryList(waveMaterialDetailDO); + Map> materialDetailListMap = materialDetailPOList.stream().collect(Collectors.groupingBy(WaveMaterialDetailPO::getWaveOrderNumber)); + List pickingOrderDOList = new ArrayList<>(); + waveOrderList.forEach(p -> { + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + BeanUtils.copyProperties(p, pickingOrderDO); + pickingOrderDO.setOrderNumber(p.getWaveOrderNumber()); + pickingOrderDO.setPickingOrderNumber(OrderSequence.getOrderCode("JH")); + pickingOrderDO.setQuantity(p.getAllocationQuantity()); + pickingOrderDO.setWeightLimit(p.getWeightLimit()); + pickingOrderDO.setVolumeLimit(p.getVolumeLimit()); + pickingOrderDO.setMaterialQuantity(p.getMaterialCategoryQuantity()); + pickingOrderDO.setType(2);//波次拣货单 + List waveMaterialDetailPOList = materialDetailListMap.get(p.getWaveOrderNumber()); + List pickingMaterialDetailList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(waveMaterialDetailPOList)) { + waveMaterialDetailPOList.forEach(waveMaterialDetailPO -> { + PickingMaterialDetailDO pickingMaterialDetailDO = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(waveMaterialDetailPO, pickingMaterialDetailDO); + pickingMaterialDetailDO.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDO.setQuantity(waveMaterialDetailPO.getAllocationQuantity()); + pickingMaterialDetailDO.setOutUniqueId(waveMaterialDetailPO.getUniqueId()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + List waveMaterialDetailPOListChildren = waveMaterialDetailPO.getChildren(); + if (!CollectionUtils.isEmpty(waveMaterialDetailPOListChildren)) { + waveMaterialDetailPOListChildren.forEach(waveMaterialDetailPOChildren -> { + PickingMaterialDetailDO pickingMaterialDetailDOChildren = new PickingMaterialDetailDO(); + BeanUtils.copyProperties(pickingMaterialDetailDO, pickingMaterialDetailDOChildren); + BeanUtils.copyProperties(waveMaterialDetailPOChildren, pickingMaterialDetailDOChildren); + pickingMaterialDetailDOChildren.setPickingOrderNumber(pickingOrderDO.getPickingOrderNumber()); + pickingMaterialDetailDOChildren.setQuantity(waveMaterialDetailPOChildren.getAllocationQuantity()); + pickingMaterialDetailDOChildren.setOutUniqueId(waveMaterialDetailPOChildren.getUniqueId()); + pickingMaterialDetailList.add(pickingMaterialDetailDO); + }); + } + }); + } + pickingOrderDO.setMaterialDetailList(pickingMaterialDetailList); + pickingOrderDOList.add(pickingOrderDO); + }); + return pickingOrderDomainService.batchInsert(pickingOrderDOList); + } + + /** + * @description 取消波次单 + * @param waveOrderDO + * @return + */ + @Transactional(rollbackFor = Exception.class) + public Boolean cancelWave(WaveOrderDO waveOrderDO){ + if(CollectionUtils.isEmpty(waveOrderDO.getWaveOrderIds())){ + throw new ServiceException("缺少参数:WaveOrderIds"); + } + Boolean result = true; + for(Long waveOrderId : waveOrderDO.getWaveOrderIds()){ + WaveOrder waveOrder = waveOrderService.getById(waveOrderId); + if (waveOrder == null){ + throw new ServiceException("波次单不存在"); + } + if (waveOrder.getStatus() != 1){ + throw new ServiceException("只允许取消已生成状态下的波次单"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + + //获取波次单与来源出库单的对应信息 + List listWaveOutOrder = waveOutOrderService.list(new QueryWrapper().lambda().eq(WaveOutOrder::getWaveOrderNumber, waveOrder.getWaveOrderNumber())); + //获取所有出库单号 + List outOrderNumberList = listWaveOutOrder.stream().map(WaveOutOrder::getOutOrderNumber).collect(Collectors.toList()); + + //修改对应出库单状态为已审核 + StockOutOrder stockOutOrder = new StockOutOrder(); + stockOutOrder.setStatus(2);//已审核 + stockOutOrder.setUpdateBy(loginUser.getUserid()); + stockOutOrder.setUpdateByName(loginUser.getUsername()); + stockOutOrder.setUpdateTime(new Date()); + result = stockOutOrderService.update(stockOutOrder, new QueryWrapper().lambda().in(StockOutOrder::getOutOrderNumber, outOrderNumberList)); + if(!result){ + throw new ServiceException("修改出库单状态失败"); + } + //删除波次单、出库单关联表 + WaveOutOrder waveOutOrder = new WaveOutOrder(); + waveOutOrder.setDelFlag(2);//删除 + waveOutOrder.setUpdateBy(loginUser.getUserid()); + waveOutOrder.setUpdateByName(loginUser.getUsername()); + waveOutOrder.setUpdateTime(new Date()); + result = waveOutOrderService.update(waveOutOrder, new QueryWrapper().lambda().in(WaveOutOrder::getWaveOrderNumber, waveOrder.getWaveOrderNumber())); + if(!result){ + throw new ServiceException("删除出库单关联失败"); + } + //删除波次单播种分货明细 + SowingDistributionDetails sowingDistributionDetails = new SowingDistributionDetails(); + sowingDistributionDetails.setDelFlag(2);//删除 + sowingDistributionDetails.setUpdateBy(loginUser.getUserid()); + sowingDistributionDetails.setUpdateByName(loginUser.getUsername()); + sowingDistributionDetails.setUpdateTime(new Date()); + result = sowingDistributionDetailsService.update(sowingDistributionDetails, new QueryWrapper().lambda().in(SowingDistributionDetails::getOrderNumber, waveOrder.getWaveOrderNumber())); + if(!result){ + throw new ServiceException("删除播种分货明细失败"); + } + //删除波次单物料明细 + WaveMaterialDetail waveMaterialDetail = new WaveMaterialDetail(); + waveMaterialDetail.setDelFlag(2);//删除 + waveMaterialDetail.setUpdateBy(loginUser.getUserid()); + waveMaterialDetail.setUpdateByName(loginUser.getUsername()); + waveMaterialDetail.setUpdateTime(new Date()); + result = waveMaterialDetailService.update(waveMaterialDetail, new QueryWrapper().lambda().eq(WaveMaterialDetail::getWaveOrderNumber, waveOrder.getWaveOrderNumber())); + if(!result){ + throw new ServiceException("删除波次单物料明细失败"); + } + //删除波次单 + result = waveOrderService.delete(new Long[]{waveOrder.getWaveOrderId()}); + if(!result){ + throw new ServiceException("删除波次单失败"); + } + } + return result; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/entity/WaveOutOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/entity/WaveOutOrder.java new file mode 100644 index 000000000..dcd96bc5b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/entity/WaveOutOrder.java @@ -0,0 +1,51 @@ +package com.mhd.wms.domain.waveOutOrder.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 波次单和出库单关联对象 wave_out_order + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class WaveOutOrder extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + @TableId(type = IdType.AUTO) + private Long waveOutOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/facade/IWaveOutOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/facade/IWaveOutOrderService.java new file mode 100644 index 000000000..b13192caa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/facade/IWaveOutOrderService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.waveOutOrder.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.po.WaveOutOrderPO; +import com.mhd.wms.domain.waveOutOrder.repository.todo.WaveOutOrderDO; + +import java.util.List; + +/** + * 波次单和出库单关联Service接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface IWaveOutOrderService extends IService +{ + /** + * 分页查询波次单和出库单关联列表 + */ + public List queryList(WaveOutOrderDO waveOutOrderDO); + + /** + * 新增波次单和出库单关联 + */ + public Boolean insert(WaveOutOrderDO waveOutOrderDO); + + /** + * 修改波次单和出库单关联 + */ + public Boolean update(WaveOutOrderDO waveOutOrderDO); + + /** + * 批量删除波次单和出库单关联 + */ + public Boolean delete(Long[] waveOutOrderIds); + + + /** + * 查询波次单和出库单关联 + */ + public WaveOutOrderPO getInfo(Long waveOutOrderId); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/mapper/WaveOutOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/mapper/WaveOutOrderMapper.java new file mode 100644 index 000000000..09b9b18f9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/mapper/WaveOutOrderMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.waveOutOrder.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.po.WaveOutOrderPO; +import com.mhd.wms.domain.waveOutOrder.repository.todo.WaveOutOrderDO; + +import java.util.List; + +/** + * 波次单和出库单关联Mapper接口 + * + * @author gen + * @date 2024-07-22 + */ +public interface WaveOutOrderMapper extends BaseMapper +{ + /** + * 查询波次单和出库单关联列表 + */ + public List queryList(WaveOutOrderDO waveOutOrderDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/persistence/WaveOutOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/persistence/WaveOutOrderImpl.java new file mode 100644 index 000000000..e1544e2dd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/persistence/WaveOutOrderImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.waveOutOrder.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.waveOutOrder.entity.WaveOutOrder; +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import com.mhd.wms.domain.waveOutOrder.repository.mapper.WaveOutOrderMapper; +import com.mhd.wms.domain.waveOutOrder.repository.po.WaveOutOrderPO; +import com.mhd.wms.domain.waveOutOrder.repository.todo.WaveOutOrderDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 波次单和出库单关联Service业务层处理 + * + * @author gen + * @date 2024-07-22 + */ +@Service +public class WaveOutOrderImpl extends ServiceImpl implements IWaveOutOrderService{ + @Autowired + private WaveOutOrderMapper waveOutOrderMapper; + + /** + * 查询波次单和出库单关联列表 + */ + @Override + public List queryList(WaveOutOrderDO waveOutOrderDO) + { + return waveOutOrderMapper.queryList(waveOutOrderDO); + } + + /** + * 新增波次单和出库单关联 + */ + @Override + public Boolean insert(WaveOutOrderDO waveOutOrderDO) { + WaveOutOrder waveOutOrder = new WaveOutOrder(); + BeanUtils.copyProperties(waveOutOrderDO,waveOutOrder); + return this.save(waveOutOrder); + } + + /** + * 修改波次单和出库单关联 + */ + @Override + public Boolean update(WaveOutOrderDO waveOutOrderDO) { + WaveOutOrder waveOutOrder = new WaveOutOrder(); + BeanUtils.copyProperties(waveOutOrderDO,waveOutOrder); + return this.updateById(waveOutOrder); + } + + /** + * 批量删除波次单和出库单关联 + */ + @Override + public Boolean delete(Long[] waveOutOrderIds ) { + List list = new ArrayList<>(); + for (Long id : waveOutOrderIds) { + WaveOutOrder waveOutOrder = new WaveOutOrder(); + waveOutOrder.setWaveOutOrderId(id); + waveOutOrder.setDelFlag(2); + list.add(waveOutOrder); + } + return this.updateBatchById(list); + } + + /** + * 修改波次单和出库单关联 + */ + @Override + public WaveOutOrderPO getInfo(Long waveOutOrderId) { + WaveOutOrder waveOutOrder = this.getById(waveOutOrderId); + WaveOutOrderPO waveOutOrderPO = new WaveOutOrderPO(); + BeanUtils.copyProperties(waveOutOrder,waveOutOrderPO); + return waveOutOrderPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/po/WaveOutOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/po/WaveOutOrderPO.java new file mode 100644 index 000000000..9c1085214 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/po/WaveOutOrderPO.java @@ -0,0 +1,51 @@ +package com.mhd.wms.domain.waveOutOrder.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 波次单和出库单关联对象 wave_out_order + * + * @author gen + * @date 2024-07-22 + */ + +@Data +@ApiModel(value = "波次单和出库单关联对象", description = "波次单和出库单关联响应对象") +public class WaveOutOrderPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + private Long waveOutOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/todo/WaveOutOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/todo/WaveOutOrderDO.java new file mode 100644 index 000000000..818aae03f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/repository/todo/WaveOutOrderDO.java @@ -0,0 +1,54 @@ +package com.mhd.wms.domain.waveOutOrder.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 波次单和出库单关联对象 wave_out_order + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class WaveOutOrderDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + private Long waveOutOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/service/WaveOutOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/service/WaveOutOrderDomainService.java new file mode 100644 index 000000000..7c5cf18a1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveOutOrder/service/WaveOutOrderDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.waveOutOrder.service; + +import com.mhd.wms.domain.waveOutOrder.repository.facade.IWaveOutOrderService; +import com.mhd.wms.domain.waveOutOrder.repository.po.WaveOutOrderPO; +import com.mhd.wms.domain.waveOutOrder.repository.todo.WaveOutOrderDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 波次单和出库单关联 + * + * @author gen + * @date 2024-07-22 + */ +@Service +@Slf4j +public class WaveOutOrderDomainService { + + @Autowired + private IWaveOutOrderService waveOutOrderService; + + + /** + * 分页查询波次单和出库单关联列表 + */ + public List queryList(WaveOutOrderDO waveOutOrderDO) { + return waveOutOrderService.queryList(waveOutOrderDO); + } + + + /** + * 新增波次单和出库单关联 + */ + public Boolean insert(WaveOutOrderDO waveOutOrderDO) { + + return waveOutOrderService.insert(waveOutOrderDO); + } + + /** + * 修改波次单和出库单关联 + */ + public Boolean update(WaveOutOrderDO waveOutOrderDO) { + return waveOutOrderService.update(waveOutOrderDO); + } + + /** + * 批量删除波次单和出库单关联 + */ + public Boolean delete(Long[] waveOutOrderIds) { + return waveOutOrderService.delete(waveOutOrderIds); + } + + /** + * 获取波次单和出库单关联详细信息 + */ + public WaveOutOrderPO getInfo(Long waveOutOrderId) + { + return waveOutOrderService.getInfo(waveOutOrderId); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/entity/WaveRule.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/entity/WaveRule.java new file mode 100644 index 000000000..b9f25d976 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/entity/WaveRule.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.waveRule.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 波次规则对象 wave_rule + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class WaveRule extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("单次生成波次数量") + @Excel(name = "单次生成波次数量") + private Long waveNumber; + + @ApiModelProperty("订单数量上限") + @Excel(name = "订单数量上限") + private Long orderNumMax; + + @ApiModelProperty("订单数量下限") + @Excel(name = "订单数量下限") + private Long orderNumMin; + + @ApiModelProperty("物料种类上限") + @Excel(name = "物料种类上限") + private Long materialTypeMax; + + @ApiModelProperty("物料种类下限") + @Excel(name = "物料种类下限") + private Long materialTypeMin; + + @ApiModelProperty("物料数量上限") + @Excel(name = "物料数量上限") + private Long materialNumMax; + + @ApiModelProperty("物料数量下限") + @Excel(name = "物料数量下限") + private Long materialNumMin; + + @ApiModelProperty("允许多货主;0不允许1允许") + @Excel(name = "允许多货主;0不允许1允许") + private Integer isMoreShipper; + + @ApiModelProperty("允许跨库区;0不允许1允许") + @Excel(name = "允许跨库区;0不允许1允许") + private Integer isCrossDepot; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/facade/IWaveRuleService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/facade/IWaveRuleService.java new file mode 100644 index 000000000..dd5d0d88a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/facade/IWaveRuleService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.waveRule.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.waveRule.entity.WaveRule; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; + +import java.util.List; + +/** + * 波次规则Service接口 + * + * @author gen + * @date 2024-07-23 + */ +public interface IWaveRuleService extends IService +{ + /** + * 分页查询波次规则列表 + */ + public List queryList(WaveRuleDO waveRuleDO); + + /** + * 新增波次规则 + */ + public Boolean insert(WaveRuleDO waveRuleDO); + + /** + * 修改波次规则 + */ + public Boolean update(WaveRuleDO waveRuleDO); + + /** + * 批量删除波次规则 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询波次规则 + */ + public WaveRulePO getInfo(Long id); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/mapper/WaveRuleMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/mapper/WaveRuleMapper.java new file mode 100644 index 000000000..44e23b15a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/mapper/WaveRuleMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.waveRule.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.waveRule.entity.WaveRule; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; + +import java.util.List; + +/** + * 波次规则Mapper接口 + * + * @author gen + * @date 2024-07-23 + */ +public interface WaveRuleMapper extends BaseMapper +{ + /** + * 查询波次规则列表 + */ + public List queryList(WaveRuleDO waveRuleDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/persistence/WaveRuleImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/persistence/WaveRuleImpl.java new file mode 100644 index 000000000..62620ce3d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/persistence/WaveRuleImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.waveRule.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.waveRule.entity.WaveRule; +import com.mhd.wms.domain.waveRule.repository.facade.IWaveRuleService; +import com.mhd.wms.domain.waveRule.repository.mapper.WaveRuleMapper; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 波次规则Service业务层处理 + * + * @author gen + * @date 2024-07-23 + */ +@Service +public class WaveRuleImpl extends ServiceImpl implements IWaveRuleService{ + @Autowired + private WaveRuleMapper waveRuleMapper; + + /** + * 查询波次规则列表 + */ + @Override + public List queryList(WaveRuleDO waveRuleDO) + { + return waveRuleMapper.queryList(waveRuleDO); + } + + /** + * 新增波次规则 + */ + @Override + public Boolean insert(WaveRuleDO waveRuleDO) { + WaveRule waveRule = new WaveRule(); + BeanUtils.copyProperties(waveRuleDO,waveRule); + return this.save(waveRule); + } + + /** + * 修改波次规则 + */ + @Override + public Boolean update(WaveRuleDO waveRuleDO) { + WaveRule waveRule = new WaveRule(); + BeanUtils.copyProperties(waveRuleDO,waveRule); + return this.updateById(waveRule); + } + + /** + * 批量删除波次规则 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + WaveRule waveRule = new WaveRule(); + waveRule.setId(id); + waveRule.setDelFlag(2); + list.add(waveRule); + } + return this.updateBatchById(list); + } + + /** + * 修改波次规则 + */ + @Override + public WaveRulePO getInfo(Long id) { + WaveRule waveRule = this.getById(id); + WaveRulePO waveRulePO = new WaveRulePO(); + BeanUtils.copyProperties(waveRule,waveRulePO); + return waveRulePO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/po/WaveRulePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/po/WaveRulePO.java new file mode 100644 index 000000000..75e43703d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/po/WaveRulePO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.domain.waveRule.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 波次规则对象 wave_rule + * + * @author gen + * @date 2024-07-23 + */ + +@Data +@ApiModel(value = "波次规则对象", description = "波次规则响应对象") +public class WaveRulePO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("单次生成波次数量") + @Excel(name = "单次生成波次数量") + private Long waveNumber; + + @ApiModelProperty("订单数量上限") + @Excel(name = "订单数量上限") + private Long orderNumMax; + + @ApiModelProperty("订单数量下限") + @Excel(name = "订单数量下限") + private Long orderNumMin; + + @ApiModelProperty("物料种类上限") + @Excel(name = "物料种类上限") + private Long materialTypeMax; + + @ApiModelProperty("物料种类下限") + @Excel(name = "物料种类下限") + private Long materialTypeMin; + + @ApiModelProperty("物料数量上限") + @Excel(name = "物料数量上限") + private Long materialNumMax; + + @ApiModelProperty("物料数量下限") + @Excel(name = "物料数量下限") + private Long materialNumMin; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("允许多货主;0不允许1允许") + @Excel(name = "允许多货主;0不允许1允许") + private Integer isMoreShipper; + + @ApiModelProperty("允许跨库区;0不允许1允许") + @Excel(name = "允许跨库区;0不允许1允许") + private Integer isCrossDepot; + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/todo/WaveRuleDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/todo/WaveRuleDO.java new file mode 100644 index 000000000..22673bbc8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/repository/todo/WaveRuleDO.java @@ -0,0 +1,94 @@ +package com.mhd.wms.domain.waveRule.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 波次规则对象 wave_rule + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class WaveRuleDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("单次生成波次数量") + @Excel(name = "单次生成波次数量") + private Long waveNumber; + + @ApiModelProperty("订单数量上限") + @Excel(name = "订单数量上限") + private Long orderNumMax; + + @ApiModelProperty("订单数量下限") + @Excel(name = "订单数量下限") + private Long orderNumMin; + + @ApiModelProperty("物料种类上限") + @Excel(name = "物料种类上限") + private Long materialTypeMax; + + @ApiModelProperty("物料种类下限") + @Excel(name = "物料种类下限") + private Long materialTypeMin; + + @ApiModelProperty("物料数量上限") + @Excel(name = "物料数量上限") + private Long materialNumMax; + + @ApiModelProperty("物料数量下限") + @Excel(name = "物料数量下限") + private Long materialNumMin; + + @ApiModelProperty("允许多货主;0不允许1允许") + @Excel(name = "允许多货主;0不允许1允许") + private Integer isMoreShipper; + + @ApiModelProperty("允许跨库区;0不允许1允许") + @Excel(name = "允许跨库区;0不允许1允许") + private Integer isCrossDepot; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/service/WaveRuleDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/service/WaveRuleDomainService.java new file mode 100644 index 000000000..e16fddaaf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/waveRule/service/WaveRuleDomainService.java @@ -0,0 +1,65 @@ +package com.mhd.wms.domain.waveRule.service; + +import com.mhd.wms.domain.waveRule.repository.facade.IWaveRuleService; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 波次规则 + * + * @author gen + * @date 2024-07-23 + */ +@Service +@Slf4j +public class WaveRuleDomainService { + + @Autowired + private IWaveRuleService waveRuleService; + + + /** + * 分页查询波次规则列表 + */ + public List queryList(WaveRuleDO waveRuleDO) { + return waveRuleService.queryList(waveRuleDO); + } + + + /** + * 新增波次规则 + */ + public Boolean insert(WaveRuleDO waveRuleDO) { + + return waveRuleService.insert(waveRuleDO); + } + + /** + * 修改波次规则 + */ + public Boolean update(WaveRuleDO waveRuleDO) { + return waveRuleService.update(waveRuleDO); + } + + /** + * 批量删除波次规则 + */ + public Boolean delete(Long[] ids) { + return waveRuleService.delete(ids); + } + + /** + * 获取波次规则详细信息 + */ + public WaveRulePO getInfo(Long id) + { + return waveRuleService.getInfo(id); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/enums/StatusInvestigationEnum.java b/mhd_wms/src/main/java/com/mhd/wms/enums/StatusInvestigationEnum.java new file mode 100644 index 000000000..cf2796126 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/enums/StatusInvestigationEnum.java @@ -0,0 +1,53 @@ +package com.mhd.wms.enums; + +public enum StatusInvestigationEnum { + + creat("已创建", 1), + pending("待盘点", 2), + during("盘点中", 3), + completed("盘点完成", 4); + + private String name; + private Integer code; + + private StatusInvestigationEnum(String name, Integer code) { + this.name = name; + this.code = code; + + } + + public String getName() { + return name; + } + + public Integer getCode() { + return code; + } + + public void setName(String name) { + this.name = name; + } + + public void setCode(Integer code) { + this.code = code; + } + + public static String getName(Integer code) { + for (StatusInvestigationEnum newEnum : StatusInvestigationEnum.values()) { + if (code.equals(newEnum.getCode())) { + return newEnum.getName(); + } + } + return null; + } + + public static Integer getCode(String name) { + for (StatusInvestigationEnum newEnum : StatusInvestigationEnum.values()) { + if (name.equals(newEnum.getName())) { + return newEnum.getCode(); + } + } + return null; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/commonSettings/CommonSettingsAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/commonSettings/CommonSettingsAssembler.java new file mode 100644 index 000000000..5dbc4a1bb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/commonSettings/CommonSettingsAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.commonSettings; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; +import com.mhd.wms.interfaces.dto.commonSettings.CommonSettingsDTO; +import org.springframework.stereotype.Component; + +/** + * 常用设置Assembler + * + * @author gen + * @date 2024-07-29 + */ +@Component +public class CommonSettingsAssembler { + + /** + * 转换实体 + */ + public CommonSettingsDO toDO(CommonSettingsDTO commonSettingsDTO) { + CommonSettingsDO commonSettingsDO = new CommonSettingsDO(); + // 拷贝 + BeanUtils.copyProperties(commonSettingsDTO, commonSettingsDO, IgnoreNullUtil.getNullPropertyNames(commonSettingsDTO)); + return commonSettingsDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/containerUsageRecord/ContainerUsageRecordAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/containerUsageRecord/ContainerUsageRecordAssembler.java new file mode 100644 index 000000000..f22ce8f8e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/containerUsageRecord/ContainerUsageRecordAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.containerUsageRecord; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import com.mhd.wms.interfaces.dto.containerUsageRecord.ContainerUsageRecordDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 容器使用记录Assembler + * + * @author gen + * @date 2024-08-22 + */ +@Component +public class ContainerUsageRecordAssembler { + + /** + * 转换实体 + */ + public ContainerUsageRecordDO toDO(ContainerUsageRecordDTO containerUsageRecordDTO) { + ContainerUsageRecordDO containerUsageRecordDO = new ContainerUsageRecordDO(); + // 拷贝 + BeanUtils.copyProperties(containerUsageRecordDTO, containerUsageRecordDO, IgnoreNullUtil.getNullPropertyNames(containerUsageRecordDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(containerUsageRecordDTO.getId() != null){ + if(userId != null){ + containerUsageRecordDO.setUpdateBy(userId); + }else { + containerUsageRecordDO.setUpdateBy(new Long("0")); + } + containerUsageRecordDO.setUpdateByName(userName); + containerUsageRecordDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + containerUsageRecordDO.setCreateBy(userId); + containerUsageRecordDO.setUpdateBy(userId); + }else { + containerUsageRecordDO.setCreateBy(new Long("0")); + containerUsageRecordDO.setUpdateBy(new Long("0")); + } + containerUsageRecordDO.setCreateByName(userName); + containerUsageRecordDO.setUpdateByName(userName); + containerUsageRecordDO.setCreateTime(new Date()); + containerUsageRecordDO.setUpdateTime(new Date()); + containerUsageRecordDO.setDelFlag(1); + } + return containerUsageRecordDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/deliveTask/DeliveTaskAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/deliveTask/DeliveTaskAssembler.java new file mode 100644 index 000000000..0b3ae5d18 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/deliveTask/DeliveTaskAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.deliveTask; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.interfaces.dto.deliveTask.DeliveTaskDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 下发任务Assembler + * + * @author gen + * @date 2024-07-26 + */ +@Component +public class DeliveTaskAssembler { + + /** + * 转换实体 + */ + public DeliveTaskDO toDO(DeliveTaskDTO deliveTaskDTO) { + DeliveTaskDO deliveTaskDO = new DeliveTaskDO(); + // 拷贝 + BeanUtils.copyProperties(deliveTaskDTO, deliveTaskDO, IgnoreNullUtil.getNullPropertyNames(deliveTaskDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(deliveTaskDTO.getDeliverTaskId() != null){ + if(userId != null){ + deliveTaskDO.setUpdateBy(userId); + }else { + deliveTaskDO.setUpdateBy(new Long("0")); + } + deliveTaskDO.setUpdateByName(userName); + deliveTaskDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + deliveTaskDO.setCreateBy(userId); + deliveTaskDO.setUpdateBy(userId); + }else { + deliveTaskDO.setCreateBy(new Long("0")); + deliveTaskDO.setUpdateBy(new Long("0")); + } + deliveTaskDO.setCreateByName(userName); + deliveTaskDO.setUpdateByName(userName); + deliveTaskDO.setCreateTime(new Date()); + deliveTaskDO.setUpdateTime(new Date()); + deliveTaskDO.setDelFlag(1); + } + return deliveTaskDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/differentManage/DifferentManageAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/differentManage/DifferentManageAssembler.java new file mode 100644 index 000000000..db5289098 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/differentManage/DifferentManageAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.differentManage; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import com.mhd.wms.interfaces.dto.differentManage.DifferentManageDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 差异单Assembler + * + * @author gen + * @date 2024-07-20 + */ +@Component +public class DifferentManageAssembler { + + /** + * 转换实体 + */ + public DifferentManageDO toDO(DifferentManageDTO differentManageDTO) { + //DifferentManageDO differentManageDO = new DifferentManageDO(); + // 拷贝 + //BeanUtils.copyProperties(differentManageDTO, differentManageDO, IgnoreNullUtil.getNullPropertyNames(differentManageDTO)); + DifferentManageDO differentManageDO = JSONUtil.toBean(JSONUtil.toJsonStr(differentManageDTO), DifferentManageDO.class); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(differentManageDTO.getDifferentManageId() != null){ + if(userId != null){ + differentManageDO.setUpdateBy(userId); + }else { + differentManageDO.setUpdateBy(new Long("0")); + } + differentManageDO.setUpdateByName(userName); + differentManageDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + differentManageDO.setCreateBy(userId); + differentManageDO.setUpdateBy(userId); + }else { + differentManageDO.setCreateBy(new Long("0")); + differentManageDO.setUpdateBy(new Long("0")); + } + differentManageDO.setCreateByName(userName); + differentManageDO.setUpdateByName(userName); + differentManageDO.setCreateTime(new Date()); + differentManageDO.setUpdateTime(new Date()); + differentManageDO.setDelFlag(1); + } + return differentManageDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/handoverTaskOrder/HandoverTaskOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/handoverTaskOrder/HandoverTaskOrderAssembler.java new file mode 100644 index 000000000..9df78a46b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/handoverTaskOrder/HandoverTaskOrderAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.handoverTaskOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import com.mhd.wms.interfaces.dto.handoverTaskOrder.HandoverTaskOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 交接作业单Assembler + * + * @author gen + * @date 2024-05-28 + */ +@Component +public class HandoverTaskOrderAssembler { + + /** + * 转换实体 + */ + public HandoverTaskOrderDO toDO(HandoverTaskOrderDTO handoverTaskOrderDTO) { + HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(handoverTaskOrderDTO, handoverTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(handoverTaskOrderDTO)); + return handoverTaskOrderDO; + } + + /** + * 转换实体 + */ + public HandoverTaskOrderDO toDOByEdit(HandoverTaskOrderDTO handoverTaskOrderDTO) { + HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(handoverTaskOrderDTO, handoverTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(handoverTaskOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(handoverTaskOrderDTO.getHandoverTaskOrderId() != null){ + handoverTaskOrderDO.setUpdateBy(userId); + handoverTaskOrderDO.setUpdateByName(userName); + handoverTaskOrderDO.setUpdateTime(new Date()); + }else { + handoverTaskOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + handoverTaskOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + handoverTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + handoverTaskOrderDO.setCreateBy(userId); + handoverTaskOrderDO.setCreateByName(userName); + handoverTaskOrderDO.setCreateTime(new Date()); + handoverTaskOrderDO.setDelFlag(1); + } + return handoverTaskOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java new file mode 100644 index 000000000..968243957 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetail/InMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料明细Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class InMaterialDetailAssembler { + + /** + * 转换实体 + */ + public InMaterialDetailDO toDO(InMaterialDetailDTO inMaterialDetailDTO) { + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(inMaterialDetailDTO, inMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(inMaterialDetailDTO)); + return inMaterialDetailDO; + } + + /** + * 转换实体 + */ + public InMaterialDetailDO toDOByEdit(InMaterialDetailDTO inMaterialDetailDTO) { + InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(inMaterialDetailDTO, inMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(inMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inMaterialDetailDTO.getMaterialDetailId() != null){ + inMaterialDetailDO.setUpdateBy(userId); + inMaterialDetailDO.setUpdateByName(userName); + inMaterialDetailDO.setUpdateTime(new Date()); + }else { + inMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inMaterialDetailDO.setCreateBy(userId); + inMaterialDetailDO.setCreateByName(userName); + inMaterialDetailDO.setCreateTime(new Date()); + inMaterialDetailDO.setDelFlag(1); + } + return inMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberAssembler.java new file mode 100644 index 000000000..a61982287 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inMaterialDetailSerialNumber; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.interfaces.dto.inMaterialDetailSerialNumber.InMaterialDetailSerialNumberDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料明细序列号Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class InMaterialDetailSerialNumberAssembler { + + /** + * 转换实体 + */ + public InMaterialDetailSerialNumberDO toDO(InMaterialDetailSerialNumberDTO inMaterialDetailSerialNumberDTO) { + InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + // 拷贝 + BeanUtils.copyProperties(inMaterialDetailSerialNumberDTO, InMaterialDetailSerialNumberDO, IgnoreNullUtil.getNullPropertyNames(inMaterialDetailSerialNumberDTO)); + return InMaterialDetailSerialNumberDO; + } + + /** + * 转换实体 + */ + public InMaterialDetailSerialNumberDO toDOByEdit(InMaterialDetailSerialNumberDTO inMaterialDetailSerialNumberDTO) { + InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + // 拷贝 + BeanUtils.copyProperties(inMaterialDetailSerialNumberDTO, InMaterialDetailSerialNumberDO, IgnoreNullUtil.getNullPropertyNames(inMaterialDetailSerialNumberDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inMaterialDetailSerialNumberDTO.getMaterialDetailSerialNumberId() != null){ + InMaterialDetailSerialNumberDO.setUpdateBy(userId); + InMaterialDetailSerialNumberDO.setUpdateByName(userName); + InMaterialDetailSerialNumberDO.setUpdateTime(new Date()); + }else { + InMaterialDetailSerialNumberDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + InMaterialDetailSerialNumberDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + InMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + InMaterialDetailSerialNumberDO.setCreateBy(userId); + InMaterialDetailSerialNumberDO.setCreateByName(userName); + InMaterialDetailSerialNumberDO.setCreateTime(new Date()); + InMaterialDetailSerialNumberDO.setDelFlag(1); + } + return InMaterialDetailSerialNumberDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inOrderAbnormal/InOrderAbnormalAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inOrderAbnormal/InOrderAbnormalAssembler.java new file mode 100644 index 000000000..99bc3c3c6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inOrderAbnormal/InOrderAbnormalAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inOrderAbnormal; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; +import com.mhd.wms.interfaces.dto.inOrderAbnormal.InOrderAbnormalDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 入库异常单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class InOrderAbnormalAssembler { + + /** + * 转换实体 + */ + public InOrderAbnormalDO toDO(InOrderAbnormalDTO inOrderAbnormalDTO) { + InOrderAbnormalDO inOrderAbnormalDO = new InOrderAbnormalDO(); + // 拷贝 + BeanUtils.copyProperties(inOrderAbnormalDTO, inOrderAbnormalDO, IgnoreNullUtil.getNullPropertyNames(inOrderAbnormalDTO)); + return inOrderAbnormalDO; + } + + /** + * 转换实体 + */ + public InOrderAbnormalDO toDOByEdit(InOrderAbnormalDTO inOrderAbnormalDTO) { + InOrderAbnormalDO inOrderAbnormalDO = new InOrderAbnormalDO(); + // 拷贝 + BeanUtils.copyProperties(inOrderAbnormalDTO, inOrderAbnormalDO, IgnoreNullUtil.getNullPropertyNames(inOrderAbnormalDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inOrderAbnormalDTO.getInOrderAbnormalId() != null){ + inOrderAbnormalDO.setUpdateBy(userId); + inOrderAbnormalDO.setUpdateByName(userName); + inOrderAbnormalDO.setUpdateTime(new Date()); + }else { + inOrderAbnormalDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + inOrderAbnormalDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + inOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + inOrderAbnormalDO.setCreateBy(userId); + inOrderAbnormalDO.setCreateByName(userName); + inOrderAbnormalDO.setCreateTime(new Date()); + inOrderAbnormalDO.setDelFlag(1); + } + return inOrderAbnormalDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAdjustmentRecord/InventoryAdjustmentRecordAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAdjustmentRecord/InventoryAdjustmentRecordAssembler.java new file mode 100644 index 000000000..c5706349a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAdjustmentRecord/InventoryAdjustmentRecordAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.inventoryAdjustmentRecord; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; +import com.mhd.wms.interfaces.dto.inventoryAdjustmentRecord.InventoryAdjustmentRecordDTO; +import org.springframework.stereotype.Component; + +/** + * 库存调整记录Assembler + * + * @author gen + * @date 2024-07-17 + */ +@Component +public class InventoryAdjustmentRecordAssembler { + + /** + * 转换实体 + */ + public InventoryAdjustmentRecordDO toDO(InventoryAdjustmentRecordDTO inventoryAdjustmentRecordDTO) { + InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO = new InventoryAdjustmentRecordDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryAdjustmentRecordDTO, inventoryAdjustmentRecordDO, IgnoreNullUtil.getNullPropertyNames(inventoryAdjustmentRecordDTO)); + return inventoryAdjustmentRecordDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRule/InventoryAllocationRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRule/InventoryAllocationRuleAssembler.java new file mode 100644 index 000000000..88305772f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRule/InventoryAllocationRuleAssembler.java @@ -0,0 +1,90 @@ +package com.mhd.wms.interfaces.assember.inventoryAllocationRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import com.mhd.wms.interfaces.dto.inventoryAllocationRule.InventoryAllocationRuleDTO; +import com.mhd.wms.interfaces.dto.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 库存分配规则Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class InventoryAllocationRuleAssembler { + + /** + * 转换实体 + */ + public InventoryAllocationRuleDO toDO(InventoryAllocationRuleDTO inventoryAllocationRuleDTO) { + InventoryAllocationRuleDO inventoryAllocationRuleDO = new InventoryAllocationRuleDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryAllocationRuleDTO, inventoryAllocationRuleDO, IgnoreNullUtil.getNullPropertyNames(inventoryAllocationRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryAllocationRuleDTO.getId() != null){ + if(userId != null){ + inventoryAllocationRuleDO.setUpdateBy(userId); + }else { + inventoryAllocationRuleDO.setUpdateBy(new Long("0")); + } + inventoryAllocationRuleDO.setUpdateByName(userName); + inventoryAllocationRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryAllocationRuleDO.setCreateBy(userId); + inventoryAllocationRuleDO.setUpdateBy(userId); + }else { + inventoryAllocationRuleDO.setCreateBy(new Long("0")); + inventoryAllocationRuleDO.setUpdateBy(new Long("0")); + } + inventoryAllocationRuleDO.setCreateByName(userName); + inventoryAllocationRuleDO.setUpdateByName(userName); + inventoryAllocationRuleDO.setCreateTime(new Date()); + inventoryAllocationRuleDO.setUpdateTime(new Date()); + inventoryAllocationRuleDO.setDelFlag(1); + } + List inventoryAllocationRuleDetailDTOS = inventoryAllocationRuleDTO.getInventoryAllocationRuleDetailList(); + List inventoryAllocationRuleDetailDOS = inventoryAllocationRuleDetailDTOS.stream().map(inventoryAllocationRuleDetailDTO -> { + InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO = new InventoryAllocationRuleDetailDO(); + BeanUtils.copyProperties(inventoryAllocationRuleDetailDTO, inventoryAllocationRuleDetailDO); + if(userId != null){ + inventoryAllocationRuleDetailDO.setCreateBy(userId); + inventoryAllocationRuleDetailDO.setUpdateBy(userId); + }else { + inventoryAllocationRuleDetailDO.setCreateBy(new Long("0")); + inventoryAllocationRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryAllocationRuleDetailDO.setCreateByName(userName); + inventoryAllocationRuleDetailDO.setUpdateByName(userName); + inventoryAllocationRuleDetailDO.setCreateTime(new Date()); + inventoryAllocationRuleDetailDO.setUpdateTime(new Date()); + inventoryAllocationRuleDetailDO.setDelFlag(1); + return inventoryAllocationRuleDetailDO; + }).collect(Collectors.toList()); + + inventoryAllocationRuleDO.setInventoryAllocationRuleDetailDOS(inventoryAllocationRuleDetailDOS); + + return inventoryAllocationRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailAssembler.java new file mode 100644 index 000000000..994d5056c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inventoryAllocationRuleDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import com.mhd.wms.interfaces.dto.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 库存规则分配明细Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class InventoryAllocationRuleDetailAssembler { + + /** + * 转换实体 + */ + public InventoryAllocationRuleDetailDO toDO(InventoryAllocationRuleDetailDTO inventoryAllocationRuleDetailDTO) { + InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO = new InventoryAllocationRuleDetailDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryAllocationRuleDetailDTO, inventoryAllocationRuleDetailDO, IgnoreNullUtil.getNullPropertyNames(inventoryAllocationRuleDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryAllocationRuleDetailDTO.getId() != null){ + if(userId != null){ + inventoryAllocationRuleDetailDO.setUpdateBy(userId); + }else { + inventoryAllocationRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryAllocationRuleDetailDO.setUpdateByName(userName); + inventoryAllocationRuleDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryAllocationRuleDetailDO.setCreateBy(userId); + inventoryAllocationRuleDetailDO.setUpdateBy(userId); + }else { + inventoryAllocationRuleDetailDO.setCreateBy(new Long("0")); + inventoryAllocationRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryAllocationRuleDetailDO.setCreateByName(userName); + inventoryAllocationRuleDetailDO.setUpdateByName(userName); + inventoryAllocationRuleDetailDO.setCreateTime(new Date()); + inventoryAllocationRuleDetailDO.setUpdateTime(new Date()); + inventoryAllocationRuleDetailDO.setDelFlag(1); + } + return inventoryAllocationRuleDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingDetail/InventoryStandingDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingDetail/InventoryStandingDetailAssembler.java new file mode 100644 index 000000000..d28c6377a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingDetail/InventoryStandingDetailAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.inventoryStandingDetail; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.interfaces.dto.inventoryStandingDetail.InventoryStandingDetailDTO; +import org.springframework.stereotype.Component; + +/** + * 库存台账追溯详情Assembler + * + * @author gen + * @date 2024-07-13 + */ +@Component +public class InventoryStandingDetailAssembler { + + /** + * 转换实体 + */ + public InventoryStandingDetailDO toDO(InventoryStandingDetailDTO inventoryStandingDetailDTO) { + InventoryStandingDetailDO inventoryStandingDetailDO = new InventoryStandingDetailDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryStandingDetailDTO, inventoryStandingDetailDO, IgnoreNullUtil.getNullPropertyNames(inventoryStandingDetailDTO)); + return inventoryStandingDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingReport/InventoryStandingReportAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingReport/InventoryStandingReportAssembler.java new file mode 100644 index 000000000..1891741ea --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryStandingReport/InventoryStandingReportAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inventoryStandingReport; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; +import com.mhd.wms.interfaces.dto.inventoryStandingReport.InventoryStandingReportDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 库存台账报Assembler + * + * @author gen + * @date 2024-07-12 + */ +@Component +public class InventoryStandingReportAssembler { + + /** + * 转换实体 + */ + public InventoryStandingReportDO toDO(InventoryStandingReportDTO inventoryStandingReportDTO) { + InventoryStandingReportDO inventoryStandingReportDO = new InventoryStandingReportDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryStandingReportDTO, inventoryStandingReportDO, IgnoreNullUtil.getNullPropertyNames(inventoryStandingReportDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryStandingReportDTO.getInventoryStandingId() != null){ + if(userId != null){ + inventoryStandingReportDO.setUpdateBy(userId); + }else { + inventoryStandingReportDO.setUpdateBy(new Long("0")); + } + inventoryStandingReportDO.setUpdateByName(userName); + inventoryStandingReportDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryStandingReportDO.setCreateBy(userId); + inventoryStandingReportDO.setUpdateBy(userId); + }else { + inventoryStandingReportDO.setCreateBy(new Long("0")); + inventoryStandingReportDO.setUpdateBy(new Long("0")); + } + inventoryStandingReportDO.setCreateByName(userName); + inventoryStandingReportDO.setUpdateByName(userName); + inventoryStandingReportDO.setCreateTime(new Date()); + inventoryStandingReportDO.setUpdateTime(new Date()); + inventoryStandingReportDO.setDelFlag(1); + } + return inventoryStandingReportDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRule/InventoryTurnoverRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRule/InventoryTurnoverRuleAssembler.java new file mode 100644 index 000000000..4b6a4edec --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRule/InventoryTurnoverRuleAssembler.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.assember.inventoryTurnoverRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRule.InventoryTurnoverRuleDTO; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 库存周转规则Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class InventoryTurnoverRuleAssembler { + + /** + * 转换实体 + */ + public InventoryTurnoverRuleDO toDO(InventoryTurnoverRuleDTO inventoryTurnoverRuleDTO) { + InventoryTurnoverRuleDO inventoryTurnoverRuleDO = new InventoryTurnoverRuleDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryTurnoverRuleDTO, inventoryTurnoverRuleDO, IgnoreNullUtil.getNullPropertyNames(inventoryTurnoverRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryTurnoverRuleDTO.getId() != null){ + if(userId != null){ + inventoryTurnoverRuleDO.setUpdateBy(userId); + }else { + inventoryTurnoverRuleDO.setUpdateBy(new Long("0")); + } + inventoryTurnoverRuleDO.setUpdateByName(userName); + inventoryTurnoverRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryTurnoverRuleDO.setCreateBy(userId); + inventoryTurnoverRuleDO.setUpdateBy(userId); + }else { + inventoryTurnoverRuleDO.setCreateBy(new Long("0")); + inventoryTurnoverRuleDO.setUpdateBy(new Long("0")); + } + inventoryTurnoverRuleDO.setCreateByName(userName); + inventoryTurnoverRuleDO.setUpdateByName(userName); + inventoryTurnoverRuleDO.setCreateTime(new Date()); + inventoryTurnoverRuleDO.setUpdateTime(new Date()); + inventoryTurnoverRuleDO.setDelFlag(1); + } + List inventoryTurnoverRuleDetailDTOS = inventoryTurnoverRuleDTO.getInventoryTurnoverRuleDetailList(); + List inventoryTurnoverRuleDetailDOS = inventoryTurnoverRuleDetailDTOS.stream().map(inventoryTurnoverRuleDetailDTO -> { + InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO = new InventoryTurnoverRuleDetailDO(); + BeanUtils.copyProperties(inventoryTurnoverRuleDetailDTO, inventoryTurnoverRuleDetailDO); + if (userId != null) { + inventoryTurnoverRuleDetailDO.setCreateBy(userId); + inventoryTurnoverRuleDetailDO.setUpdateBy(userId); + } else { + inventoryTurnoverRuleDetailDO.setCreateBy(new Long("0")); + inventoryTurnoverRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryTurnoverRuleDetailDO.setCreateByName(userName); + inventoryTurnoverRuleDetailDO.setUpdateByName(userName); + inventoryTurnoverRuleDetailDO.setCreateTime(new Date()); + inventoryTurnoverRuleDetailDO.setUpdateTime(new Date()); + inventoryTurnoverRuleDetailDO.setDelFlag(1); + + return inventoryTurnoverRuleDetailDO; + }).collect(Collectors.toList()); + + inventoryTurnoverRuleDO.setInventoryTurnoverRuleDetailDOS(inventoryTurnoverRuleDetailDOS); + + return inventoryTurnoverRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailAssembler.java new file mode 100644 index 000000000..259fedc58 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inventoryTurnoverRuleDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 库存周转规则明细Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class InventoryTurnoverRuleDetailAssembler { + + /** + * 转换实体 + */ + public InventoryTurnoverRuleDetailDO toDO(InventoryTurnoverRuleDetailDTO inventoryTurnoverRuleDetailDTO) { + InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO = new InventoryTurnoverRuleDetailDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryTurnoverRuleDetailDTO, inventoryTurnoverRuleDetailDO, IgnoreNullUtil.getNullPropertyNames(inventoryTurnoverRuleDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryTurnoverRuleDetailDTO.getId() != null){ + if(userId != null){ + inventoryTurnoverRuleDetailDO.setUpdateBy(userId); + }else { + inventoryTurnoverRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryTurnoverRuleDetailDO.setUpdateByName(userName); + inventoryTurnoverRuleDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryTurnoverRuleDetailDO.setCreateBy(userId); + inventoryTurnoverRuleDetailDO.setUpdateBy(userId); + }else { + inventoryTurnoverRuleDetailDO.setCreateBy(new Long("0")); + inventoryTurnoverRuleDetailDO.setUpdateBy(new Long("0")); + } + inventoryTurnoverRuleDetailDO.setCreateByName(userName); + inventoryTurnoverRuleDetailDO.setUpdateByName(userName); + inventoryTurnoverRuleDetailDO.setCreateTime(new Date()); + inventoryTurnoverRuleDetailDO.setUpdateTime(new Date()); + inventoryTurnoverRuleDetailDO.setDelFlag(1); + } + return inventoryTurnoverRuleDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryWarningAnalyze/InventoryWarningAnalyzeAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryWarningAnalyze/InventoryWarningAnalyzeAssembler.java new file mode 100644 index 000000000..78f193c6c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/inventoryWarningAnalyze/InventoryWarningAnalyzeAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.inventoryWarningAnalyze; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; +import com.mhd.wms.interfaces.dto.inventoryWarningAnalyze.InventoryWarningAnalyzeDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 库存预警分析Assembler + * + * @author gen + * @date 2024-07-24 + */ +@Component +public class InventoryWarningAnalyzeAssembler { + + /** + * 转换实体 + */ + public InventoryWarningAnalyzeDO toDO(InventoryWarningAnalyzeDTO inventoryWarningAnalyzeDTO) { + InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO = new InventoryWarningAnalyzeDO(); + // 拷贝 + BeanUtils.copyProperties(inventoryWarningAnalyzeDTO, inventoryWarningAnalyzeDO, IgnoreNullUtil.getNullPropertyNames(inventoryWarningAnalyzeDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(inventoryWarningAnalyzeDTO.getInventoryWarningAnalyzeId() != null){ + if(userId != null){ + inventoryWarningAnalyzeDO.setUpdateBy(userId); + }else { + inventoryWarningAnalyzeDO.setUpdateBy(new Long("0")); + } + inventoryWarningAnalyzeDO.setUpdateByName(userName); + inventoryWarningAnalyzeDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + inventoryWarningAnalyzeDO.setCreateBy(userId); + inventoryWarningAnalyzeDO.setUpdateBy(userId); + }else { + inventoryWarningAnalyzeDO.setCreateBy(new Long("0")); + inventoryWarningAnalyzeDO.setUpdateBy(new Long("0")); + } + inventoryWarningAnalyzeDO.setCreateByName(userName); + inventoryWarningAnalyzeDO.setUpdateByName(userName); + inventoryWarningAnalyzeDO.setCreateTime(new Date()); + inventoryWarningAnalyzeDO.setUpdateTime(new Date()); + inventoryWarningAnalyzeDO.setDelFlag(1); + } + return inventoryWarningAnalyzeDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigationManage/InvestigationManageAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigationManage/InvestigationManageAssembler.java new file mode 100644 index 000000000..7f07fe476 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigationManage/InvestigationManageAssembler.java @@ -0,0 +1,124 @@ +package com.mhd.wms.interfaces.assember.investigationManage; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.interfaces.dto.investigationManage.InvestigationManageDTO; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 盘点管理Assembler + * + * @author gen + * @date 2024-07-10 + */ +@Component +public class InvestigationManageAssembler { + + /** + * 转换实体 + */ + public InvestigationManageDO toDO(InvestigationManageDTO investigationManageDTO) { + //InvestigationManageDO investigationManageDO = new InvestigationManageDO(); + // 拷贝 + //BeanUtils.copyProperties(investigationManageDTO, investigationManageDO, IgnoreNullUtil.getNullPropertyNames(investigationManageDTO)); + InvestigationManageDO investigationManageDO = JSONUtil.toBean(JSONUtil.toJsonStr(investigationManageDTO), InvestigationManageDO.class); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + UserPo userPo = loginUser.getUserPo(); + if(investigationManageDTO.getInvestigationManageId() != null){ + if(userId != null){ + investigationManageDO.setUpdateBy(userId); + }else { + investigationManageDO.setUpdateBy(new Long("0")); + } + investigationManageDO.setUpdateByName(userName); + investigationManageDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + investigationManageDO.setCreateBy(userId); + investigationManageDO.setUpdateBy(userId); + }else { + investigationManageDO.setCreateBy(new Long("0")); + investigationManageDO.setUpdateBy(new Long("0")); + } + investigationManageDO.setOrganizationId(userPo.getOrganizationId()); + investigationManageDO.setTopOrganizationId(userPo.getTopOrganizationId()); + investigationManageDO.setOrganizationName(userPo.getOrganizationName()); + investigationManageDO.setCreateByName(userName); + investigationManageDO.setUpdateByName(userName); + investigationManageDO.setCreateTime(new Date()); + investigationManageDO.setUpdateTime(new Date()); + investigationManageDO.setDelFlag(1); + } + return investigationManageDO; + } + + /** + * 转换实体 + */ + public InvestigationManageDO toDOByList(InvestigationManageDTO investigationManageDTO) { + InvestigationManageDO investigationManageDO = new InvestigationManageDO(); + // 拷贝 + BeanUtils.copyProperties(investigationManageDTO, investigationManageDO, IgnoreNullUtil.getNullPropertyNames(investigationManageDTO)); + return investigationManageDO; + } + + + /** + * 按库位盘点 转换实体 + */ + public InvestigationManageDO toDOInvestigationByStorageLocation(InvestigationManageDTO investigationManageDTO) { + InvestigationManageDO investigationManageDO = new InvestigationManageDO(); + // 拷贝 + BeanUtils.copyProperties(investigationManageDTO, investigationManageDO, IgnoreNullUtil.getNullPropertyNames(investigationManageDTO)); + List investigetionManageDetailDOList = new ArrayList<>(); + investigationManageDTO.getInvestigetionStorageList().forEach(investigetionStorageDTO -> { + investigetionStorageDTO.getInvestigetionManageDetailList().forEach(investigetionManageDetailDTO -> { + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + BeanUtils.copyProperties(investigetionManageDetailDTO, investigetionManageDetailDO, IgnoreNullUtil.getNullPropertyNames(investigetionManageDetailDTO)); + investigetionManageDetailDOList.add(investigetionManageDetailDO); + }); + }); + investigationManageDO.setInvestigetionManageDetailList(investigetionManageDetailDOList); + return investigationManageDO; + } + + /** + * 按物料盘点 转换实体 + */ + public InvestigationManageDO toDOInvestigationPickingByMaterial(InvestigationManageDTO investigationManageDTO) { + InvestigationManageDO investigationManageDO = new InvestigationManageDO(); + // 拷贝 + BeanUtils.copyProperties(investigationManageDTO, investigationManageDO, IgnoreNullUtil.getNullPropertyNames(investigationManageDTO)); + List investigetionManageDetailList = new ArrayList<>(); + investigationManageDTO.getInvestigetionMaterialList().forEach(investigetionMaterialDTO -> { + investigetionMaterialDTO.getInvestigetionManageDetailList().forEach(taskPickingMaterialDetailDTO -> { + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + BeanUtils.copyProperties(taskPickingMaterialDetailDTO, investigetionManageDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); + investigetionManageDetailList.add(investigetionManageDetailDO); + }); + }); + investigationManageDO.setInvestigetionManageDetailList(investigetionManageDetailList); + return investigationManageDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigetionManageDetail/InvestigetionManageDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigetionManageDetail/InvestigetionManageDetailAssembler.java new file mode 100644 index 000000000..636301ca8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/investigetionManageDetail/InvestigetionManageDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.investigetionManageDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.interfaces.dto.investigetionManageDetail.InvestigetionManageDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 盘点详情管理Assembler + * + * @author gen + * @date 2024-07-10 + */ +@Component +public class InvestigetionManageDetailAssembler { + + /** + * 转换实体 + */ + public InvestigetionManageDetailDO toDO(InvestigetionManageDetailDTO investigetionManageDetailDTO) { + InvestigetionManageDetailDO investigetionManageDetailDO = new InvestigetionManageDetailDO(); + // 拷贝 + BeanUtils.copyProperties(investigetionManageDetailDTO, investigetionManageDetailDO, IgnoreNullUtil.getNullPropertyNames(investigetionManageDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(investigetionManageDetailDTO.getInvestigationManageDetailId() != null){ + if(userId != null){ + investigetionManageDetailDO.setUpdateBy(userId); + }else { + investigetionManageDetailDO.setUpdateBy(new Long("0")); + } + investigetionManageDetailDO.setUpdateByName(userName); + investigetionManageDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + investigetionManageDetailDO.setCreateBy(userId); + investigetionManageDetailDO.setUpdateBy(userId); + }else { + investigetionManageDetailDO.setCreateBy(new Long("0")); + investigetionManageDetailDO.setUpdateBy(new Long("0")); + } + investigetionManageDetailDO.setCreateByName(userName); + investigetionManageDetailDO.setUpdateByName(userName); + investigetionManageDetailDO.setCreateTime(new Date()); + investigetionManageDetailDO.setUpdateTime(new Date()); + investigetionManageDetailDO.setDelFlag(1); + } + return investigetionManageDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBarCode/MaterialBarCodeAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBarCode/MaterialBarCodeAssembler.java new file mode 100644 index 000000000..99bffed9d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBarCode/MaterialBarCodeAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.materialBarCode; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import com.mhd.wms.interfaces.dto.materialBarCode.MaterialBarCodeDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料条码信息Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialBarCodeAssembler { + + /** + * 转换实体 + */ + public MaterialBarCodeDO toDO(MaterialBarCodeDTO materialBarCodeDTO) { + MaterialBarCodeDO materialBarCodeDO = new MaterialBarCodeDO(); + // 拷贝 + BeanUtils.copyProperties(materialBarCodeDTO, materialBarCodeDO, IgnoreNullUtil.getNullPropertyNames(materialBarCodeDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialBarCodeDTO.getMaterialBarCodeId() != null){ + if(userId != null){ + materialBarCodeDO.setUpdateBy(userId); + }else { + materialBarCodeDO.setUpdateBy(new Long("0")); + } + materialBarCodeDO.setUpdateByName(userName); + materialBarCodeDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + materialBarCodeDO.setCreateBy(userId); + materialBarCodeDO.setUpdateBy(userId); + }else { + materialBarCodeDO.setCreateBy(new Long("0")); + materialBarCodeDO.setUpdateBy(new Long("0")); + } + materialBarCodeDO.setCreateByName(userName); + materialBarCodeDO.setUpdateByName(userName); + materialBarCodeDO.setCreateTime(new Date()); + materialBarCodeDO.setUpdateTime(new Date()); + materialBarCodeDO.setDelFlag(1); + } + return materialBarCodeDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java new file mode 100644 index 000000000..7daf41eaf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialBaseInfo/MaterialBaseInfoAssembler.java @@ -0,0 +1,24 @@ +package com.mhd.wms.interfaces.assember.materialBaseInfo; + +import cn.hutool.json.JSONUtil; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.interfaces.dto.materialBaseInfo.MaterialBaseInfoDTO; +import org.springframework.stereotype.Component; + +/** + * 物料基础信息Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialBaseInfoAssembler { + + /** + * 转换实体 + */ + public MaterialBaseInfoDO toDO(MaterialBaseInfoDTO materialBaseInfoDTO) { + return JSONUtil.toBean(JSONUtil.toJsonStr(materialBaseInfoDTO), MaterialBaseInfoDO.class); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialCommon/MaterialCommonAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialCommon/MaterialCommonAssembler.java new file mode 100644 index 000000000..d7c266d6b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialCommon/MaterialCommonAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.materialCommon; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import com.mhd.wms.interfaces.dto.materialCommon.MaterialCommonDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料公共信息Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialCommonAssembler { + + /** + * 转换实体 + */ + public MaterialCommonDO toDO(MaterialCommonDTO materialCommonDTO) { + MaterialCommonDO materialCommonDO = new MaterialCommonDO(); + // 拷贝 + BeanUtils.copyProperties(materialCommonDTO, materialCommonDO, IgnoreNullUtil.getNullPropertyNames(materialCommonDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialCommonDTO.getMaterialCommonId() != null){ + if(userId != null){ + materialCommonDO.setUpdateBy(userId); + }else { + materialCommonDO.setUpdateBy(new Long("0")); + } + materialCommonDO.setUpdateByName(userName); + materialCommonDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + materialCommonDO.setCreateBy(userId); + materialCommonDO.setUpdateBy(userId); + }else { + materialCommonDO.setCreateBy(new Long("0")); + materialCommonDO.setUpdateBy(new Long("0")); + } + materialCommonDO.setCreateByName(userName); + materialCommonDO.setUpdateByName(userName); + materialCommonDO.setCreateTime(new Date()); + materialCommonDO.setUpdateTime(new Date()); + materialCommonDO.setDelFlag(1); + } + return materialCommonDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialGoodsRule/MaterialGoodsRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialGoodsRule/MaterialGoodsRuleAssembler.java new file mode 100644 index 000000000..4cf5ab0fb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialGoodsRule/MaterialGoodsRuleAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.materialGoodsRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.interfaces.dto.materialGoodsRule.MaterialGoodsRuleDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料商品规则Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialGoodsRuleAssembler { + + /** + * 转换实体 + */ + public MaterialGoodsRuleDO toDO(MaterialGoodsRuleDTO materialGoodsRuleDTO) { + MaterialGoodsRuleDO materialGoodsRuleDO = new MaterialGoodsRuleDO(); + // 拷贝 + BeanUtils.copyProperties(materialGoodsRuleDTO, materialGoodsRuleDO, IgnoreNullUtil.getNullPropertyNames(materialGoodsRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialGoodsRuleDTO.getMaterialGoodsRuleId() != null){ + if(userId != null){ + materialGoodsRuleDO.setUpdateBy(userId); + }else { + materialGoodsRuleDO.setUpdateBy(new Long("0")); + } + materialGoodsRuleDO.setUpdateByName(userName); + materialGoodsRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + materialGoodsRuleDO.setCreateBy(userId); + materialGoodsRuleDO.setUpdateBy(userId); + }else { + materialGoodsRuleDO.setCreateBy(new Long("0")); + materialGoodsRuleDO.setUpdateBy(new Long("0")); + } + materialGoodsRuleDO.setCreateByName(userName); + materialGoodsRuleDO.setUpdateByName(userName); + materialGoodsRuleDO.setCreateTime(new Date()); + materialGoodsRuleDO.setUpdateTime(new Date()); + materialGoodsRuleDO.setDelFlag(1); + } + return materialGoodsRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventory/MaterialInventoryAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventory/MaterialInventoryAssembler.java new file mode 100644 index 000000000..4222e0d9b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventory/MaterialInventoryAssembler.java @@ -0,0 +1,73 @@ +package com.mhd.wms.interfaces.assember.materialInventory; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.interfaces.dto.materialInventory.MaterialInventoryDTO; +import com.mhd.wms.interfaces.dto.materialInventory.MaterialInventoryQueryListDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料库存Assembler + * + * @author gen + * @date 2024-05-29 + */ +@Component +public class MaterialInventoryAssembler { + + /** + * 转换实体 + */ + public MaterialInventoryDO toDO(MaterialInventoryDTO materialInventoryDTO) { + MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); + // 拷贝 + BeanUtils.copyProperties(materialInventoryDTO, materialInventoryDO, IgnoreNullUtil.getNullPropertyNames(materialInventoryDTO)); + return materialInventoryDO; + } + + /** + * 转换实体 + */ + public MaterialInventoryDO toDOByEdit(MaterialInventoryDTO materialInventoryDTO) { + MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO(); + // 拷贝 + BeanUtils.copyProperties(materialInventoryDTO, materialInventoryDO, IgnoreNullUtil.getNullPropertyNames(materialInventoryDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialInventoryDTO.getMaterialInventoryId() != null){ + materialInventoryDO.setUpdateBy(userId); + materialInventoryDO.setUpdateByName(userName); + materialInventoryDO.setUpdateTime(new Date()); + }else { + materialInventoryDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialInventoryDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialInventoryDO.setCreateBy(userId); + materialInventoryDO.setCreateByName(userName); + materialInventoryDO.setCreateTime(new Date()); + materialInventoryDO.setDelFlag(1); + } + return materialInventoryDO; + } + + public MaterialInventoryQueryListDO toDOByQueryList(MaterialInventoryQueryListDTO materialInventoryQueryListDTO) { + MaterialInventoryQueryListDO materialInventoryQueryListDO = new MaterialInventoryQueryListDO(); + // 拷贝 + BeanUtils.copyProperties(materialInventoryQueryListDTO, materialInventoryQueryListDO, IgnoreNullUtil.getNullPropertyNames(materialInventoryQueryListDTO)); + return materialInventoryQueryListDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventoryWarning/MaterialInventoryWarningAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventoryWarning/MaterialInventoryWarningAssembler.java new file mode 100644 index 000000000..8e380c9b2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialInventoryWarning/MaterialInventoryWarningAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.materialInventoryWarning; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import com.mhd.wms.interfaces.dto.materialInventoryWarning.MaterialInventoryWarningDTO; +import org.springframework.stereotype.Component; + +/** + * 物料库存预警Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialInventoryWarningAssembler { + + /** + * 转换实体 + */ + public MaterialInventoryWarningDO toDO(MaterialInventoryWarningDTO materialInventoryWarningDTO) { + MaterialInventoryWarningDO materialInventoryWarningDO = new MaterialInventoryWarningDO(); + // 拷贝 + BeanUtils.copyProperties(materialInventoryWarningDTO, materialInventoryWarningDO, IgnoreNullUtil.getNullPropertyNames(materialInventoryWarningDTO)); + return materialInventoryWarningDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialMoreDetail/MaterialMoreDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialMoreDetail/MaterialMoreDetailAssembler.java new file mode 100644 index 000000000..1146b34b0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialMoreDetail/MaterialMoreDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.materialMoreDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.interfaces.dto.materialMoreDetail.MaterialMoreDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料更多属性明细Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class MaterialMoreDetailAssembler { + + /** + * 转换实体 + */ + public MaterialMoreDetailDO toDO(MaterialMoreDetailDTO materialMoreDetailDTO) { + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + // 拷贝 + BeanUtils.copyProperties(materialMoreDetailDTO, materialMoreDetailDO, IgnoreNullUtil.getNullPropertyNames(materialMoreDetailDTO)); + return materialMoreDetailDO; + } + + /** + * 转换实体 + */ + public MaterialMoreDetailDO toDOByEdit(MaterialMoreDetailDTO materialMoreDetailDTO) { + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + // 拷贝 + BeanUtils.copyProperties(materialMoreDetailDTO, materialMoreDetailDO, IgnoreNullUtil.getNullPropertyNames(materialMoreDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialMoreDetailDTO.getMaterialMoreDetailId() != null){ + materialMoreDetailDO.setUpdateBy(userId); + materialMoreDetailDO.setUpdateByName(userName); + materialMoreDetailDO.setUpdateTime(new Date()); + }else { + materialMoreDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + materialMoreDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + materialMoreDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + materialMoreDetailDO.setCreateBy(userId); + materialMoreDetailDO.setCreateByName(userName); + materialMoreDetailDO.setCreateTime(new Date()); + materialMoreDetailDO.setDelFlag(1); + } + return materialMoreDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialWarehouseControl/MaterialWarehouseControlAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialWarehouseControl/MaterialWarehouseControlAssembler.java new file mode 100644 index 000000000..34ed7dd97 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/materialWarehouseControl/MaterialWarehouseControlAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.materialWarehouseControl; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import com.mhd.wms.interfaces.dto.materialWarehouseControl.MaterialWarehouseControlDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 仓库控制信息Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class MaterialWarehouseControlAssembler { + + /** + * 转换实体 + */ + public MaterialWarehouseControlDO toDO(MaterialWarehouseControlDTO materialWarehouseControlDTO) { + MaterialWarehouseControlDO materialWarehouseControlDO = new MaterialWarehouseControlDO(); + // 拷贝 + BeanUtils.copyProperties(materialWarehouseControlDTO, materialWarehouseControlDO, IgnoreNullUtil.getNullPropertyNames(materialWarehouseControlDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(materialWarehouseControlDTO.getMaterialWarehouseControlId() != null){ + if(userId != null){ + materialWarehouseControlDO.setUpdateBy(userId); + }else { + materialWarehouseControlDO.setUpdateBy(new Long("0")); + } + materialWarehouseControlDO.setUpdateByName(userName); + materialWarehouseControlDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + materialWarehouseControlDO.setCreateBy(userId); + materialWarehouseControlDO.setUpdateBy(userId); + }else { + materialWarehouseControlDO.setCreateBy(new Long("0")); + materialWarehouseControlDO.setUpdateBy(new Long("0")); + } + materialWarehouseControlDO.setCreateByName(userName); + materialWarehouseControlDO.setUpdateByName(userName); + materialWarehouseControlDO.setCreateTime(new Date()); + materialWarehouseControlDO.setUpdateTime(new Date()); + materialWarehouseControlDO.setDelFlag(1); + } + return materialWarehouseControlDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManage/MobilizeManageAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManage/MobilizeManageAssembler.java new file mode 100644 index 000000000..8af3e8fe2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManage/MobilizeManageAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.mobilizeManage; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; +import com.mhd.wms.interfaces.dto.mobilizeManage.MobilizeManageDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 调拨管理Assembler + * + * @author gen + * @date 2024-07-08 + */ +@Component +public class MobilizeManageAssembler { + + /** + * 转换实体 + */ + public MobilizeManageDO toDO(MobilizeManageDTO mobilizeManageDTO) { + MobilizeManageDO mobilizeManageDO = new MobilizeManageDO(); + // 拷贝 + BeanUtils.copyProperties(mobilizeManageDTO, mobilizeManageDO, IgnoreNullUtil.getNullPropertyNames(mobilizeManageDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(mobilizeManageDTO.getMobilizeManageId() != null){ + if(userId != null){ + mobilizeManageDO.setUpdateBy(userId); + }else { + mobilizeManageDO.setUpdateBy(new Long("0")); + } + mobilizeManageDO.setUpdateByName(userName); + mobilizeManageDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + mobilizeManageDO.setCreateBy(userId); + mobilizeManageDO.setUpdateBy(userId); + }else { + mobilizeManageDO.setCreateBy(new Long("0")); + mobilizeManageDO.setUpdateBy(new Long("0")); + } + mobilizeManageDO.setCreateByName(userName); + mobilizeManageDO.setUpdateByName(userName); + mobilizeManageDO.setCreateTime(new Date()); + mobilizeManageDO.setUpdateTime(new Date()); + mobilizeManageDO.setDelFlag(1); + } + return mobilizeManageDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManageDetail/MobilizeManageDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManageDetail/MobilizeManageDetailAssembler.java new file mode 100644 index 000000000..07e842ceb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/mobilizeManageDetail/MobilizeManageDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.mobilizeManageDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.interfaces.dto.mobilizeManageDetail.MobilizeManageDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 调拨管理详情Assembler + * + * @author gen + * @date 2024-07-08 + */ +@Component +public class MobilizeManageDetailAssembler { + + /** + * 转换实体 + */ + public MobilizeManageDetailDO toDO(MobilizeManageDetailDTO mobilizeManageDetailDTO) { + MobilizeManageDetailDO mobilizeManageDetailDO = new MobilizeManageDetailDO(); + // 拷贝 + BeanUtils.copyProperties(mobilizeManageDetailDTO, mobilizeManageDetailDO, IgnoreNullUtil.getNullPropertyNames(mobilizeManageDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(mobilizeManageDetailDTO.getMobilizeMaterialDetailId() != null){ + if(userId != null){ + mobilizeManageDetailDO.setUpdateBy(userId); + }else { + mobilizeManageDetailDO.setUpdateBy(new Long("0")); + } + mobilizeManageDetailDO.setUpdateByName(userName); + mobilizeManageDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + mobilizeManageDetailDO.setCreateBy(userId); + mobilizeManageDetailDO.setUpdateBy(userId); + }else { + mobilizeManageDetailDO.setCreateBy(new Long("0")); + mobilizeManageDetailDO.setUpdateBy(new Long("0")); + } + mobilizeManageDetailDO.setCreateByName(userName); + mobilizeManageDetailDO.setUpdateByName(userName); + mobilizeManageDetailDO.setCreateTime(new Date()); + mobilizeManageDetailDO.setUpdateTime(new Date()); + mobilizeManageDetailDO.setDelFlag(1); + } + return mobilizeManageDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeMaterialDetail/NoticeMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeMaterialDetail/NoticeMaterialDetailAssembler.java new file mode 100644 index 000000000..53d4b90a4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeMaterialDetail/NoticeMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.noticeMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import com.mhd.wms.interfaces.dto.noticeMaterialDetail.NoticeMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料明细Assembler + * + * @author gen + * @date 2024-06-17 + */ +@Component +public class NoticeMaterialDetailAssembler { + + /** + * 转换实体 + */ + public NoticeMaterialDetailDO toDO(NoticeMaterialDetailDTO noticeMaterialDetailDTO) { + NoticeMaterialDetailDO noticeMaterialDetailDO = new NoticeMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(noticeMaterialDetailDTO, noticeMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(noticeMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(noticeMaterialDetailDTO.getNoticeMaterialDetailId() != null){ + if(userId != null){ + noticeMaterialDetailDO.setUpdateBy(userId); + }else { + noticeMaterialDetailDO.setUpdateBy(new Long("0")); + } + noticeMaterialDetailDO.setUpdateByName(userName); + noticeMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + noticeMaterialDetailDO.setCreateBy(userId); + noticeMaterialDetailDO.setUpdateBy(userId); + }else { + noticeMaterialDetailDO.setCreateBy(new Long("0")); + noticeMaterialDetailDO.setUpdateBy(new Long("0")); + } + noticeMaterialDetailDO.setCreateByName(userName); + noticeMaterialDetailDO.setUpdateByName(userName); + noticeMaterialDetailDO.setCreateTime(new Date()); + noticeMaterialDetailDO.setUpdateTime(new Date()); + noticeMaterialDetailDO.setDelFlag(1); + } + return noticeMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeOrder/NoticeOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeOrder/NoticeOrderAssembler.java new file mode 100644 index 000000000..57b4c7e11 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/noticeOrder/NoticeOrderAssembler.java @@ -0,0 +1,78 @@ +package com.mhd.wms.interfaces.assember.noticeOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; +import com.mhd.wms.interfaces.dto.noticeMaterialDetail.NoticeMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.noticeOrder.NoticeOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 入库通知单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class NoticeOrderAssembler { + + /** + * 转换实体 + */ + public NoticeOrderDO toDO(NoticeOrderDTO noticeOrderDTO) { + NoticeOrderDO noticeOrderDO = new NoticeOrderDO(); + // 拷贝 + BeanUtils.copyProperties(noticeOrderDTO, noticeOrderDO, IgnoreNullUtil.getNullPropertyNames(noticeOrderDTO)); + return noticeOrderDO; + } + + /** + * 转换实体 + */ + public NoticeOrderDO toDOByEdit(NoticeOrderDTO noticeOrderDTO) { + NoticeOrderDO noticeOrderDO = new NoticeOrderDO(); + // 拷贝 + BeanUtils.copyProperties(noticeOrderDTO, noticeOrderDO, IgnoreNullUtil.getNullPropertyNames(noticeOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(noticeOrderDTO.getNoticeId() != null){ + noticeOrderDO.setUpdateBy(userId); + noticeOrderDO.setUpdateByName(userName); + noticeOrderDO.setUpdateTime(new Date()); + }else { + noticeOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + noticeOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + noticeOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + noticeOrderDO.setCreateBy(userId); + noticeOrderDO.setCreateByName(userName); + noticeOrderDO.setCreateTime(new Date()); + noticeOrderDO.setDelFlag(1); + } + List materialDetailList = new ArrayList<>(); + if (noticeOrderDTO.getMaterialDetailList() != null && !noticeOrderDTO.getMaterialDetailList().isEmpty()) { + for (NoticeMaterialDetailDTO noticeMaterialDetailDTO :noticeOrderDTO.getMaterialDetailList()) { + NoticeMaterialDetailDO noticeMaterialDetailDO = new NoticeMaterialDetailDO(); + BeanUtils.copyProperties(noticeMaterialDetailDTO, noticeMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(noticeOrderDTO)); + materialDetailList.add(noticeMaterialDetailDO); + } + } + noticeOrderDO.setMaterialDetailList(materialDetailList); + return noticeOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberAssembler.java new file mode 100644 index 000000000..804ef5cd4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.outMaterialDetailSerialNumber; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 出库单物料明细序列号Assembler + * + * @author gen + * @date 2024-06-03 + */ +@Component +public class OutMaterialDetailSerialNumberAssembler { + + /** + * 转换实体 + */ + public OutMaterialDetailSerialNumberDO toDO(OutMaterialDetailSerialNumberDTO outMaterialDetailSerialNumberDTO) { + OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = new OutMaterialDetailSerialNumberDO(); + // 拷贝 + BeanUtils.copyProperties(outMaterialDetailSerialNumberDTO, outMaterialDetailSerialNumberDO, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailSerialNumberDTO)); + return outMaterialDetailSerialNumberDO; + } + + /** + * 转换实体 + */ + public OutMaterialDetailSerialNumberDO toDOByEdit(OutMaterialDetailSerialNumberDTO outMaterialDetailSerialNumberDTO) { + OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = new OutMaterialDetailSerialNumberDO(); + // 拷贝 + BeanUtils.copyProperties(outMaterialDetailSerialNumberDTO, outMaterialDetailSerialNumberDO, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailSerialNumberDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(outMaterialDetailSerialNumberDTO.getOutMaterialDetailSerialNumberId() != null){ + outMaterialDetailSerialNumberDO.setUpdateBy(userId); + outMaterialDetailSerialNumberDO.setUpdateByName(userName); + outMaterialDetailSerialNumberDO.setUpdateTime(new Date()); + }else { + outMaterialDetailSerialNumberDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outMaterialDetailSerialNumberDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + outMaterialDetailSerialNumberDO.setCreateBy(userId); + outMaterialDetailSerialNumberDO.setCreateByName(userName); + outMaterialDetailSerialNumberDO.setCreateTime(new Date()); + outMaterialDetailSerialNumberDO.setDelFlag(1); + } + return outMaterialDetailSerialNumberDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outOrderAbnormal/OutOrderAbnormalAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outOrderAbnormal/OutOrderAbnormalAssembler.java new file mode 100644 index 000000000..49287306e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/outOrderAbnormal/OutOrderAbnormalAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.outOrderAbnormal; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; +import com.mhd.wms.interfaces.dto.outOrderAbnormal.OutOrderAbnormalDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 出库异常单Assembler + * + * @author gen + * @date 2024-05-28 + */ +@Component +public class OutOrderAbnormalAssembler { + + /** + * 转换实体 + */ + public OutOrderAbnormalDO toDO(OutOrderAbnormalDTO outOrderAbnormalDTO) { + OutOrderAbnormalDO outOrderAbnormalDO = new OutOrderAbnormalDO(); + // 拷贝 + BeanUtils.copyProperties(outOrderAbnormalDTO, outOrderAbnormalDO, IgnoreNullUtil.getNullPropertyNames(outOrderAbnormalDTO)); + return outOrderAbnormalDO; + } + + /** + * 转换实体 + */ + public OutOrderAbnormalDO toDOByEdit(OutOrderAbnormalDTO outOrderAbnormalDTO) { + OutOrderAbnormalDO outOrderAbnormalDO = new OutOrderAbnormalDO(); + // 拷贝 + BeanUtils.copyProperties(outOrderAbnormalDTO, outOrderAbnormalDO, IgnoreNullUtil.getNullPropertyNames(outOrderAbnormalDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(outOrderAbnormalDTO.getOutOrderAbnormalId() != null){ + outOrderAbnormalDO.setUpdateBy(userId); + outOrderAbnormalDO.setUpdateByName(userName); + outOrderAbnormalDO.setUpdateTime(new Date()); + }else { + outOrderAbnormalDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + outOrderAbnormalDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + outOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + outOrderAbnormalDO.setCreateBy(userId); + outOrderAbnormalDO.setCreateByName(userName); + outOrderAbnormalDO.setCreateTime(new Date()); + outOrderAbnormalDO.setDelFlag(1); + } + return outOrderAbnormalDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/overStock/OverStockAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/overStock/OverStockAssembler.java new file mode 100644 index 000000000..4b75ee2c2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/overStock/OverStockAssembler.java @@ -0,0 +1,46 @@ +package com.mhd.wms.interfaces.assember.overStock; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.interfaces.dto.overStock.ExecuteOverStockDTO; +import com.mhd.wms.interfaces.dto.overStock.OverStockDTO; +import com.mhd.wms.interfaces.dto.overStock.QueryOrderOverStockDTO; +import org.springframework.stereotype.Component; + +/** + * 越库管理Assembler + * + * @author gen + * @date 2024-07-23 + */ +@Component +public class OverStockAssembler { + + /** + * 转换实体 + */ + public OverStockDO toDO(OverStockDTO overStockDTO) { + OverStockDO overStockDO = new OverStockDO(); + // 拷贝 + BeanUtils.copyProperties(overStockDTO, overStockDO, IgnoreNullUtil.getNullPropertyNames(overStockDTO)); + return overStockDO; + } + + + public QueryOrderOverStockDO toDOByQueryOrder(QueryOrderOverStockDTO queryOrderOverStockDTO) { + QueryOrderOverStockDO queryOrderOverStockDO = new QueryOrderOverStockDO(); + // 拷贝 + BeanUtils.copyProperties(queryOrderOverStockDTO, queryOrderOverStockDO, IgnoreNullUtil.getNullPropertyNames(queryOrderOverStockDTO)); + return queryOrderOverStockDO; + } + + public ExecuteOverStockDO toDOByExecuteOverStock(ExecuteOverStockDTO executeOverStockDTO) { + ExecuteOverStockDO executeOverStockDO = new ExecuteOverStockDO(); + //拷贝 + BeanUtils.copyProperties(executeOverStockDTO,executeOverStockDO, IgnoreNullUtil.getNullPropertyNames(executeOverStockDTO)); + return executeOverStockDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/pickingOrder/PickingOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/pickingOrder/PickingOrderAssembler.java new file mode 100644 index 000000000..6b43e2826 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/pickingOrder/PickingOrderAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.pickingOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.interfaces.dto.pickingOrder.PickingOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 拣货单Assembler + * + * @author gen + * @date 2024-05-28 + */ +@Component +public class PickingOrderAssembler { + + /** + * 转换实体 + */ + public PickingOrderDO toDO(PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + // 拷贝 + BeanUtils.copyProperties(pickingOrderDTO, pickingOrderDO, IgnoreNullUtil.getNullPropertyNames(pickingOrderDTO)); + return pickingOrderDO; + } + + /** + * 转换实体 + */ + public PickingOrderDO toDOByEdit(PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = new PickingOrderDO(); + // 拷贝 + BeanUtils.copyProperties(pickingOrderDTO, pickingOrderDO, IgnoreNullUtil.getNullPropertyNames(pickingOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(pickingOrderDTO.getPickingOrderId() != null){ + pickingOrderDO.setUpdateBy(userId); + pickingOrderDO.setUpdateByName(userName); + pickingOrderDO.setUpdateTime(new Date()); + }else { + pickingOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + pickingOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + pickingOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + pickingOrderDO.setCreateBy(userId); + pickingOrderDO.setCreateByName(userName); + pickingOrderDO.setCreateTime(new Date()); + pickingOrderDO.setDelFlag(1); + } + return pickingOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRule/PutawayRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRule/PutawayRuleAssembler.java new file mode 100644 index 000000000..51e262b71 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRule/PutawayRuleAssembler.java @@ -0,0 +1,89 @@ +package com.mhd.wms.interfaces.assember.putawayRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import com.mhd.wms.interfaces.dto.putawayRule.PutawayRuleDTO; +import com.mhd.wms.interfaces.dto.putawayRuleDetail.PutawayRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 上架规则Assembler + * + * @author gen + * @date 2024-07-19 + */ +@Component +public class PutawayRuleAssembler { + + /** + * 转换实体 + */ + public PutawayRuleDO toDO(PutawayRuleDTO putawayRuleDTO) { + PutawayRuleDO putawayRuleDO = new PutawayRuleDO(); + // 拷贝 + BeanUtils.copyProperties(putawayRuleDTO, putawayRuleDO, IgnoreNullUtil.getNullPropertyNames(putawayRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + List putawayRuleDetailDTOS = putawayRuleDTO.getPutawayRuleDetailList(); + if(putawayRuleDTO.getId() != null){ + if(userId != null){ + putawayRuleDO.setUpdateBy(userId); + }else { + putawayRuleDO.setUpdateBy(new Long("0")); + } + putawayRuleDO.setUpdateByName(userName); + putawayRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + putawayRuleDO.setCreateBy(userId); + putawayRuleDO.setUpdateBy(userId); + }else { + putawayRuleDO.setCreateBy(new Long("0")); + putawayRuleDO.setUpdateBy(new Long("0")); + } + putawayRuleDO.setCreateByName(userName); + putawayRuleDO.setUpdateByName(userName); + putawayRuleDO.setCreateTime(new Date()); + putawayRuleDO.setUpdateTime(new Date()); + putawayRuleDO.setDelFlag(1); + } + List putawayRuleDetailDOS = putawayRuleDetailDTOS.stream().map(putawayRuleDetailDTO -> { + PutawayRuleDetailDO putawayRuleDetailDO = new PutawayRuleDetailDO(); + BeanUtils.copyProperties(putawayRuleDetailDTO, putawayRuleDetailDO); + if(userId != null){ + putawayRuleDetailDO.setCreateBy(userId); + putawayRuleDetailDO.setUpdateBy(userId); + }else { + putawayRuleDetailDO.setCreateBy(new Long("0")); + putawayRuleDetailDO.setUpdateBy(new Long("0")); + } + putawayRuleDetailDO.setCreateByName(userName); + putawayRuleDetailDO.setUpdateByName(userName); + putawayRuleDetailDO.setCreateTime(new Date()); + putawayRuleDetailDO.setUpdateTime(new Date()); + putawayRuleDetailDO.setDelFlag(1); + return putawayRuleDetailDO; + }).collect(Collectors.toList()); + putawayRuleDO.setPutawayRuleDetailDOS(putawayRuleDetailDOS); + + return putawayRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRuleDetail/PutawayRuleDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRuleDetail/PutawayRuleDetailAssembler.java new file mode 100644 index 000000000..dabc8c67c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/putawayRuleDetail/PutawayRuleDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.putawayRuleDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import com.mhd.wms.interfaces.dto.putawayRuleDetail.PutawayRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 上架规则明细Assembler + * + * @author gen + * @date 2024-07-20 + */ +@Component +public class PutawayRuleDetailAssembler { + + /** + * 转换实体 + */ + public PutawayRuleDetailDO toDO(PutawayRuleDetailDTO putawayRuleDetailDTO) { + PutawayRuleDetailDO putawayRuleDetailDO = new PutawayRuleDetailDO(); + // 拷贝 + BeanUtils.copyProperties(putawayRuleDetailDTO, putawayRuleDetailDO, IgnoreNullUtil.getNullPropertyNames(putawayRuleDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(putawayRuleDetailDTO.getId() != null){ + if(userId != null){ + putawayRuleDetailDO.setUpdateBy(userId); + }else { + putawayRuleDetailDO.setUpdateBy(new Long("0")); + } + putawayRuleDetailDO.setUpdateByName(userName); + putawayRuleDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + putawayRuleDetailDO.setCreateBy(userId); + putawayRuleDetailDO.setUpdateBy(userId); + }else { + putawayRuleDetailDO.setCreateBy(new Long("0")); + putawayRuleDetailDO.setUpdateBy(new Long("0")); + } + putawayRuleDetailDO.setCreateByName(userName); + putawayRuleDetailDO.setUpdateByName(userName); + putawayRuleDetailDO.setCreateTime(new Date()); + putawayRuleDetailDO.setUpdateTime(new Date()); + putawayRuleDetailDO.setDelFlag(1); + } + return putawayRuleDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRule/QcRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRule/QcRuleAssembler.java new file mode 100644 index 000000000..60554ac8a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRule/QcRuleAssembler.java @@ -0,0 +1,90 @@ +package com.mhd.wms.interfaces.assember.qcRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import com.mhd.wms.interfaces.dto.qcRule.QcRuleDTO; +import com.mhd.wms.interfaces.dto.qcRuleDetail.QcRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 质检规则Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class QcRuleAssembler { + + /** + * 转换实体 + */ + public QcRuleDO toDO(QcRuleDTO qcRuleDTO) { + QcRuleDO qcRuleDO = new QcRuleDO(); + // 拷贝 + BeanUtils.copyProperties(qcRuleDTO, qcRuleDO, IgnoreNullUtil.getNullPropertyNames(qcRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(qcRuleDTO.getId() != null){ + if(userId != null){ + qcRuleDO.setUpdateBy(userId); + }else { + qcRuleDO.setUpdateBy(new Long("0")); + } + qcRuleDO.setUpdateByName(userName); + qcRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + qcRuleDO.setCreateBy(userId); + qcRuleDO.setUpdateBy(userId); + }else { + qcRuleDO.setCreateBy(new Long("0")); + qcRuleDO.setUpdateBy(new Long("0")); + } + qcRuleDO.setCreateByName(userName); + qcRuleDO.setUpdateByName(userName); + qcRuleDO.setCreateTime(new Date()); + qcRuleDO.setUpdateTime(new Date()); + qcRuleDO.setDelFlag(1); + } + + List qcRuleDetailDTOS = qcRuleDTO.getQcRuleDetailList(); + List qcRuleDetailDOS = qcRuleDetailDTOS.stream().map(qcRuleDetailDTO -> { + QcRuleDetailDO qcRuleDetailDO = new QcRuleDetailDO(); + BeanUtils.copyProperties(qcRuleDetailDTO, qcRuleDetailDO); + if (userId != null) { + qcRuleDetailDO.setCreateBy(userId); + qcRuleDetailDO.setUpdateBy(userId); + } else { + qcRuleDetailDO.setCreateBy(new Long("0")); + qcRuleDetailDO.setUpdateBy(new Long("0")); + } + qcRuleDetailDO.setCreateByName(userName); + qcRuleDetailDO.setUpdateByName(userName); + qcRuleDetailDO.setCreateTime(new Date()); + qcRuleDetailDO.setUpdateTime(new Date()); + qcRuleDetailDO.setDelFlag(1); + return qcRuleDetailDO; + }).collect(Collectors.toList()); + qcRuleDO.setQcRuleDetailDOS(qcRuleDetailDOS); + + return qcRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRuleDetail/QcRuleDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRuleDetail/QcRuleDetailAssembler.java new file mode 100644 index 000000000..b5657b48a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qcRuleDetail/QcRuleDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.qcRuleDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import com.mhd.wms.interfaces.dto.qcRuleDetail.QcRuleDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 质检规则明细Assembler + * + * @author gen + * @date 2024-07-22 + */ +@Component +public class QcRuleDetailAssembler { + + /** + * 转换实体 + */ + public QcRuleDetailDO toDO(QcRuleDetailDTO qcRuleDetailDTO) { + QcRuleDetailDO qcRuleDetailDO = new QcRuleDetailDO(); + // 拷贝 + BeanUtils.copyProperties(qcRuleDetailDTO, qcRuleDetailDO, IgnoreNullUtil.getNullPropertyNames(qcRuleDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(qcRuleDetailDTO.getId() != null){ + if(userId != null){ + qcRuleDetailDO.setUpdateBy(userId); + }else { + qcRuleDetailDO.setUpdateBy(new Long("0")); + } + qcRuleDetailDO.setUpdateByName(userName); + qcRuleDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + qcRuleDetailDO.setCreateBy(userId); + qcRuleDetailDO.setUpdateBy(userId); + }else { + qcRuleDetailDO.setCreateBy(new Long("0")); + qcRuleDetailDO.setUpdateBy(new Long("0")); + } + qcRuleDetailDO.setCreateByName(userName); + qcRuleDetailDO.setUpdateByName(userName); + qcRuleDetailDO.setCreateTime(new Date()); + qcRuleDetailDO.setUpdateTime(new Date()); + qcRuleDetailDO.setDelFlag(1); + } + return qcRuleDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qualityInspection/QualityInspectionAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qualityInspection/QualityInspectionAssembler.java new file mode 100644 index 000000000..520d64905 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/qualityInspection/QualityInspectionAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.qualityInspection; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import com.mhd.wms.interfaces.dto.qualityInspection.QualityInspectionDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 质检管理Assembler + * + * @author gen + * @date 2024-05-25 + */ +@Component +public class QualityInspectionAssembler { + + /** + * 转换实体 + */ + public QualityInspectionDO toDO(QualityInspectionDTO qualityInspectionDTO) { + QualityInspectionDO qualityInspectionDO = new QualityInspectionDO(); + // 拷贝 + BeanUtils.copyProperties(qualityInspectionDTO, qualityInspectionDO, IgnoreNullUtil.getNullPropertyNames(qualityInspectionDTO)); + return qualityInspectionDO; + } + + /** + * 转换实体 + */ + public QualityInspectionDO toDOByEdit(QualityInspectionDTO qualityInspectionDTO) { + QualityInspectionDO qualityInspectionDO = new QualityInspectionDO(); + // 拷贝 + BeanUtils.copyProperties(qualityInspectionDTO, qualityInspectionDO, IgnoreNullUtil.getNullPropertyNames(qualityInspectionDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(qualityInspectionDTO.getQualityInspectionId() != null){ + qualityInspectionDO.setUpdateBy(userId); + qualityInspectionDO.setUpdateByName(userName); + qualityInspectionDO.setUpdateTime(new Date()); + }else { + qualityInspectionDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + qualityInspectionDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + qualityInspectionDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + qualityInspectionDO.setCreateBy(userId); + qualityInspectionDO.setCreateByName(userName); + qualityInspectionDO.setCreateTime(new Date()); + qualityInspectionDO.setDelFlag(1); + } + return qualityInspectionDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/receiptMaterialDetail/ReceiptMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/receiptMaterialDetail/ReceiptMaterialDetailAssembler.java new file mode 100644 index 000000000..7e97abab5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/receiptMaterialDetail/ReceiptMaterialDetailAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.receiptMaterialDetail; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.interfaces.dto.receiptMaterialDetail.ReceiptMaterialDetailDTO; +import org.springframework.stereotype.Component; + +/** + * 物料明细Assembler + * + * @author gen + * @date 2024-06-17 + */ +@Component +public class ReceiptMaterialDetailAssembler { + + /** + * 转换实体 + */ + public ReceiptMaterialDetailDO toDO(ReceiptMaterialDetailDTO receiptMaterialDetailDTO) { + ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(receiptMaterialDetailDTO, receiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDTO)); + return receiptMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/replenishmentNotice/ReplenishmentNoticeAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/replenishmentNotice/ReplenishmentNoticeAssembler.java new file mode 100644 index 000000000..36e3c6803 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/replenishmentNotice/ReplenishmentNoticeAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.replenishmentNotice; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import com.mhd.wms.interfaces.dto.replenishmentNotice.ReplenishmentNoticeDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 补货通知单Assembler + * + * @author gen + * @date 2024-06-11 + */ +@Component +public class ReplenishmentNoticeAssembler { + + /** + * 转换实体 + */ + public ReplenishmentNoticeDO toDO(ReplenishmentNoticeDTO replenishmentNoticeDTO) { + ReplenishmentNoticeDO replenishmentNoticeDO = new ReplenishmentNoticeDO(); + // 拷贝 + BeanUtils.copyProperties(replenishmentNoticeDTO, replenishmentNoticeDO, IgnoreNullUtil.getNullPropertyNames(replenishmentNoticeDTO)); + return replenishmentNoticeDO; + } + + /** + * 转换实体 + */ + public ReplenishmentNoticeDO toDOByEdit(ReplenishmentNoticeDTO replenishmentNoticeDTO) { + ReplenishmentNoticeDO replenishmentNoticeDO = new ReplenishmentNoticeDO(); + // 拷贝 + BeanUtils.copyProperties(replenishmentNoticeDTO, replenishmentNoticeDO, IgnoreNullUtil.getNullPropertyNames(replenishmentNoticeDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(replenishmentNoticeDTO.getReplenishmentNoticeId() != null){ + replenishmentNoticeDO.setUpdateBy(userId); + replenishmentNoticeDO.setUpdateByName(userName); + replenishmentNoticeDO.setUpdateTime(new Date()); + }else { + replenishmentNoticeDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + replenishmentNoticeDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + replenishmentNoticeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + replenishmentNoticeDO.setCreateBy(userId); + replenishmentNoticeDO.setCreateByName(userName); + replenishmentNoticeDO.setCreateTime(new Date()); + replenishmentNoticeDO.setDelFlag(1); + } + return replenishmentNoticeDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/serialNumber/SerialNumberAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/serialNumber/SerialNumberAssembler.java new file mode 100644 index 000000000..27b4dd5c6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/serialNumber/SerialNumberAssembler.java @@ -0,0 +1,28 @@ +package com.mhd.wms.interfaces.assember.serialNumber; + +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; +import com.mhd.wms.interfaces.dto.serialNumber.SerialNumberDTO; +import org.springframework.stereotype.Component; + +/** + * 序列号Assembler + * + * @author gen + * @date 2024-07-19 + */ +@Component +public class SerialNumberAssembler { + + /** + * 转换实体 + */ + public SerialNumberDO toDO(SerialNumberDTO serialNumberDTO) { + SerialNumberDO serialNumberDO = new SerialNumberDO(); + // 拷贝 + BeanUtils.copyProperties(serialNumberDTO, serialNumberDO, IgnoreNullUtil.getNullPropertyNames(serialNumberDTO)); + return serialNumberDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shelfMaterialDetail/ShelfMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shelfMaterialDetail/ShelfMaterialDetailAssembler.java new file mode 100644 index 000000000..4aa53ace5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shelfMaterialDetail/ShelfMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.shelfMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.interfaces.dto.shelfMaterialDetail.ShelfMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 物料明细Assembler + * + * @author gen + * @date 2024-06-17 + */ +@Component +public class ShelfMaterialDetailAssembler { + + /** + * 转换实体 + */ + public ShelfMaterialDetailDO toDO(ShelfMaterialDetailDTO shelfMaterialDetailDTO) { + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(shelfMaterialDetailDTO, shelfMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(shelfMaterialDetailDTO.getMaterialDetailId() != null){ + if(userId != null){ + shelfMaterialDetailDO.setUpdateBy(userId); + }else { + shelfMaterialDetailDO.setUpdateBy(new Long("0")); + } + shelfMaterialDetailDO.setUpdateByName(userName); + shelfMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + shelfMaterialDetailDO.setCreateBy(userId); + shelfMaterialDetailDO.setUpdateBy(userId); + }else { + shelfMaterialDetailDO.setCreateBy(new Long("0")); + shelfMaterialDetailDO.setUpdateBy(new Long("0")); + } + shelfMaterialDetailDO.setCreateByName(userName); + shelfMaterialDetailDO.setUpdateByName(userName); + shelfMaterialDetailDO.setCreateTime(new Date()); + shelfMaterialDetailDO.setUpdateTime(new Date()); + shelfMaterialDetailDO.setDelFlag(1); + } + return shelfMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftManage/ShiftManageAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftManage/ShiftManageAssembler.java new file mode 100644 index 000000000..e71d0ae6e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftManage/ShiftManageAssembler.java @@ -0,0 +1,24 @@ +package com.mhd.wms.interfaces.assember.shiftManage; + +import cn.hutool.json.JSONUtil; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.interfaces.dto.shiftManage.ShiftManageDTO; +import org.springframework.stereotype.Component; + +/** + * 移位管理Assembler + * + * @author gen + * @date 2024-07-02 + */ +@Component +public class ShiftManageAssembler { + + /** + * 转换实体 + */ + public ShiftManageDO toDO(ShiftManageDTO shiftManageDTO) { + return JSONUtil.toBean(JSONUtil.toJsonStr(shiftManageDTO), ShiftManageDO.class); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftMaterialDetail/ShiftMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftMaterialDetail/ShiftMaterialDetailAssembler.java new file mode 100644 index 000000000..bb75520ff --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/shiftMaterialDetail/ShiftMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.shiftMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import com.mhd.wms.interfaces.dto.shiftMaterialDetail.ShiftMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 移位物料明细Assembler + * + * @author gen + * @date 2024-07-02 + */ +@Component +public class ShiftMaterialDetailAssembler { + + /** + * 转换实体 + */ + public ShiftMaterialDetailDO toDO(ShiftMaterialDetailDTO shiftMaterialDetailDTO) { + ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(shiftMaterialDetailDTO, shiftMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shiftMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + UserPo userPo = loginUser.getUserPo(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(shiftMaterialDetailDTO.getShiftIoDetailId() != null){ + if(userId != null){ + shiftMaterialDetailDO.setUpdateBy(userId); + }else { + shiftMaterialDetailDO.setUpdateBy(new Long("0")); + } + shiftMaterialDetailDO.setUpdateByName(userName); + shiftMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + shiftMaterialDetailDO.setCreateBy(userId); + shiftMaterialDetailDO.setUpdateBy(userId); + }else { + shiftMaterialDetailDO.setCreateBy(new Long("0")); + shiftMaterialDetailDO.setUpdateBy(new Long("0")); + } + shiftMaterialDetailDO.setCreateTime(new Date()); + shiftMaterialDetailDO.setUpdateTime(new Date()); + shiftMaterialDetailDO.setDelFlag(1); + } + return shiftMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingDistributionDetails/SowingDistributionDetailsAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingDistributionDetails/SowingDistributionDetailsAssembler.java new file mode 100644 index 000000000..e10285529 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingDistributionDetails/SowingDistributionDetailsAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.sowingDistributionDetails; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.interfaces.dto.sowingDistributionDetails.SowingDistributionDetailsDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 播种分货明细表Assembler + * + * @author gen + * @date 2024-06-05 + */ +@Component +public class SowingDistributionDetailsAssembler { + + /** + * 转换实体 + */ + public SowingDistributionDetailsDO toDO(SowingDistributionDetailsDTO sowingDistributionDetailsDTO) { + SowingDistributionDetailsDO sowingDistributionDetailsDO = new SowingDistributionDetailsDO(); + // 拷贝 + BeanUtils.copyProperties(sowingDistributionDetailsDTO, sowingDistributionDetailsDO, IgnoreNullUtil.getNullPropertyNames(sowingDistributionDetailsDTO)); + return sowingDistributionDetailsDO; + } + + /** + * 转换实体 + */ + public SowingDistributionDetailsDO toDOByEdit(SowingDistributionDetailsDTO sowingDistributionDetailsDTO) { + SowingDistributionDetailsDO sowingDistributionDetailsDO = new SowingDistributionDetailsDO(); + // 拷贝 + BeanUtils.copyProperties(sowingDistributionDetailsDTO, sowingDistributionDetailsDO, IgnoreNullUtil.getNullPropertyNames(sowingDistributionDetailsDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(sowingDistributionDetailsDTO.getSowingDistributionDetailsId() != null){ + sowingDistributionDetailsDO.setUpdateBy(userId); + sowingDistributionDetailsDO.setUpdateByName(userName); + sowingDistributionDetailsDO.setUpdateTime(new Date()); + }else { + sowingDistributionDetailsDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + sowingDistributionDetailsDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + sowingDistributionDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + sowingDistributionDetailsDO.setCreateBy(userId); + sowingDistributionDetailsDO.setCreateByName(userName); + sowingDistributionDetailsDO.setCreateTime(new Date()); + sowingDistributionDetailsDO.setDelFlag(1); + } + return sowingDistributionDetailsDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingWall/SowingWallAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingWall/SowingWallAssembler.java new file mode 100644 index 000000000..eb2a695d1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/sowingWall/SowingWallAssembler.java @@ -0,0 +1,66 @@ +package com.mhd.wms.interfaces.assember.sowingWall; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; +import com.mhd.wms.interfaces.dto.sowingWall.SowingWallDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 播种墙管理Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class SowingWallAssembler { + + /** + * 转换实体 + */ + public SowingWallDO toDO(SowingWallDTO sowingWallDTO) { + SowingWallDO sowingWallDO = new SowingWallDO(); + // 拷贝 + BeanUtils.copyProperties(sowingWallDTO, sowingWallDO, IgnoreNullUtil.getNullPropertyNames(sowingWallDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + return sowingWallDO; + } + + /** + * 转换实体 + */ + public SowingWallDO toDOByEdit(SowingWallDTO sowingWallDTO) { + SowingWallDO sowingWallDO = new SowingWallDO(); + // 拷贝 + BeanUtils.copyProperties(sowingWallDTO, sowingWallDO, IgnoreNullUtil.getNullPropertyNames(sowingWallDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + if(sowingWallDTO.getSowingWallId() != null){ + sowingWallDO.setUpdateBy(loginUser.getUserid()); + sowingWallDO.setUpdateByName(loginUser.getUsername()); + sowingWallDO.setUpdateTime(new Date()); + + }else { + sowingWallDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + sowingWallDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + sowingWallDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + sowingWallDO.setCreateBy(loginUser.getUserid()); + sowingWallDO.setCreateByName(loginUser.getUsername()); + sowingWallDO.setCreateTime(new Date()); + } + return sowingWallDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/ImmediateInventoryAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/ImmediateInventoryAssembler.java new file mode 100644 index 000000000..635c9fa3f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/ImmediateInventoryAssembler.java @@ -0,0 +1,51 @@ +package com.mhd.wms.interfaces.assember.statementStatistics; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import com.mhd.wms.interfaces.dto.statementStatistics.ImmediateInventoryDTO; +import org.springframework.stereotype.Component; + +/** + * 即时库存Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class ImmediateInventoryAssembler { + + /** + * 转换实体 + */ + public ImmediateInventoryDO toDO(ImmediateInventoryDTO immediateInventoryDTO) { + ImmediateInventoryDO immediateInventoryDO = new ImmediateInventoryDO(); + // 拷贝 + BeanUtils.copyProperties(immediateInventoryDTO, immediateInventoryDO, IgnoreNullUtil.getNullPropertyNames(immediateInventoryDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + return immediateInventoryDO; + } + + /** + * 转换实体 + */ + public ImmediateInventoryDO toDOByEdit(ImmediateInventoryDTO immediateInventoryDTO) { + ImmediateInventoryDO immediateInventoryDO = new ImmediateInventoryDO(); + // 拷贝 + BeanUtils.copyProperties(immediateInventoryDTO, immediateInventoryDO, IgnoreNullUtil.getNullPropertyNames(immediateInventoryDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + return immediateInventoryDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/WarehousingReportAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/WarehousingReportAssembler.java new file mode 100644 index 000000000..debf9a17a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/statementStatistics/WarehousingReportAssembler.java @@ -0,0 +1,49 @@ +package com.mhd.wms.interfaces.assember.statementStatistics; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; +import com.mhd.wms.interfaces.dto.statementStatistics.WarehousingReportDTO; +import org.springframework.stereotype.Component; + +/** + * 入库日报表Assembler + * + * @author gen + * @date 2024-05-07 + */ +@Component +public class WarehousingReportAssembler { + /** + * 转换实体 + */ + public WarehousingReportDO toDO(WarehousingReportDTO warehousingReportDTO) { + WarehousingReportDO WarehousingReportDO = new WarehousingReportDO(); + // 拷贝 + BeanUtils.copyProperties(warehousingReportDTO, WarehousingReportDO, IgnoreNullUtil.getNullPropertyNames(warehousingReportDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + return WarehousingReportDO; + } + + /** + * 转换实体 + */ + public WarehousingReportDO toDOByEdit(WarehousingReportDTO warehousingReportDTO) { + WarehousingReportDO WarehousingReportDO = new WarehousingReportDO(); + // 拷贝 + BeanUtils.copyProperties(warehousingReportDTO, WarehousingReportDO, IgnoreNullUtil.getNullPropertyNames(warehousingReportDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + return WarehousingReportDO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java new file mode 100644 index 000000000..b0b23d62c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java @@ -0,0 +1,64 @@ +package com.mhd.wms.interfaces.assember.stockInOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 入库单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class StockInOrderAssembler { + + /** + * 转换实体 + */ + public StockInOrderDO toDO(StockInOrderDTO stockInOrderDTO) { + StockInOrderDO stockInOrderDO = new StockInOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockInOrderDTO, stockInOrderDO, IgnoreNullUtil.getNullPropertyNames(stockInOrderDTO)); + return stockInOrderDO; + } + + /** + * 转换实体 + */ + public StockInOrderDO toDOByEdit(StockInOrderDTO stockInOrderDTO) { + StockInOrderDO stockInOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockInOrderDTO), StockInOrderDO.class); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(stockInOrderDTO.getInOrderId() != null){ + stockInOrderDO.setUpdateBy(userId); + stockInOrderDO.setUpdateByName(userName); + stockInOrderDO.setUpdateTime(new Date()); + }else { + stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockInOrderDO.setCreateBy(userId); + stockInOrderDO.setCreateByName(userName); + stockInOrderDO.setCreateTime(new Date()); + stockInOrderDO.setDelFlag(1); + } + return stockInOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInTaskOrder/StockInTaskOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInTaskOrder/StockInTaskOrderAssembler.java new file mode 100644 index 000000000..5b7306d46 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInTaskOrder/StockInTaskOrderAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.stockInTaskOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.interfaces.dto.stockInTaskOrder.StockInTaskOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 入库作业单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class StockInTaskOrderAssembler { + + /** + * 转换实体 + */ + public StockInTaskOrderDO toDO(StockInTaskOrderDTO stockInTaskOrderDTO) { + StockInTaskOrderDO stockInTaskOrderDO = new StockInTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockInTaskOrderDTO, stockInTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockInTaskOrderDTO)); + return stockInTaskOrderDO; + } + + /** + * 转换实体 + */ + public StockInTaskOrderDO toDOByEdit(StockInTaskOrderDTO stockInTaskOrderDTO) { + StockInTaskOrderDO stockInTaskOrderDO = new StockInTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockInTaskOrderDTO, stockInTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockInTaskOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(stockInTaskOrderDTO.getInTaskOrderId() != null){ + stockInTaskOrderDO.setUpdateBy(userId); + stockInTaskOrderDO.setUpdateByName(userName); + stockInTaskOrderDO.setUpdateTime(new Date()); + }else { + stockInTaskOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockInTaskOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockInTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockInTaskOrderDO.setCreateBy(userId); + stockInTaskOrderDO.setCreateByName(userName); + stockInTaskOrderDO.setCreateTime(new Date()); + stockInTaskOrderDO.setDelFlag(1); + } + return stockInTaskOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutOrder/StockOutOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutOrder/StockOutOrderAssembler.java new file mode 100644 index 000000000..9e3da5558 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutOrder/StockOutOrderAssembler.java @@ -0,0 +1,68 @@ +package com.mhd.wms.interfaces.assember.stockOutOrder; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 出库单Assembler + * + * @author gen + * @date 2024-05-28 + */ +@Component +public class StockOutOrderAssembler { + + /** + * 转换实体 + */ + public StockOutOrderDO toDO(StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = new StockOutOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockOutOrderDTO, stockOutOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutOrderDTO)); + return stockOutOrderDO; + } + + /** + * 转换实体 + */ + public StockOutOrderDO toDOByEdit(StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + // 拷贝 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(stockOutOrderDTO.getOutOrderId() != null){ + stockOutOrderDO.setUpdateBy(userId); + stockOutOrderDO.setUpdateByName(userName); + stockOutOrderDO.setUpdateTime(new Date()); + }else { + stockOutOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockOutOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockOutOrderDO.setCreateBy(userId); + stockOutOrderDO.setCreateByName(userName); + stockOutOrderDO.setCreateTime(new Date()); + stockOutOrderDO.setUpdateBy(userId); + stockOutOrderDO.setUpdateByName(userName); + stockOutOrderDO.setUpdateTime(new Date()); + stockOutOrderDO.setDelFlag(1); + } + return stockOutOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutTaskOrder/StockOutTaskOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutTaskOrder/StockOutTaskOrderAssembler.java new file mode 100644 index 000000000..c69cb9121 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockOutTaskOrder/StockOutTaskOrderAssembler.java @@ -0,0 +1,106 @@ +package com.mhd.wms.interfaces.assember.stockOutTaskOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO; +import com.mhd.wms.interfaces.dto.stockOutTaskOrder.StockOutTaskOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 拣货作业单Assembler + * + * @author gen + * @date 2024-05-28 + */ +@Component +public class StockOutTaskOrderAssembler { + + /** + * 转换实体 + */ + public StockOutTaskOrderDO toDO(StockOutTaskOrderDTO stockOutTaskOrderDTO) { + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO)); + return stockOutTaskOrderDO; + } + + /** + * 转换实体 + */ + public StockOutTaskOrderDO toDOByEdit(StockOutTaskOrderDTO stockOutTaskOrderDTO) { + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(stockOutTaskOrderDTO.getOutTaskOrderId() != null){ + stockOutTaskOrderDO.setUpdateBy(userId); + stockOutTaskOrderDO.setUpdateByName(userName); + stockOutTaskOrderDO.setUpdateTime(new Date()); + }else { + stockOutTaskOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + stockOutTaskOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + stockOutTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + stockOutTaskOrderDO.setCreateBy(userId); + stockOutTaskOrderDO.setCreateByName(userName); + stockOutTaskOrderDO.setCreateTime(new Date()); + stockOutTaskOrderDO.setDelFlag(1); + } + return stockOutTaskOrderDO; + } + + /** + * 按库位拣货 转换实体 + */ + public StockOutTaskOrderDO toDOPickingByStorageLocation(StockOutTaskOrderDTO stockOutTaskOrderDTO) { + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO)); + List taskPickingMaterialDetailList = new ArrayList<>(); + stockOutTaskOrderDTO.getTaskStorageList().forEach(taskStorageDTO -> { + taskStorageDTO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDTO -> { + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); + taskPickingMaterialDetailList.add(taskPickingMaterialDetailDO); + }); + }); + stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailList); + return stockOutTaskOrderDO; + } + + /** + * 按物料拣货 转换实体 + */ + public StockOutTaskOrderDO toDOPickingByMaterial(StockOutTaskOrderDTO stockOutTaskOrderDTO) { + StockOutTaskOrderDO stockOutTaskOrderDO = new StockOutTaskOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockOutTaskOrderDTO, stockOutTaskOrderDO, IgnoreNullUtil.getNullPropertyNames(stockOutTaskOrderDTO)); + List taskPickingMaterialDetailList = new ArrayList<>(); + stockOutTaskOrderDTO.getTaskMaterialList().forEach(taskMaterialDTO -> { + taskMaterialDTO.getTaskPickingMaterialDetailList().forEach(taskPickingMaterialDetailDTO -> { + TaskPickingMaterialDetailDO taskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO(); + BeanUtils.copyProperties(taskPickingMaterialDetailDTO, taskPickingMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskPickingMaterialDetailDTO)); + taskPickingMaterialDetailList.add(taskPickingMaterialDetailDO); + }); + }); + stockOutTaskOrderDO.setTaskPickingMaterialDetailList(taskPickingMaterialDetailList); + return stockOutTaskOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockReceiptOrder/StockReceiptOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockReceiptOrder/StockReceiptOrderAssembler.java new file mode 100644 index 000000000..f6bff9c04 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockReceiptOrder/StockReceiptOrderAssembler.java @@ -0,0 +1,37 @@ +package com.mhd.wms.interfaces.assember.stockReceiptOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.interfaces.dto.stockReceiptOrder.StockReceiptOrderDTO; +import org.springframework.stereotype.Component; + +/** + * 收货单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class StockReceiptOrderAssembler { + + /** + * 转换实体 + */ + public StockReceiptOrderDO toDO(StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO(); + // 拷贝 + BeanUtils.copyProperties(stockReceiptOrderDTO, stockReceiptOrderDO, IgnoreNullUtil.getNullPropertyNames(stockReceiptOrderDTO)); + return stockReceiptOrderDO; + } + + /** + * 转换实体 + */ + public StockReceiptOrderDO toDOByEdit(StockReceiptOrderDTO stockReceiptOrderDTO) { + // 拷贝 + return JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDTO), StockReceiptOrderDO.class); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockShelfOrder/StockShelfOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockShelfOrder/StockShelfOrderAssembler.java new file mode 100644 index 000000000..a91efa3e3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockShelfOrder/StockShelfOrderAssembler.java @@ -0,0 +1,36 @@ +package com.mhd.wms.interfaces.assember.stockShelfOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.interfaces.dto.stockShelfOrder.StockShelfOrderDTO; +import org.springframework.stereotype.Component; + +/** + * 上架单Assembler + * + * @author gen + * @date 2024-05-21 + */ +@Component +public class StockShelfOrderAssembler { + + /** + * 转换实体 + */ + public StockShelfOrderDO toDO(StockShelfOrderDTO stockShelfOrderDTO) { + StockShelfOrderDO stockShelfOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockShelfOrderDTO), StockShelfOrderDO.class); + // 拷贝 + BeanUtils.copyProperties(stockShelfOrderDTO, stockShelfOrderDO, IgnoreNullUtil.getNullPropertyNames(stockShelfOrderDTO)); + return stockShelfOrderDO; + } + + /** + * 转换实体 + */ + public StockShelfOrderDO toDOByEdit(StockShelfOrderDTO stockShelfOrderDTO) { + return JSONUtil.toBean(JSONUtil.toJsonStr(stockShelfOrderDTO), StockShelfOrderDO.class); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskReceiptMaterialDetail/TaskReceiptMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskReceiptMaterialDetail/TaskReceiptMaterialDetailAssembler.java new file mode 100644 index 000000000..7696a16d2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskReceiptMaterialDetail/TaskReceiptMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.taskReceiptMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.interfaces.dto.taskReceiptMaterialDetail.TaskReceiptMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 收货作业单物料详情Assembler + * + * @author gen + * @date 2024-06-19 + */ +@Component +public class TaskReceiptMaterialDetailAssembler { + + /** + * 转换实体 + */ + public TaskReceiptMaterialDetailDO toDO(TaskReceiptMaterialDetailDTO taskReceiptMaterialDetailDTO) { + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = new TaskReceiptMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(taskReceiptMaterialDetailDTO, taskReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskReceiptMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(taskReceiptMaterialDetailDTO.getMaterialDetailId() != null){ + if(userId != null){ + taskReceiptMaterialDetailDO.setUpdateBy(userId); + }else { + taskReceiptMaterialDetailDO.setUpdateBy(new Long("0")); + } + taskReceiptMaterialDetailDO.setUpdateByName(userName); + taskReceiptMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + taskReceiptMaterialDetailDO.setCreateBy(userId); + taskReceiptMaterialDetailDO.setUpdateBy(userId); + }else { + taskReceiptMaterialDetailDO.setCreateBy(new Long("0")); + taskReceiptMaterialDetailDO.setUpdateBy(new Long("0")); + } + taskReceiptMaterialDetailDO.setCreateByName(userName); + taskReceiptMaterialDetailDO.setUpdateByName(userName); + taskReceiptMaterialDetailDO.setCreateTime(new Date()); + taskReceiptMaterialDetailDO.setUpdateTime(new Date()); + taskReceiptMaterialDetailDO.setDelFlag(1); + } + return taskReceiptMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskShelfMaterialDetail/TaskShelfMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskShelfMaterialDetail/TaskShelfMaterialDetailAssembler.java new file mode 100644 index 000000000..2014f6e7f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/taskShelfMaterialDetail/TaskShelfMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.taskShelfMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import com.mhd.wms.interfaces.dto.taskShelfMaterialDetail.TaskShelfMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 上架作业物料详情Assembler + * + * @author gen + * @date 2024-06-19 + */ +@Component +public class TaskShelfMaterialDetailAssembler { + + /** + * 转换实体 + */ + public TaskShelfMaterialDetailDO toDO(TaskShelfMaterialDetailDTO taskShelfMaterialDetailDTO) { + TaskShelfMaterialDetailDO taskShelfMaterialDetailDO = new TaskShelfMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(taskShelfMaterialDetailDTO, taskShelfMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(taskShelfMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(taskShelfMaterialDetailDTO.getMaterialDetailId() != null){ + if(userId != null){ + taskShelfMaterialDetailDO.setUpdateBy(userId); + }else { + taskShelfMaterialDetailDO.setUpdateBy(new Long("0")); + } + taskShelfMaterialDetailDO.setUpdateByName(userName); + taskShelfMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + taskShelfMaterialDetailDO.setCreateBy(userId); + taskShelfMaterialDetailDO.setUpdateBy(userId); + }else { + taskShelfMaterialDetailDO.setCreateBy(new Long("0")); + taskShelfMaterialDetailDO.setUpdateBy(new Long("0")); + } + taskShelfMaterialDetailDO.setCreateByName(userName); + taskShelfMaterialDetailDO.setUpdateByName(userName); + taskShelfMaterialDetailDO.setCreateTime(new Date()); + taskShelfMaterialDetailDO.setUpdateTime(new Date()); + taskShelfMaterialDetailDO.setDelFlag(1); + } + return taskShelfMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/userCommonSettings/UserCommonSettingsAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/userCommonSettings/UserCommonSettingsAssembler.java new file mode 100644 index 000000000..b7ff95bef --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/userCommonSettings/UserCommonSettingsAssembler.java @@ -0,0 +1,75 @@ +package com.mhd.wms.interfaces.assember.userCommonSettings; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import com.mhd.wms.interfaces.dto.userCommonSettings.UserCommonSettingsDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 用户常用设置关联Assembler + * + * @author gen + * @date 2024-07-29 + */ +@Component +public class UserCommonSettingsAssembler { + + /** + * 转换实体 + */ + public UserCommonSettingsDO toDO(UserCommonSettingsDTO userCommonSettingsDTO) { + UserCommonSettingsDO userCommonSettingsDO = new UserCommonSettingsDO(); + // 拷贝 + BeanUtils.copyProperties(userCommonSettingsDTO, userCommonSettingsDO, IgnoreNullUtil.getNullPropertyNames(userCommonSettingsDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(userCommonSettingsDTO.getUserCommonSettingsId() != null){ + if(userId != null){ + userCommonSettingsDO.setUpdateBy(userId); + }else { + userCommonSettingsDO.setUpdateBy(new Long("0")); + } + userCommonSettingsDO.setUpdateByName(userName); + userCommonSettingsDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + userCommonSettingsDO.setCreateBy(userId); + userCommonSettingsDO.setUpdateBy(userId); + }else { + userCommonSettingsDO.setCreateBy(new Long("0")); + userCommonSettingsDO.setUpdateBy(new Long("0")); + } + userCommonSettingsDO.setCreateByName(userName); + userCommonSettingsDO.setUpdateByName(userName); + userCommonSettingsDO.setCreateTime(new Date()); + userCommonSettingsDO.setUpdateTime(new Date()); + userCommonSettingsDO.setDelFlag(1); + } + return userCommonSettingsDO; + } + + /** + * 转换实体 + */ + public UserCommonSettingsDO toDOByQuery(UserCommonSettingsDTO userCommonSettingsDTO) { + UserCommonSettingsDO userCommonSettingsDO = new UserCommonSettingsDO(); + // 拷贝 + BeanUtils.copyProperties(userCommonSettingsDTO, userCommonSettingsDO, IgnoreNullUtil.getNullPropertyNames(userCommonSettingsDTO)); + return userCommonSettingsDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveMaterialDetail/WaveMaterialDetailAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveMaterialDetail/WaveMaterialDetailAssembler.java new file mode 100644 index 000000000..6ffe61453 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveMaterialDetail/WaveMaterialDetailAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.waveMaterialDetail; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import com.mhd.wms.interfaces.dto.waveMaterialDetail.WaveMaterialDetailDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 出库单物料明细Assembler + * + * @author gen + * @date 2024-06-27 + */ +@Component +public class WaveMaterialDetailAssembler { + + /** + * 转换实体 + */ + public WaveMaterialDetailDO toDO(WaveMaterialDetailDTO waveMaterialDetailDTO) { + WaveMaterialDetailDO waveMaterialDetailDO = new WaveMaterialDetailDO(); + // 拷贝 + BeanUtils.copyProperties(waveMaterialDetailDTO, waveMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(waveMaterialDetailDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(waveMaterialDetailDTO.getMaterialDetailId() != null){ + if(userId != null){ + waveMaterialDetailDO.setUpdateBy(userId); + }else { + waveMaterialDetailDO.setUpdateBy(new Long("0")); + } + waveMaterialDetailDO.setUpdateByName(userName); + waveMaterialDetailDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + waveMaterialDetailDO.setCreateBy(userId); + waveMaterialDetailDO.setUpdateBy(userId); + }else { + waveMaterialDetailDO.setCreateBy(new Long("0")); + waveMaterialDetailDO.setUpdateBy(new Long("0")); + } + waveMaterialDetailDO.setCreateByName(userName); + waveMaterialDetailDO.setUpdateByName(userName); + waveMaterialDetailDO.setCreateTime(new Date()); + waveMaterialDetailDO.setUpdateTime(new Date()); + waveMaterialDetailDO.setDelFlag(1); + } + return waveMaterialDetailDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveOrder/WaveOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveOrder/WaveOrderAssembler.java new file mode 100644 index 000000000..66f14e7c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveOrder/WaveOrderAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.waveOrder; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import com.mhd.wms.interfaces.dto.waveOrder.WaveOrderDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 波次单Assembler + * + * @author gen + * @date 2024-06-04 + */ +@Component +public class WaveOrderAssembler { + + /** + * 转换实体 + */ + public WaveOrderDO toDO(WaveOrderDTO waveOrderDTO) { + WaveOrderDO waveOrderDO = new WaveOrderDO(); + // 拷贝 + BeanUtils.copyProperties(waveOrderDTO, waveOrderDO, IgnoreNullUtil.getNullPropertyNames(waveOrderDTO)); + return waveOrderDO; + } + + /** + * 转换实体 + */ + public WaveOrderDO toDOByEdit(WaveOrderDTO waveOrderDTO) { + WaveOrderDO waveOrderDO = new WaveOrderDO(); + // 拷贝 + BeanUtils.copyProperties(waveOrderDTO, waveOrderDO, IgnoreNullUtil.getNullPropertyNames(waveOrderDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(waveOrderDTO.getWaveOrderId() != null){ + waveOrderDO.setUpdateBy(userId); + waveOrderDO.setUpdateByName(userName); + waveOrderDO.setUpdateTime(new Date()); + }else { + waveOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); + waveOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + waveOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + waveOrderDO.setCreateBy(userId); + waveOrderDO.setCreateByName(userName); + waveOrderDO.setCreateTime(new Date()); + waveOrderDO.setDelFlag(1); + } + return waveOrderDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveRule/WaveRuleAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveRule/WaveRuleAssembler.java new file mode 100644 index 000000000..f641d07b9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/waveRule/WaveRuleAssembler.java @@ -0,0 +1,65 @@ +package com.mhd.wms.interfaces.assember.waveRule; + +import cn.hutool.core.util.ObjectUtil; +import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException; +import com.mhd.common.core.exception.digitalLogisticsException.UserError; +import com.mhd.common.core.utils.IgnoreNullUtil; +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; +import com.mhd.wms.interfaces.dto.waveRule.WaveRuleDTO; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 波次规则Assembler + * + * @author gen + * @date 2024-07-23 + */ +@Component +public class WaveRuleAssembler { + + /** + * 转换实体 + */ + public WaveRuleDO toDO(WaveRuleDTO waveRuleDTO) { + WaveRuleDO waveRuleDO = new WaveRuleDO(); + // 拷贝 + BeanUtils.copyProperties(waveRuleDTO, waveRuleDO, IgnoreNullUtil.getNullPropertyNames(waveRuleDTO)); + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + String userName = loginUser.getUsername(); + // 获取登录人id + Long userId = loginUser.getUserid(); + if(waveRuleDTO.getId() != null){ + if(userId != null){ + waveRuleDO.setUpdateBy(userId); + }else { + waveRuleDO.setUpdateBy(new Long("0")); + } + waveRuleDO.setUpdateByName(userName); + waveRuleDO.setUpdateTime(new Date()); + + }else { + if(userId != null){ + waveRuleDO.setCreateBy(userId); + waveRuleDO.setUpdateBy(userId); + }else { + waveRuleDO.setCreateBy(new Long("0")); + waveRuleDO.setUpdateBy(new Long("0")); + } + waveRuleDO.setCreateByName(userName); + waveRuleDO.setUpdateByName(userName); + waveRuleDO.setCreateTime(new Date()); + waveRuleDO.setUpdateTime(new Date()); + waveRuleDO.setDelFlag(1); + } + return waveRuleDO; + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/commonSettings/CommonSettingsDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/commonSettings/CommonSettingsDTO.java new file mode 100644 index 000000000..200f4f435 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/commonSettings/CommonSettingsDTO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.interfaces.dto.commonSettings; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 常用设置对象 common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class CommonSettingsDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("常用设置id") + private Long commonSettingsId; + + @ApiModelProperty("所属上级id") + @Excel(name = "所属上级id") + private Long parentId; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("route") + @Excel(name = "route") + private String route; + + @ApiModelProperty("级别 1-一级 2-二级") + @Excel(name = "级别 1-一级 2-二级") + private Long level; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/containerUsageRecord/ContainerUsageRecordDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/containerUsageRecord/ContainerUsageRecordDTO.java new file mode 100644 index 000000000..cd04cd2c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/containerUsageRecord/ContainerUsageRecordDTO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.dto.containerUsageRecord; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 容器使用记录对象 container_usage_record + * + * @author gen + * @date 2024-08-22 + */ + +@Data +public class ContainerUsageRecordDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private String id; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("容器容积 单位:立方米") + @Excel(name = "容器容积 单位:立方米") + private BigDecimal containerVolume; + + @ApiModelProperty("记录类型: 1-占用 2-释放") + @Excel(name = "记录类型: 1-占用 2-释放") + private Integer useType; + + @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库") + @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库") + private Integer node; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/deliveTask/DeliveTaskDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/deliveTask/DeliveTaskDTO.java new file mode 100644 index 000000000..97dcdf75e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/deliveTask/DeliveTaskDTO.java @@ -0,0 +1,118 @@ +package com.mhd.wms.interfaces.dto.deliveTask; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 下发任务对象 delive_task + * + * @author gen + * @date 2024-07-26 + */ + +@Data +public class DeliveTaskDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("任务id") + private Long deliverTaskId; + + @ApiModelProperty("任务单号") + @Excel(name = "任务单号") + private String taskNumber; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("组织id") + @Excel(name = "组织id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点") + private Integer taskType; + + @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭") + private Integer taskStatus; + + @ApiModelProperty("是否下发 0-否 1-是") + @Excel(name = "是否下发 0-否 1-是") + private Integer taskDistribution; + + @ApiModelProperty("下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("下发人id") + @Excel(name = "下发人id") + private Long taskDistributionId; + + @ApiModelProperty("下发人名称") + @Excel(name = "下发人名称") + private String taskDistributionName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("重新指派时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date reassignTime; + + @ApiModelProperty("重新指派人id") + @Excel(name = "重新指派人id") + private Long reassignById; + + @ApiModelProperty("重新指派人") + @Excel(name = "重新指派人") + private String reassignByName; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("查询类型 1-指派给我的 2-任务") + @Excel(name = "查询类型 1-指派给我的 2-任务") + private Long tabType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/differentManage/DifferentManageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/differentManage/DifferentManageDTO.java new file mode 100644 index 000000000..8736fc06f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/differentManage/DifferentManageDTO.java @@ -0,0 +1,120 @@ +package com.mhd.wms.interfaces.dto.differentManage; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.investigetionManageDetail.InvestigetionManageDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 差异单对象 different_manage + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class DifferentManageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("差异管理id") + private Long differentManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("监盘人ID") + @Excel(name = "监盘人ID") + private Long investigationManBy; + + @ApiModelProperty("监盘人姓名") + @Excel(name = "监盘人姓名") + private String investigationManName; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否过账: 1-是 2-否") + @Excel(name = "是否过账: 1-是 2-否") + private Integer postedFlag; + + @ApiModelProperty("是否重盘: 1-是 2-否") + @Excel(name = "是否重盘: 1-是 2-否") + private Integer reCountedFlag; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/handoverTaskOrder/HandoverTaskOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/handoverTaskOrder/HandoverTaskOrderDTO.java new file mode 100644 index 000000000..0306317da --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/handoverTaskOrder/HandoverTaskOrderDTO.java @@ -0,0 +1,134 @@ +package com.mhd.wms.interfaces.dto.handoverTaskOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * 交接作业单对象 handover_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class HandoverTaskOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("交接作业单id") + private Long handoverTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("交接状态: 1-未交接 2-已交接") + @Excel(name = "交接状态: 1-未交接 2-已交接") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("交接作业单id") + private List handoverTaskOrderIds; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailDTO.java new file mode 100644 index 000000000..8a9198aed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetail/InMaterialDetailDTO.java @@ -0,0 +1,266 @@ +package com.mhd.wms.interfaces.dto.inMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.inMaterialDetailSerialNumber.InMaterialDetailSerialNumberDTO; +import com.mhd.wms.interfaces.dto.materialMoreDetail.MaterialMoreDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("作业数量(例如:收货数量 上架数量)") + @Excel(name = "作业数量(例如:收货数量 上架数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + private Integer receiptStatus; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("入库单号集合") + @Excel(name = "入库单号集合") + private List inOrderNumberList; + + @ApiModelProperty("是否是差异单") + private Integer isDifferentType; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberDTO.java new file mode 100644 index 000000000..745886db5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberDTO.java @@ -0,0 +1,61 @@ +package com.mhd.wms.interfaces.dto.inMaterialDetailSerialNumber; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 物料明细序列号对象 material_detail_serial_number + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InMaterialDetailSerialNumberDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("是否是差异单") + private Integer isDifferentType; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inOrderAbnormal/InOrderAbnormalDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inOrderAbnormal/InOrderAbnormalDTO.java new file mode 100644 index 000000000..7f3b04279 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inOrderAbnormal/InOrderAbnormalDTO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.dto.inOrderAbnormal; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 入库异常单对象 in_order_abnormal + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class InOrderAbnormalDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("类型:1-收货 2-上架") + @Excel(name = "类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("允许超出的作业数量") + @Excel(name = "允许超出的作业数量") + private BigDecimal allowActualQuantity; + + @ApiModelProperty("异常数量(异常数量 = 作业数量 - 计划数量)") + @Excel(name = "异常数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-上架异常 2-收货异常 3-收货异常(允许超收没超出超收比例) 4-收货异常(不允许超收)5-收货异常(允许超收但超出超收比例)") + @Excel(name = "异常类型: 1-上架异常 2-收货异常 3-收货异常", readConverterExp = "允=许超收但不允许超出超收比例") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAdjustmentRecord/InventoryAdjustmentRecordDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAdjustmentRecord/InventoryAdjustmentRecordDTO.java new file mode 100644 index 000000000..cb4d3b8ac --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAdjustmentRecord/InventoryAdjustmentRecordDTO.java @@ -0,0 +1,166 @@ +package com.mhd.wms.interfaces.dto.inventoryAdjustmentRecord; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 库存调整记录对象 inventory_adjustment_record + * + * @author gen + * @date 2024-07-17 + */ + +@Data +public class InventoryAdjustmentRecordDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存调整记录id") + private Long inventoryAdjustmentId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + @Excel(name = "调整类型:0:无状态 1:数量调整 :2:状态调整 3:库存冻结") + private Long adjustType; + + @ApiModelProperty("调整方向:0:无状态 1:增库存 2:减库存") + @Excel(name = "调整方向:0:无状态 1:增库存 2:减库存") + private Long adjustDirection; + + @ApiModelProperty("调整前状态编码") + @Excel(name = "调整前状态编码") + private String adjustBeforeStatusCode; + + @ApiModelProperty("调整前状态名称") + @Excel(name = "调整前状态名称") + private String adjustBeforeStatusName; + + @ApiModelProperty("调整后状态编码") + @Excel(name = "调整后状态编码") + private String adjustAfterStatusCode; + + @ApiModelProperty("调整后状态名称") + @Excel(name = "调整后状态名称") + private String adjustAfterStatusName; + + @ApiModelProperty("调整数量") + @Excel(name = "调整数量") + private BigDecimal adjustQuantity; + + @ApiModelProperty("调整前库存数量") + @Excel(name = "调整前库存数量") + private BigDecimal inventoryBeforeQuantity; + + @ApiModelProperty("调整前可用数量") + @Excel(name = "调整前可用数量") + private BigDecimal allocationBeforeQuantity; + + @ApiModelProperty("调整前冻结数量") + @Excel(name = "调整前冻结数量") + private BigDecimal freezeBeforeQuantity; + + @ApiModelProperty("调整后库存数量") + @Excel(name = "调整后库存数量") + private BigDecimal inventoryAfterQuantity; + + @ApiModelProperty("调整后可用数量") + @Excel(name = "调整后可用数量") + private BigDecimal allocationAfterQuantity; + + @ApiModelProperty("调整后冻结数量") + @Excel(name = "调整后冻结数量") + private BigDecimal freezeAfterQuantity; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRule/InventoryAllocationRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRule/InventoryAllocationRuleDTO.java new file mode 100644 index 000000000..14018b258 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRule/InventoryAllocationRuleDTO.java @@ -0,0 +1,64 @@ +package com.mhd.wms.interfaces.dto.inventoryAllocationRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存分配规则对象 inventory_allocation_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "库存分配规则明细") + private List inventoryAllocationRuleDetailList = new ArrayList<>(); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailDTO.java new file mode 100644 index 000000000..d67b2d1ce --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailDTO.java @@ -0,0 +1,82 @@ +package com.mhd.wms.interfaces.dto.inventoryAllocationRuleDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 库存规则分配明细对象 inventory_allocation_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryAllocationRuleDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存分配表ID") + @Excel(name = "库存分配表ID") + private Long inventoryAllocationRuleId; + + @ApiModelProperty("库位种类ID") + @Excel(name = "库位种类ID") + private String locationKindId; + + @ApiModelProperty("库位种类") + @Excel(name = "库位种类") + private String locationKind; + + @ApiModelProperty("库位分类ID") + @Excel(name = "库位分类ID") + private String locationTypeId; + + @ApiModelProperty("库位分类") + @Excel(name = "库位分类") + private String locationType; + + @ApiModelProperty("混放策略ID") + @Excel(name = "混放策略ID") + private String mixingSlgId; + + @ApiModelProperty("混放策略") + @Excel(name = "混放策略") + private String mixingSlg; + + @ApiModelProperty("物料状态ID") + @Excel(name = "物料状态ID") + private String materialStatusId; + + @ApiModelProperty("物料状态") + @Excel(name = "物料状态") + private String materialStatus; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingDetail/InventoryStandingDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingDetail/InventoryStandingDetailDTO.java new file mode 100644 index 000000000..1f3c20f9d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingDetail/InventoryStandingDetailDTO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.dto.inventoryStandingDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 库存台账追溯详情对象 inventory_standing_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InventoryStandingDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String materialBarCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String trackingNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingReport/InventoryStandingReportDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingReport/InventoryStandingReportDTO.java new file mode 100644 index 000000000..3ecbe9782 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryStandingReport/InventoryStandingReportDTO.java @@ -0,0 +1,87 @@ +package com.mhd.wms.interfaces.dto.inventoryStandingReport; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 库存台账报对象 inventory_standing_report + * + * @author gen + * @date 2024-07-12 + */ + +@Data +public class InventoryStandingReportDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存台账id") + private Long inventoryStandingId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料条码") + @Excel(name = "物料条码") + private String barCode; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主名称编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + @Excel(name = "节点状态: 1-收货 2-上架 3-拣货 4-复核 5-移位 6-库存调整 7-盘点(盘盈) 8-盘点(盘亏)9-盘点(正常)") + private Integer nodeStatus; + + @ApiModelProperty("物料数量") + @Excel(name = "物料数量") + private BigDecimal materialQuantity; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRule/InventoryTurnoverRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRule/InventoryTurnoverRuleDTO.java new file mode 100644 index 000000000..d228e9b9a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRule/InventoryTurnoverRuleDTO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.interfaces.dto.inventoryTurnoverRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 库存周转规则对象 inventory_turnover_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "库存周转规则明细") + private List inventoryTurnoverRuleDetailList = new ArrayList<>(); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailDTO.java new file mode 100644 index 000000000..b940258b4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailDTO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.interfaces.dto.inventoryTurnoverRuleDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 库存周转规则明细对象 inventory_turnover_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class InventoryTurnoverRuleDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("库存周转规则ID") + @Excel(name = "库存周转规则ID") + private Long inventoryTurnoverRuleId; + + @ApiModelProperty("批次属性ID") + @Excel(name = "批次属性ID") + private String batchAttributeId; + + @ApiModelProperty("批次属性") + @Excel(name = "批次属性") + private String batchAttribute; + + @ApiModelProperty("排序方式ID;0升序1降序") + @Excel(name = "排序方式ID;0升序1降序") + private Integer sortord; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryWarningAnalyze/InventoryWarningAnalyzeDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryWarningAnalyze/InventoryWarningAnalyzeDTO.java new file mode 100644 index 000000000..5c68ddfe0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inventoryWarningAnalyze/InventoryWarningAnalyzeDTO.java @@ -0,0 +1,162 @@ +package com.mhd.wms.interfaces.dto.inventoryWarningAnalyze; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 库存预警分析对象 inventory_warning_analyze + * + * @author gen + * @date 2024-07-24 + */ + +@Data +public class InventoryWarningAnalyzeDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("库存预警分析id") + private Long inventoryWarningAnalyzeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitQuantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("预警单号") + @Excel(name = "预警单号") + private String warningAnalyzeNumber; + + @ApiModelProperty("预警类型(1:库存不足 2:库存超限)") + @Excel(name = "预警类型(1:库存不足 2:库存超限)") + private Integer warningAnalyzeType; + + @ApiModelProperty("库存标准预警数") + @Excel(name = "库存标准预警数") + private BigDecimal warningStandardQuantity; + + @ApiModelProperty("预警时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "预警时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date warningTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigationManageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigationManageDTO.java new file mode 100644 index 000000000..a84a74866 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigationManageDTO.java @@ -0,0 +1,176 @@ +package com.mhd.wms.interfaces.dto.investigationManage; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.investigetionManageDetail.InvestigetionManageDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * 盘点管理对象 investigation_manage + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigationManageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点管理id") + private Long investigationManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + + @ApiModelProperty("上次盘点单号") + @Excel(name = "上次盘点单号") + private String oldInvestigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long investigationManBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String investigationManName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("盘点审核备注") + @Excel(name = "盘点审核备注") + private String auditRemark; + + @ApiModelProperty("盘点审核人") + @Excel(name = "盘点审核人") + private Long auditBy; + + @ApiModelProperty("盘点审核人姓名") + @Excel(name = "盘点审核人姓名") + private String auditByName; + + @ApiModelProperty("盘点审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "盘点审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点详情") + @TableField(exist = false) + private List investigetionManageDetailList; + + @ApiModelProperty("盘点管理id集合") + private List investigationManageIds; + + @ApiModelProperty("库位分组") + private List investigetionStorageList; + + @ApiModelProperty("物料分组") + private List investigetionMaterialList; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionMaterialDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionMaterialDTO.java new file mode 100644 index 000000000..770c3a06a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionMaterialDTO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.interfaces.dto.investigationManage; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionMaterialDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盈亏数量") + @Excel(name = "盈亏数量") + private BigDecimal profitLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + @Excel(name = "盘点状态: 1-待盘点 2-盘亏 3-正常 4-盘盈") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionStorageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionStorageDTO.java new file mode 100644 index 000000000..8d2b998be --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigationManage/InvestigetionStorageDTO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.interfaces.dto.investigationManage; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.investigetionManageDetail.InvestigetionManageDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class InvestigetionStorageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("盘盈数量") + @Excel(name = "盘盈数量") + private BigDecimal investigationProfitQuantity; + + @ApiModelProperty("盘亏数量") + @Excel(name = "盘亏数量") + private BigDecimal investigationLossQuantity; + + @ApiModelProperty("盘点状态: 1-待盘点 2-已盘点") + @Excel(name = "盘点状态: 1-待盘点 2-已盘点") + private Integer investigationStatus; + + @ApiModelProperty("盘点单物料详情") + private List investigetionManageDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigetionManageDetail/InvestigetionManageDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigetionManageDetail/InvestigetionManageDetailDTO.java new file mode 100644 index 000000000..773fbb3b8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/investigetionManageDetail/InvestigetionManageDetailDTO.java @@ -0,0 +1,215 @@ +package com.mhd.wms.interfaces.dto.investigetionManageDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 盘点详情管理对象 investigetion_manage_detail + * + * @author gen + * @date 2024-07-10 + */ + +@Data +public class InvestigetionManageDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("盘点详情id") + private Long investigationManageDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("盘点单号") + @Excel(name = "盘点单号") + private String investigationNumber; + +@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成") + private Integer investigationStatus; + + @ApiModelProperty("盘点范围") + @Excel(name = "盘点范围") + private String investigationRange; + + @ApiModelProperty("盘点方式:1.明盘 2.盲盘") + @Excel(name = "盘点方式:1.明盘 2.盲盘") + private Integer investigationType; + + @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点") + @Excel(name = "盘点方法:1.静态盘点 2.动态盘点") + private Integer investigationMethod; + + @ApiModelProperty("盘点轮次:1.初盘 2.复盘") + @Excel(name = "盘点轮次:1.初盘 2.复盘") + private Integer investigationFrequency; + + @ApiModelProperty("差异单号") + @Excel(name = "差异单号") + private String differentNumber; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long investigationManBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String investigationManName; + + @ApiModelProperty("盘点数量") + @Excel(name = "盘点数量") + private BigDecimal investigationQuantity; + + @ApiModelProperty("差异数量") + @Excel(name = "差异数量") + private BigDecimal differentQuantity; + + @ApiModelProperty("盘点结果:1.盘盈 2.盘亏 3.正常") + @Excel(name = "盘点结果:1.盘盈 2.盘亏 3.正常") + private Integer investigationResult; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("作业数量:盘点数量") + @Excel(name = "作业数量:盘点数量") + private BigDecimal actualQuantity; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBarCode/MaterialBarCodeDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBarCode/MaterialBarCodeDTO.java new file mode 100644 index 000000000..7cfae5256 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBarCode/MaterialBarCodeDTO.java @@ -0,0 +1,78 @@ +package com.mhd.wms.interfaces.dto.materialBarCode; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 物料条码信息对象 material_bar_code + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBarCodeDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialBarCodeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseDTO.java new file mode 100644 index 000000000..abdf4aa9b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseDTO.java @@ -0,0 +1,61 @@ +package com.mhd.wms.interfaces.dto.materialBaseInfo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author ZhouGY + * @title MaterialBaseDO + * @description: TODO + * @date 2024/7/5 10:59 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class MaterialBaseDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java new file mode 100644 index 000000000..0f40a6c79 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialBaseInfo/MaterialBaseInfoDTO.java @@ -0,0 +1,193 @@ +package com.mhd.wms.interfaces.dto.materialBaseInfo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.handler.ListTypeHandler; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.interfaces.dto.materialBarCode.MaterialBarCodeDTO; +import com.mhd.wms.interfaces.dto.materialCommon.MaterialCommonDTO; +import com.mhd.wms.interfaces.dto.materialInventoryWarning.MaterialInventoryWarningDTO; +import com.mhd.wms.interfaces.dto.materialWarehouseControl.MaterialWarehouseControlDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料基础信息对象 material_base_info + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialBaseInfoDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料分类编码") + @Excel(name = "物料分类编码") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyCode; + + @ApiModelProperty("物料分类名称") + @Excel(name = "物料分类名称") + @TableField(typeHandler = ListTypeHandler.class) + private List materialClassifyName; + + @ApiModelProperty("物料种类编码 数据字典") + @Excel(name = "物料种类编码 数据字典") + private String materialType; + + @ApiModelProperty("物料种类名称 数据字典") + @Excel(name = "物料种类名称 数据字典") + private String materialTypeName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装单位编码") + @Excel(name = "包装单位编码") + private String unitCode; + + @ApiModelProperty("包装单位名称") + @Excel(name = "包装单位名称") + private String unitName; + + @ApiModelProperty("品牌id") + @Excel(name = "品牌id") + private Long brandId; + + @ApiModelProperty("品牌编码") + @Excel(name = "品牌编码") + private String brandCode; + + @ApiModelProperty("品牌名称") + @Excel(name = "品牌名称") + private String brandName; + + @ApiModelProperty("保质期 单位:天") + @Excel(name = "保质期 单位:天") + private Long shelfLife; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("商品形态编码 数据字典") + @Excel(name = "商品形态编码 数据字典") + private String materialShape; + + @ApiModelProperty("商品形态名称 数据字典") + @Excel(name = "商品形态名称 数据字典") + private String materialShapeName; + + @ApiModelProperty("物料大小 长*宽*高 单位:米") + @Excel(name = "物料大小 长*宽*高 单位:米") + private String materialSize; + + @ApiModelProperty("物料大小-长 单位:米") + @Excel(name = "物料大小-长 单位:米") + private BigDecimal materialLength; + + @ApiModelProperty("物料大小-宽 单位:米") + @Excel(name = "物料大小-宽 单位:米") + private BigDecimal materialWidth; + + @ApiModelProperty("物料大小-高 单位:米") + @Excel(name = "物料大小-高 单位:米") + private BigDecimal materialHeight; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("商品规则") + private MaterialGoodsRuleDO materialGoodsRule; + + @ApiModelProperty("公共信息") + private MaterialCommonDTO materialCommon; + + @ApiModelProperty("仓库控制信息") + private MaterialWarehouseControlDTO materialWarehouseControl; + + @ApiModelProperty("库存预警信息") + private List materialInventoryWarningList; + + @ApiModelProperty("条码信息") + private List materialBarCodeList; + + @ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码") + private String compoundOrQuery; + + @ApiModelProperty("feign 是否是修改: 1-是 2-否") + private Integer updateFeign; + + @ApiModelProperty("是否公用: 1-是 2-否") + @Excel(name = "是否公用: 1-是 2-否") + private Integer common; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialCommon/MaterialCommonDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialCommon/MaterialCommonDTO.java new file mode 100644 index 000000000..901cb85ab --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialCommon/MaterialCommonDTO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.dto.materialCommon; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 物料公共信息对象 material_common + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialCommonDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialCommonId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否温控: 1-是 2-否") + @Excel(name = "是否温控: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("最低温度") + @Excel(name = "最低温度") + private BigDecimal minTemperature; + + @ApiModelProperty("最高温度") + @Excel(name = "最高温度") + private BigDecimal maxTemperature; + + @ApiModelProperty("商品温层编码") + @Excel(name = "商品温层编码") + private String warmLayer; + + @ApiModelProperty("商品温层名称") + @Excel(name = "商品温层名称") + private String warmLayerName; + + @ApiModelProperty("闪点") + @Excel(name = "闪点") + private String flashPoint; + + @ApiModelProperty("燃点") + @Excel(name = "燃点") + private String ignitionPoint; + + @ApiModelProperty("是否危险品: 1-是 2-否") + @Excel(name = "是否危险品: 1-是 2-否") + private Integer dangerGoods; + + @ApiModelProperty("危险品等级编码") + @Excel(name = "危险品等级编码") + private String dangerLevel; + + @ApiModelProperty("危险品等级名称") + @Excel(name = "危险品等级名称") + private String dangerLevelName; + + @ApiModelProperty("生产日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date productionTime; + + @ApiModelProperty("失效日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date expirationTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialGoodsRule/MaterialGoodsRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialGoodsRule/MaterialGoodsRuleDTO.java new file mode 100644 index 000000000..630c4e18a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialGoodsRule/MaterialGoodsRuleDTO.java @@ -0,0 +1,134 @@ +package com.mhd.wms.interfaces.dto.materialGoodsRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 物料商品规则对象 material_goods_rule + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialGoodsRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialGoodsRuleId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次编码") + @Excel(name = "批次编码") + private String batchCode; + + @ApiModelProperty("批次名称") + @Excel(name = "批次名称") + private String batchName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("上架规则id") + @Excel(name = "上架规则id") + private Long ruleId; + + @ApiModelProperty("上架规则编码") + @Excel(name = "上架规则编码") + private String ruleCode; + + @ApiModelProperty("上架规则名称") + @Excel(name = "上架规则名称") + private String ruleName; + + @ApiModelProperty("上架库位指定规则id") + @Excel(name = "上架库位指定规则id") + private Long specifyRuleId; + + @ApiModelProperty("上架库位指定规则编码") + @Excel(name = "上架库位指定规则编码") + private String specifyRuleCode; + + @ApiModelProperty("上架库位指定规则名称") + @Excel(name = "上架库位指定规则名称") + private String specifyRuleName; + + @ApiModelProperty("周转规则id") + @Excel(name = "周转规则id") + private Long turnoverRuleId; + + @ApiModelProperty("周转规则编码") + @Excel(name = "周转规则编码") + private String turnoverRuleCode; + + @ApiModelProperty("周转规则名称") + @Excel(name = "周转规则名称") + private String turnoverRuleName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java new file mode 100644 index 000000000..3eaff01ac --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryDTO.java @@ -0,0 +1,147 @@ +package com.mhd.wms.interfaces.dto.materialInventory; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.materialBaseInfo.MaterialBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryDTO extends MaterialBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; + + @ApiModelProperty("物料/库位信息") + @Excel(name = "物料/库位信息") + private String storageInfo; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java new file mode 100644 index 000000000..e91222bed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventory/MaterialInventoryQueryListDTO.java @@ -0,0 +1,171 @@ +package com.mhd.wms.interfaces.dto.materialInventory; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.materialBaseInfo.MaterialBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存对象 material_inventory + * + * @author gen + * @date 2024-05-29 + */ + +@Data +public class MaterialInventoryQueryListDTO extends MaterialBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量") + @Excel(name = "可用数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("盘点是否可用:0-禁用 1-可用") + @Excel(name = "盘点是否可用:0-禁用 1-可用") + private Integer isAble; + + @ApiModelProperty("查询类型 0-全部查询 1-按货主查询 2-按物料查询 3-按批次查询 4-按库位查询 5-按物料/库位查询 6-按容器查询") + @Excel(name = "查询类型 0-全部查询 1-按货主查询 2-按物料查询 3-按批次查询 4-按库位查询 5-按物料/库位查询 6-按容器查询") + private Integer queryType; + + @ApiModelProperty("货主信息") + @Excel(name = "货主信息") + private String shipperInfo; + + @ApiModelProperty("物料信息") + @Excel(name = "物料信息") + private String materialInfo; + + @ApiModelProperty("物料/库位信息") + @Excel(name = "物料/库位信息") + private String storageInfo; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventoryWarning/MaterialInventoryWarningDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventoryWarning/MaterialInventoryWarningDTO.java new file mode 100644 index 000000000..79dee96fd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialInventoryWarning/MaterialInventoryWarningDTO.java @@ -0,0 +1,119 @@ +package com.mhd.wms.interfaces.dto.materialInventoryWarning; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料库存预警对象 material_inventory_warning + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialInventoryWarningDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialInventoryWarningId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("库位下限") + @Excel(name = "库位下限") + private BigDecimal minTemperature; + + @ApiModelProperty("库位上限") + @Excel(name = "库位上限") + private BigDecimal maxTemperature; + + @ApiModelProperty("包装id") + @Excel(name = "包装id") + private Long packId; + + @ApiModelProperty("包装编码") + @Excel(name = "包装编码") + private String packCode; + + @ApiModelProperty("包装名称") + @Excel(name = "包装名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("名称") + @Excel(name = "名称") + private String name; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialMoreDetail/MaterialMoreDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialMoreDetail/MaterialMoreDetailDTO.java new file mode 100644 index 000000000..aa888b799 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialMoreDetail/MaterialMoreDetailDTO.java @@ -0,0 +1,82 @@ +package com.mhd.wms.interfaces.dto.materialMoreDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 物料更多属性明细对象 material_more_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class MaterialMoreDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("物料更多属性明细id") + private Long materialMoreDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("订单物料明细业务唯一id") + @Excel(name = "订单物料明细业务唯一id") + private Long materialDetailUniqueId; + + @ApiModelProperty("批次id") + @Excel(name = "批次id") + private Long batchId; + + @ApiModelProperty("批次详情id") + @Excel(name = "批次详情id") + private Long batchDetailId; + + @ApiModelProperty("批次标签") + @Excel(name = "批次标签") + private String batchLabels; + + @ApiModelProperty("输入控制: 1-必填 2-可选") + @Excel(name = "输入控制: 1-必填 2-可选") + private String inputControl; + + @ApiModelProperty("属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + @Excel(name = "属性格式:1-下拉框 2-日期 3-日期时间 4-数字 5-文本") + private String attributeFormat; + + @ApiModelProperty("属性选项") + @Excel(name = "属性选项") + private String attributeOption; + + @ApiModelProperty("属性值") + @Excel(name = "属性值") + private String attributeValue; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialWarehouseControl/MaterialWarehouseControlDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialWarehouseControl/MaterialWarehouseControlDTO.java new file mode 100644 index 000000000..4f9c58e19 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/materialWarehouseControl/MaterialWarehouseControlDTO.java @@ -0,0 +1,99 @@ +package com.mhd.wms.interfaces.dto.materialWarehouseControl; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 仓库控制信息对象 material_warehouse_control + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class MaterialWarehouseControlDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("商品规则id") + private Long materialWarehouseControlId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("是否效期控制: 1-是 2-否") + @Excel(name = "是否效期控制: 1-是 2-否") + private Integer temperatureControl; + + @ApiModelProperty("周期类型: 1-生产日期 2-失效日期") + @Excel(name = "周期类型: 1-生产日期 2-失效日期") + private Integer cycleType; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer inValidityPeriod; + + @ApiModelProperty("入库效期 单位:天") + @Excel(name = "入库效期 单位:天") + private Integer outValidityPeriod; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("ABC分类:A-A类 B-B类 C-C类") + @Excel(name = "ABC分类:A-A类 B-B类 C-C类") + private String classify; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManage/MobilizeManageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManage/MobilizeManageDTO.java new file mode 100644 index 000000000..2d978ecdd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManage/MobilizeManageDTO.java @@ -0,0 +1,153 @@ +package com.mhd.wms.interfaces.dto.mobilizeManage; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 调拨管理对象 mobilize_manage + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class MobilizeManageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨管理id") + private Long mobilizeManageId; + + @ApiModelProperty("调拨管理id") + private List mobilizeManageIds; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-已完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-已完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨物料种数") + @Excel(name = "调拨物料种数") + private Long mobilizeMaterialQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("调入仓库id") + @Excel(name = "调入仓库id") + private Long inWarehouseId; + + @ApiModelProperty("调入仓库编码") + @Excel(name = "调入仓库编码") + private String inWarehouseCode; + + @ApiModelProperty("调入仓库名称") + @Excel(name = "调入仓库名称") + private String inWarehouseName; + + @ApiModelProperty("调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "调拨审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("调拨审核备注") + @Excel(name = "调拨审核备注") + private String auditRemark; + + @ApiModelProperty("调拨审核人") + @Excel(name = "调拨审核人") + private Long auditBy; + + @ApiModelProperty("调拨审核人姓名") + @Excel(name = "调拨审核人姓名") + private String auditByName; + + @ApiModelProperty("调拨审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "调拨审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("调出仓库id") + @Excel(name = "调出仓库id") + private Long outWarehouseId; + + @ApiModelProperty("调出仓库编码") + @Excel(name = "调出仓库编码") + private String outWarehouseCode; + + @ApiModelProperty("调出仓库名称") + @Excel(name = "调出仓库名称") + private String outWarehouseName; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "调拨管理详情list") + private List mobilizeManageDetailDOList; + + @ApiModelProperty(name = "调拨类型") + private String mobilizeType; + + @ApiModelProperty(name = "调拨类型编码") + private String mobilizeTypeCode; + + @ApiModelProperty("调拨申请日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "调拨申请日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date mobilizeApplicationDate; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManageDetail/MobilizeManageDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManageDetail/MobilizeManageDetailDTO.java new file mode 100644 index 000000000..8e4976d3e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/mobilizeManageDetail/MobilizeManageDetailDTO.java @@ -0,0 +1,178 @@ +package com.mhd.wms.interfaces.dto.mobilizeManageDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 调拨管理详情对象 mobilize_manage_detail + * + * @author gen + * @date 2024-07-08 + */ + +@Data +public class MobilizeManageDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("调拨单详情id") + private Long mobilizeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("调拨单号") + @Excel(name = "调拨单号") + private String mobilizeCode; + + @ApiModelProperty("调拨状态:1-已创建 2-待调拨 3-已完成") + @Excel(name = "调拨状态:1-已创建 2-待调拨 3-已完成") + private Integer mobilizeStatus; + + @ApiModelProperty("调拨数量") + @Excel(name = "调拨数量") + private BigDecimal mobilizeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeMaterialDetail/NoticeMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeMaterialDetail/NoticeMaterialDetailDTO.java new file mode 100644 index 000000000..b501c91f7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeMaterialDetail/NoticeMaterialDetailDTO.java @@ -0,0 +1,146 @@ +package com.mhd.wms.interfaces.dto.noticeMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料明细对象 notice_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class NoticeMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long noticeMaterialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeOrder/NoticeOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeOrder/NoticeOrderDTO.java new file mode 100644 index 000000000..f6a835e76 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/noticeOrder/NoticeOrderDTO.java @@ -0,0 +1,143 @@ +package com.mhd.wms.interfaces.dto.noticeOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.noticeMaterialDetail.NoticeMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * 入库通知单对象 stock_receipt_notice + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class NoticeOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("通知单id") + private Long noticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("客户订单号") + @Excel(name = "客户订单号") + private String customerOrderNumber; + + @ApiModelProperty("类型: 1-入库通知单 2-出库通知单") + @Excel(name = "类型: 1-入库通知单 2-出库通知单") + private Integer type; + + @ApiModelProperty("状态: 1-未生成 2-已生成") + @Excel(name = "状态: 1-未生成 2-已生成") + private Integer status; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计入/出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计入/出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细") + List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailDTO.java new file mode 100644 index 000000000..ef8e166e0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetail/OutMaterialDetailDTO.java @@ -0,0 +1,239 @@ +package com.mhd.wms.interfaces.dto.outMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 物料明细对象 material_detail + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class OutMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + + @ApiModelProperty("已分配数量") + @Excel(name = "已分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("作业数量(例如:分配数量 拣货数量 复核数量)") + @Excel(name = "作业数量(例如:分配数量 拣货数量 复核数量)") + private BigDecimal actualQuantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("分配仓库id") + private Long warehouseId; + + @ApiModelProperty("分配仓库编码") + @Excel(name = "分配仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("分配库区id") + @Excel(name = "分配库区id") + private Long storageSectionId; + + @ApiModelProperty("分配库区编码") + @Excel(name = "分配库区编码") + private String storageCode; + + @ApiModelProperty("分配库区名称") + @Excel(name = "分配库区名称") + private String storageName; + + @ApiModelProperty("分配库位id") + @Excel(name = "分配库位id") + private Long storageLocationId; + + @ApiModelProperty("分配库位编码") + @Excel(name = "分配库位编码") + private String storageLocationCode; + + @ApiModelProperty("分配库位名称") + @Excel(name = "分配库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("是否允许修改: 1-是 2-否 分配后 不再支持修改") + @Excel(name = "是否允许修改: 1-是 2-否") + private Integer allowModify; + + @ApiModelProperty("是否生成拣货单: 1-是 2-否") + @Excel(name = "是否生成拣货单: 1-是 2-否") + private Integer genPickingOrder; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List materialDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("出单号集合") + @Excel(name = "出单号集合") + private List outOrderNumberList; + + @ApiModelProperty("取消分配数量") + @Excel(name = "取消分配数量") + private BigDecimal cancelAllocationQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberDTO.java new file mode 100644 index 000000000..935482021 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberDTO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 出库单物料明细序列号对象 out_material_detail_serial_number + * + * @author gen + * @date 2024-06-03 + */ + +@Data +public class OutMaterialDetailSerialNumberDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细序列号id") + private Long outMaterialDetailSerialNumberId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("来源物料明细id") + @Excel(name = "来源物料明细id") + private Long materialDetailUniqueId; + + @ApiModelProperty("类型:1-拣货序列号") + @Excel(name = "类型:1-拣货序列号") + private Integer type; + + @ApiModelProperty("序列号") + @Excel(name = "序列号") + private String serialNumber; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outOrderAbnormal/OutOrderAbnormalDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outOrderAbnormal/OutOrderAbnormalDTO.java new file mode 100644 index 000000000..3048e6c1c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/outOrderAbnormal/OutOrderAbnormalDTO.java @@ -0,0 +1,87 @@ +package com.mhd.wms.interfaces.dto.outOrderAbnormal; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 出库异常单对象 out_order_abnormal + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class OutOrderAbnormalDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库异常单id") + private Long outOrderAbnormalId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("异常单号") + @Excel(name = "异常单号") + private String abnormalNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货作业单号") + @Excel(name = "拣货作业单号") + private String outTaskOrderNumber; + + @ApiModelProperty("类型:1-拣货 2-复核") + @Excel(name = "类型:1-拣货 2-复核") + private Integer type; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("异常数量 = 作业数量 - 计划数量") + @Excel(name = "异常数量 = 作业数量 - 计划数量") + private BigDecimal abnormalActualQuantity; + + @ApiModelProperty("异常类型: 1-拣货异常 2-复核异常") + @Excel(name = "异常类型: 1-拣货异常 2-复核异常") + private Integer abnormalType; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ExecuteOverStockDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ExecuteOverStockDTO.java new file mode 100644 index 000000000..60e6bd88c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ExecuteOverStockDTO.java @@ -0,0 +1,24 @@ +package com.mhd.wms.interfaces.dto.overStock; + +import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderDetailPO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * TODO 执行越库DTO + * + * @author lianzj + * @version 1.0 + * @date 2024-07-24 16:49:22 + */ +@Data +public class ExecuteOverStockDTO { + + @ApiModelProperty(value = "入库单列表") + private List inOrderDetailPOList; + + @ApiModelProperty(value = "出库单列表") + private List outOrderDetailPOList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/OverStockDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/OverStockDTO.java new file mode 100644 index 000000000..a1c5e4256 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/OverStockDTO.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.dto.overStock; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class OverStockDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("越库管理id") + private Long overStockId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("越库类型:1-直接越库 2-分拨越库") + @Excel(name = "越库类型:1-直接越库 2-分拨越库") + private Long type; + + @ApiModelProperty("越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + @Excel(name = "越库收货状态: 1-已审核 2-部分收货 3-已收货 4-已取消 5-已关闭") + private Integer status; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库行号") + @Excel(name = "入库行号") + private String inOrderLine; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库行号") + @Excel(name = "出库行号") + private String outOrderLine; + + @ApiModelProperty("越库数") + @Excel(name = "越库数") + private BigDecimal overStockNumber; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/QueryOrderOverStockDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/QueryOrderOverStockDTO.java new file mode 100644 index 000000000..d89b9f010 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/QueryOrderOverStockDTO.java @@ -0,0 +1,119 @@ +package com.mhd.wms.interfaces.dto.overStock; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class QueryOrderOverStockDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String inOrderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String inOrderTypeName; + + @ApiModelProperty("预计到货时间 开始") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 开始", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderExpectStartTime; + + @ApiModelProperty("预计到货时间 结束") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 结束", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderExpectEndTime; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String outOrderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String outOrderTypeName; + + @ApiModelProperty("预计出货时间 开始") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 开始", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderExpectStartTime; + + @ApiModelProperty("预计出货时间 结束") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间 结束", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderExpectEndTime; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ReceiptOverStockDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ReceiptOverStockDTO.java new file mode 100644 index 000000000..08bdc6f03 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/overStock/ReceiptOverStockDTO.java @@ -0,0 +1,107 @@ +package com.mhd.wms.interfaces.dto.overStock; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 越库管理对象 over_stock + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class ReceiptOverStockDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("入库单数") + @Excel(name = "入库单数") + private Integer inOrderNum; + + @ApiModelProperty("计划入库数") + @Excel(name = "计划入库数") + private BigDecimal inOrderQuantity; + + @ApiModelProperty("最早预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date inOrderLatestExpectTime; + + @ApiModelProperty("出库单数") + @Excel(name = "出库单数") + private Integer outOrderNum; + + @ApiModelProperty("计划出库数") + @Excel(name = "计划出库数") + private BigDecimal outOrderQuantity; + + @ApiModelProperty("最早预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最早预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderEarlyExpectTime; + + @ApiModelProperty("最晚预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "最晚预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date outOrderLatestExpectTime; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingMaterialDetail/PickingMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingMaterialDetail/PickingMaterialDetailDTO.java new file mode 100644 index 000000000..226ce2e99 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingMaterialDetail/PickingMaterialDetailDTO.java @@ -0,0 +1,207 @@ +package com.mhd.wms.interfaces.dto.pickingMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 拣货单物料明细对象 picking_material_detail + * + * @author gen + * @date 2024-06-08 + */ + +@Data +public class PickingMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("出库单唯一Id") + private Long outUniqueId; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("作业数量:拣货数量") + @Excel(name = "作业数量:拣货数量") + private BigDecimal actualQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingCheckDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingCheckDTO.java new file mode 100644 index 000000000..4934aa294 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingCheckDTO.java @@ -0,0 +1,24 @@ +package com.mhd.wms.interfaces.dto.pickingOrder; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 拣货单对象 picking_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class PickingCheckDTO implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingOrderDTO.java new file mode 100644 index 000000000..243a31a9c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/pickingOrder/PickingOrderDTO.java @@ -0,0 +1,163 @@ +package com.mhd.wms.interfaces.dto.pickingOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.pickingMaterialDetail.PickingMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 拣货单对象 picking_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class PickingOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货单id") + private Long pickingOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + @Excel(name = "拣货单状态: 1-待拣货 2-部分拣货 3-已拣货 4-已关闭") + private Integer status; + + @ApiModelProperty("拣货单类型: 1-普通拣货单 2-波次拣货单") + @Excel(name = "拣货单类型: 1-普通拣货单 2-波次拣货单") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("拣货单id集合") + private List pickingOrderIdList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRule/PutawayRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRule/PutawayRuleDTO.java new file mode 100644 index 000000000..0d24e0e6f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRule/PutawayRuleDTO.java @@ -0,0 +1,57 @@ +package com.mhd.wms.interfaces.dto.putawayRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.putawayRuleDetail.PutawayRuleDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 上架规则对象 putaway_rule + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class PutawayRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("上架规则明细集合") + private List putawayRuleDetailList = new ArrayList<>(); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRuleDetail/PutawayRuleDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRuleDetail/PutawayRuleDetailDTO.java new file mode 100644 index 000000000..e35d802c4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/putawayRuleDetail/PutawayRuleDetailDTO.java @@ -0,0 +1,94 @@ +package com.mhd.wms.interfaces.dto.putawayRuleDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 上架规则明细对象 putaway_rule_detail + * + * @author gen + * @date 2024-07-20 + */ + +@Data +public class PutawayRuleDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("上架规则ID") + @Excel(name = "上架规则ID") + private Long putawayRuleId; + + @ApiModelProperty("主规则ID") + @Excel(name = "主规则ID") + private Integer mainRuleId; + + @ApiModelProperty("主规则") + @Excel(name = "主规则") + private String mainRule; + + @ApiModelProperty("优先级") + @Excel(name = "优先级") + private Long seqNum; + + @ApiModelProperty("库位空间限制;0不限制1限制") + @Excel(name = "库位空间限制;0不限制1限制") + private Integer storageSpaceLimit; + + @ApiModelProperty("库位空间限制类型ID") + @Excel(name = "库位空间限制类型ID") + private String storageSpaceLimitTypeId; + + @ApiModelProperty("库位空间限制类型") + @Excel(name = "库位空间限制类型") + private String storageSpaceLimitType; + + @ApiModelProperty("可用库位类型;0不限制1限制") + @Excel(name = "可用库位类型;0不限制1限制") + private Integer usableLocationType; + + @ApiModelProperty("包含库位类型ID") + @Excel(name = "包含库位类型ID") + private String locationTypeId; + + @ApiModelProperty("包含库位类型") + @Excel(name = "包含库位类型") + private String locationType; + + @ApiModelProperty("可用库位种类;0不限制1限制") + @Excel(name = "可用库位种类;0不限制1限制") + private Integer usableLocationKind; + + @ApiModelProperty("包含库位种类ID") + @Excel(name = "包含库位种类ID") + private String locationKindId; + + @ApiModelProperty("包含库位种类") + @Excel(name = "包含库位种类") + private String locationKind; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRule/QcRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRule/QcRuleDTO.java new file mode 100644 index 000000000..0727e8efd --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRule/QcRuleDTO.java @@ -0,0 +1,63 @@ +package com.mhd.wms.interfaces.dto.qcRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.qcRuleDetail.QcRuleDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 质检规则对象 qc_rule + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "质检规则明细") + private List qcRuleDetailList = new ArrayList<>(); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRuleDetail/QcRuleDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRuleDetail/QcRuleDetailDTO.java new file mode 100644 index 000000000..f225d2ac3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qcRuleDetail/QcRuleDetailDTO.java @@ -0,0 +1,67 @@ +package com.mhd.wms.interfaces.dto.qcRuleDetail; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 质检规则明细对象 qc_rule_detail + * + * @author gen + * @date 2024-07-22 + */ + +@Data +public class QcRuleDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("质检规则ID") + @Excel(name = "质检规则ID") + private Long qcRuleId; + + @ApiModelProperty("质检最小范围(不含)") + @Excel(name = "质检最小范围", readConverterExp = "不=含") + private String qcMinRange; + + @ApiModelProperty("质检最大范围(包含)") + @Excel(name = "质检最大范围", readConverterExp = "包=含") + private String qcMaxRange; + + @ApiModelProperty("数量类型ID") + @Excel(name = "数量类型ID") + private String numTypeId; + + @ApiModelProperty("数量类型") + @Excel(name = "数量类型") + private String numType; + + @ApiModelProperty("数量/比例") + @Excel(name = "数量/比例") + private BigDecimal numRatio; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qualityInspection/QualityInspectionDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qualityInspection/QualityInspectionDTO.java new file mode 100644 index 000000000..7503111be --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/qualityInspection/QualityInspectionDTO.java @@ -0,0 +1,203 @@ +package com.mhd.wms.interfaces.dto.qualityInspection; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 质检管理对象 quality_inspection + * + * @author gen + * @date 2024-05-25 + */ + +@Data +public class QualityInspectionDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("质检管理id") + private Long qualityInspectionId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("质检单号") + @Excel(name = "质检单号") + private String qualityInspectionNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("订单物料明细id") + @Excel(name = "订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("质检数量") + @Excel(name = "质检数量") + private BigDecimal inspectionQuantity; + + @ApiModelProperty("异常数量") + @Excel(name = "异常数量") + private BigDecimal abnormalQuantity; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("异常原因") + @Excel(name = "异常原因") + private String abnormalReason; + + @ApiModelProperty("质检人用户ID") + @Excel(name = "质检人用户ID") + private Long qualityInspectionBy; + + @ApiModelProperty("质检人姓名") + @Excel(name = "质检人姓名") + private String qualityInspectionName; + + @ApiModelProperty("质检时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "质检时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date qualityInspectionTime; + + @ApiModelProperty("质检图片url") + @Excel(name = "质检图片url") + private String qualityInspectionUrl; + + @ApiModelProperty("异常处理状态:1-未处理 2-已处理") + @Excel(name = "异常处理状态:1-未处理 2-已处理") + private Integer handleStatus; + + @ApiModelProperty("处理意见") + @Excel(name = "处理意见") + private String handleOpinion; + + @ApiModelProperty("处理人用户ID") + @Excel(name = "处理人用户ID") + private Long handleBy; + + @ApiModelProperty("处理人姓名") + @Excel(name = "处理人姓名") + private String handleByName; + + @ApiModelProperty("处理时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date handleTime; + + @ApiModelProperty("正常数量物料状态编码") + @Excel(name = "正常数量物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("正常数量物料状态名称") + @Excel(name = "正常数量物料状态名称") + private String materialStatusName; + + @ApiModelProperty("异常数量物料状态编码") + @Excel(name = "异常数量物料状态编码") + private String abnormalMaterialStatusCode; + + @ApiModelProperty("异常数量物料状态名称") + @Excel(name = "异常数量物料状态名称") + private String abnormalMaterialStatusName; + + @ApiModelProperty("是否入库: 1-是 2-否") + @Excel(name = "是否入库: 1-是 2-否") + private Integer warehousing; + + @ApiModelProperty("异常图片url") + @Excel(name = "异常图片url") + private String abnormalHandleUrl; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("订单号") + @Excel(name = "订单号") + private String orderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java new file mode 100644 index 000000000..bf3b952a9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/receiptMaterialDetail/ReceiptMaterialDetailDTO.java @@ -0,0 +1,230 @@ +package com.mhd.wms.interfaces.dto.receiptMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.interfaces.dto.materialMoreDetail.MaterialMoreDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料明细对象 receipt_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ReceiptMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已收货数量") + @Excel(name = "已收货数量") + private BigDecimal alreadyReceiptQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细id") + @Excel(name = "入库单物料明细id") + @JsonSerialize(using = ToStringSerializer.class) + private Long inUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + @ApiModelProperty("是否生成上架单: 1-是 2-否") + @Excel(name = "是否生成上架单: 1-是 2-否") + private Integer genStockShelf; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("更多属性") + private List materialMoreDetailList; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("复合条件查询 物料名称 物料编码 物料条码") + private String compoundOrQuery; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/replenishmentNotice/ReplenishmentNoticeDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/replenishmentNotice/ReplenishmentNoticeDTO.java new file mode 100644 index 000000000..92c0518be --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/replenishmentNotice/ReplenishmentNoticeDTO.java @@ -0,0 +1,87 @@ +package com.mhd.wms.interfaces.dto.replenishmentNotice; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 补货通知单对象 replenishment_notice + * + * @author gen + * @date 2024-06-11 + */ + +@Data +public class ReplenishmentNoticeDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货明细id") + private Long replenishmentNoticeId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("补货数量") + @Excel(name = "补货数量") + private BigDecimal quantity; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/serialNumber/SerialNumberDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/serialNumber/SerialNumberDTO.java new file mode 100644 index 000000000..0466e02bf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/serialNumber/SerialNumberDTO.java @@ -0,0 +1,137 @@ +package com.mhd.wms.interfaces.dto.serialNumber; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 序列号对象 serial_number + * + * @author gen + * @date 2024-07-19 + */ + +@Data +public class SerialNumberDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("序列号id") + private Long serialNumberId; + + @ApiModelProperty("上架单id") + @Excel(name = "上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("序列号") + private String serialNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("上架单物料明细id") + @Excel(name = "上架单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("序列号状态: 1:在库 2:出库") + @Excel(name = "序列号状态: 1:在库 2:出库") + private Integer status; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("库存id") + @Excel(name = "库存id") + private Long materialInventoryId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java new file mode 100644 index 000000000..9b8ea0b25 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shelfMaterialDetail/ShelfMaterialDetailDTO.java @@ -0,0 +1,263 @@ +package com.mhd.wms.interfaces.dto.shelfMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 物料明细对象 shelf_material_detail + * + * @author gen + * @date 2024-06-17 + */ + +@Data +public class ShelfMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已上架数量") + @Excel(name = "已上架数量") + private BigDecimal alreadyShelvesQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-全检 2-抽检 ") + @Excel(name = "质检规则: 1-全检 2-抽检 ") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("物料明细子集") + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftManage/ShiftManageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftManage/ShiftManageDTO.java new file mode 100644 index 000000000..1a47573c8 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftManage/ShiftManageDTO.java @@ -0,0 +1,162 @@ +package com.mhd.wms.interfaces.dto.shiftManage; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO; +import com.mhd.wms.interfaces.dto.shiftMaterialDetail.ShiftMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 移位管理对象 shift_manage + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftManageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("移位单id") + private Long shiftManageId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialTypeQuantity; + + @ApiModelProperty("移位物料种数") + @Excel(name = "移位物料种数") + private Integer shiftMaterialQuantity; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "移位单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("移位单审核备注") + @Excel(name = "移位单审核备注") + private String auditRemark; + + @ApiModelProperty("移位单审核人") + @Excel(name = "移位单审核人") + private Long auditBy; + + @ApiModelProperty("移位单审核人姓名") + @Excel(name = "移位单审核人姓名") + private String auditByName; + + @ApiModelProperty("移位单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "移位单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("是否作废: 1-否 2-是") + @Excel(name = "是否作废: 1-否 2-是") + private Integer nullify; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty(name = "开始时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createStartTime; + + @ApiModelProperty(name = "结束时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @TableField(exist = false) + private Date createEndTime; + + @ApiModelProperty("移位单id") + private List shiftManageIds; + + @ApiModelProperty("移位状态大于某个状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer gtShiftStatus; + + @ApiModelProperty("移位状态小于某个状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer ltShiftStatus; + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List shiftMaterialDetailList; + + @ApiModelProperty("容器移位详情") + @TableField(exist = false) + private List shiftMoveMaterialQuantityList; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftMaterialDetail/ShiftMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftMaterialDetail/ShiftMaterialDetailDTO.java new file mode 100644 index 000000000..58c3cd7c2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/shiftMaterialDetail/ShiftMaterialDetailDTO.java @@ -0,0 +1,261 @@ +package com.mhd.wms.interfaces.dto.shiftMaterialDetail; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 移位物料明细对象 shift_material_detail + * + * @author gen + * @date 2024-07-02 + */ + +@Data +public class ShiftMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + + + + @ApiModelProperty("移位单详情id") + private Long shiftIoDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("物料id") + @Excel(name = "物料id") + private Long materialInventoryId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("移位单号") + @Excel(name = "移位单号") + private String shiftNumber; + + @ApiModelProperty("移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + @Excel(name = "移位状态:1-已创建 2-待移位 3-移位中 4-已完成") + private Integer shiftStatus; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("已移位数量") + @Excel(name = "已移位数量") + private BigDecimal alreadyShiftQuantity; + + @ApiModelProperty("移位数量") + @Excel(name = "移位数量") + private BigDecimal shiftQuantity; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("原始仓库id") + @Excel(name = "原始仓库id") + private Long oldWarehouseId; + + @ApiModelProperty("原始仓库编码") + @Excel(name = "原始仓库编码") + private String oldWarehouseCode; + + @ApiModelProperty("原始仓库名称") + @Excel(name = "原始仓库名称") + private String oldWarehouseName; + + @ApiModelProperty("原始库区id") + @Excel(name = "原始库区id") + private Long oldStorageSectionId; + + @ApiModelProperty("原始库区编码") + @Excel(name = "原始库区编码") + private String oldStorageCode; + + @ApiModelProperty("原始库区名称") + @Excel(name = "原始库区名称") + private String oldStorageName; + + @ApiModelProperty("原始库位id") + @Excel(name = "原始库位id") + private Long oldStorageLocationId; + + @ApiModelProperty("原始库位编码") + @Excel(name = "原始库位编码") + private String oldStorageLocationCode; + + @ApiModelProperty("原始库位名称") + @Excel(name = "原始库位名称") + private String oldStorageLocationName; + + @ApiModelProperty("目标仓库id") + @Excel(name = "目标仓库id") + private Long newWarehouseId; + + @ApiModelProperty("目标仓库编码") + @Excel(name = "目标仓库编码") + private String newWarehouseCode; + + @ApiModelProperty("目标仓库名称") + @Excel(name = "目标仓库名称") + private String newWarehouseName; + + @ApiModelProperty("目标库区id") + @Excel(name = "目标库区id") + private Long newStorageSectionId; + + @ApiModelProperty("目标库区编码") + @Excel(name = "目标库区编码") + private String newStorageCode; + + @ApiModelProperty("目标库区名称") + @Excel(name = "目标库区名称") + private String newStorageName; + + @ApiModelProperty("目标库位id") + @Excel(name = "目标库位id") + private Long newStorageLocationId; + + @ApiModelProperty("目标库位编码") + @Excel(name = "目标库位编码") + private String newStorageLocationCode; + + @ApiModelProperty("目标库位名称") + @Excel(name = "目标库位名称") + private String newStorageLocationName; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("移位类型") + private Integer shiftType; + + + + @ApiModelProperty("移位详情") + @TableField(exist = false) + private List children; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingDistributionDetails/SowingDistributionDetailsDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingDistributionDetails/SowingDistributionDetailsDTO.java new file mode 100644 index 000000000..305cbcf91 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingDistributionDetails/SowingDistributionDetailsDTO.java @@ -0,0 +1,161 @@ +package com.mhd.wms.interfaces.dto.sowingDistributionDetails; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 播种分货明细表对象 wave_out_order_relevance + * + * @author gen + * @date 2024-06-05 + */ + +@Data +public class SowingDistributionDetailsDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种分货详情id") + private Long sowingDistributionDetailsId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("分货类型:1-播种分货 2-按单分货") + @Excel(name = "分货类型") + private Integer type; + + @ApiModelProperty("出库单物料明细id") + @Excel(name = "出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙号") + @Excel(name = "播种墙号") + private Integer sowingWallNumber; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("播种状态:1-未播种,2-播种中,3-播种完成") + @Excel(name = "播种状态:1-未播种,2-播种中,3-播种完成") + private Integer status; + + @ApiModelProperty(value = "播种人用户ID") + private Long sowingBy; + + @ApiModelProperty(name = "播种人姓名") + private String sowingByName; + + @ApiModelProperty(value = "播种时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date sowingTime; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingWall/SowingWallDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingWall/SowingWallDTO.java new file mode 100644 index 000000000..e98668402 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/sowingWall/SowingWallDTO.java @@ -0,0 +1,70 @@ +package com.mhd.wms.interfaces.dto.sowingWall; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 播种墙管理对象 sowing_wall + * + * @author gen + * @date 2024-05-07 + */ + +@Data +public class SowingWallDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("播种墙id") + private Long sowingWallId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("播种墙编码") + @Excel(name = "播种墙编码") + private String sowingWallCode; + + @ApiModelProperty("播种墙层数") + @Excel(name = "播种墙层数") + private Integer layerNum; + + @ApiModelProperty("播种墙列数") + @Excel(name = "播种墙列数") + private Integer columnNumber; + + @ApiModelProperty("启用状态: 1-启用 2-停用") + @Excel(name = "启用状态: 1-启用 2-停用") + private Integer openingUp; + + @ApiModelProperty("是否作废: 1-是 2-否") + @Excel(name = "是否作废: 1-是 2-否") + private Integer nullify; + + @ApiModelProperty("播种墙描述") + @Excel(name = "播种墙描述") + private String sowingWallDesc; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/ImmediateInventoryDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/ImmediateInventoryDTO.java new file mode 100644 index 000000000..80f94e8ee --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/ImmediateInventoryDTO.java @@ -0,0 +1,147 @@ +package com.mhd.wms.interfaces.dto.statementStatistics; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 即时库存DTO + */ +@Data +public class ImmediateInventoryDTO { + + @ApiModelProperty("物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("可用数量 ") + @Excel(name = "可用数量 ") + private BigDecimal allocationQuantity; + + @ApiModelProperty("冻结数量") + @Excel(name = "冻结数量") + private BigDecimal freezeQuantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receivedQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickQuantity; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("库存数量开始") + @Excel(name = "库存数量开始") + private BigDecimal inventoryQuantityStart; + + @ApiModelProperty("库存数量结束") + @Excel(name = "库存数量结束") + private BigDecimal inventoryQuantityEnd; + + @ApiModelProperty("可用数量开始 ") + @Excel(name = "可用数量开始 ") + private BigDecimal allocationQuantityStart; + + @ApiModelProperty("可用数量结束 ") + @Excel(name = "可用数量结束 ") + private BigDecimal allocationQuantityEnd; + + + @ApiModelProperty("冻结数量开始") + @Excel(name = "冻结数量开始") + private BigDecimal freezeQuantityStart; + + @ApiModelProperty("冻结数量结束") + @Excel(name = "冻结数量结束") + private BigDecimal freezeQuantityEnd; + + @ApiModelProperty("收货数量开始") + @Excel(name = "收货数量开始") + private BigDecimal receivedQuantityStart; + + @ApiModelProperty("收货数量结束") + @Excel(name = "收货数量结束") + private BigDecimal receivedQuantityEnd; + + @ApiModelProperty("上架数量开始") + @Excel(name = "上架数量开始") + private BigDecimal shelvesQuantityStart; + + @ApiModelProperty("上架数量结束") + @Excel(name = "上架数量结束") + private BigDecimal shelvesQuantityEnd; + + @ApiModelProperty("拣货数量开始") + @Excel(name = "拣货数量开始") + private BigDecimal pickQuantityStart; + + @ApiModelProperty("拣货数量结束") + @Excel(name = "拣货数量结束") + private BigDecimal pickQuantityEnd; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/WarehousingReportDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/WarehousingReportDTO.java new file mode 100644 index 000000000..24ae43acc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/statementStatistics/WarehousingReportDTO.java @@ -0,0 +1,97 @@ +package com.mhd.wms.interfaces.dto.statementStatistics; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WarehousingReportDTO { + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String materialBarCode; + + @ApiModelProperty("入库数量") + @Excel(name = "入库数量") + private BigDecimal materialQuantity; + + @ApiModelProperty("包装单位 ") + @Excel(name = "包装单位 ") + private String unitName; + + @ApiModelProperty("包装规格") + @Excel(name = "包装规格") + private String packName; + + @ApiModelProperty("入库时间 ") + @Excel(name = "入库时间 ") + private String createTime; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outboundQuantity; + + @ApiModelProperty("变更数量") + @Excel(name = "变更数量") + private BigDecimal changeQuantity; + + @ApiModelProperty("库存增减 ") + @Excel(name = "库存增减") + private String InventoryincreaseDecrease; + + @ApiModelProperty("入库时间开始 ") + @Excel(name = "入库时间开始 ") + private String createTimeStart; + + @ApiModelProperty("入库时间结束 ") + @Excel(name = "入库时间结束 ") + private String createTimeEnd; + + @ApiModelProperty("入库数量开始") + @Excel(name = "入库数量开始") + private BigDecimal materialQuantityStart; + + @ApiModelProperty("入库数量结束") + @Excel(name = "入库数量结束") + private BigDecimal materialQuantityEnd; + + @ApiModelProperty("出库数量开始") + @Excel(name = "出库数量开始") + private BigDecimal outboundQuantityStart; + + @ApiModelProperty("出库数量结束") + @Excel(name = "出库数量结束") + private BigDecimal outboundQuantityEnd; + + @ApiModelProperty("变更数量开始") + @Excel(name = "变更数量开始") + private BigDecimal changeQuantityStart; + + @ApiModelProperty("变更数量结束") + @Excel(name = "变更数量结束") + private BigDecimal changeQuantityEnd; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderBaseDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderBaseDTO.java new file mode 100644 index 000000000..189f2fe9d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderBaseDTO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.dto.stockInOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockInOrderBaseDTO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java new file mode 100644 index 000000000..3002d1e36 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java @@ -0,0 +1,240 @@ +package com.mhd.wms.interfaces.dto.stockInOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 入库单对象 stock_in_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInOrderDTO extends StockInOrderBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库单id") + private Long inOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer status; + + @ApiModelProperty("入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("入库单审核备注") + @Excel(name = "入库单审核备注") + private String auditRemark; + + @ApiModelProperty("入库单审核人") + @Excel(name = "入库单审核人") + private Long auditBy; + + @ApiModelProperty("入库单审核人姓名") + @Excel(name = "入库单审核人姓名") + private String auditByName; + + @ApiModelProperty("入库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库单审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date auditTime; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date closeTime; + + @ApiModelProperty("入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + @Excel(name = "入库单来源: 1-正常录入 2-通知单生成 3-无单收货") + private Integer orderSource; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("入库单id集合") + private List inOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("小于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "小于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer ltStatus; + + @ApiModelProperty("大于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + @Excel(name = "大于某个入库状态: 1-已创建 2-已审核 3-收货中 4-上架中 5-已入库") + private Integer gtStatus; + + @ApiModelProperty("小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer ltAuditStatus; + + @ApiModelProperty("小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "小于入库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer gtAuditStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInTaskOrder/StockInTaskOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInTaskOrder/StockInTaskOrderDTO.java new file mode 100644 index 000000000..3375e6bc0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInTaskOrder/StockInTaskOrderDTO.java @@ -0,0 +1,110 @@ +package com.mhd.wms.interfaces.dto.stockInTaskOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 入库作业单对象 stock_in_task_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockInTaskOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("入库作业单id") + private Long inTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业类型:1-收货 2-上架") + @Excel(name = "作业类型:1-收货 2-上架") + private Integer type; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("作业数量") + @Excel(name = "作业数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderBaseDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderBaseDTO.java new file mode 100644 index 000000000..c637fbb15 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderBaseDTO.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.dto.stockOutOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author ZhouGY + * @title StockInOrderBasePO + * @description: TODO + * @date 2024/5/22 11:50 + **/ +@Data +public class StockOutOrderBaseDTO extends BaseVOEntity { + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("入库单类型编码") + @Excel(name = "入库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("入库单类型名称") + @Excel(name = "入库单类型名称") + private String orderTypeName; + + @ApiModelProperty("供应商id") + @Excel(name = "供应商id") + private Long supplierId; + + @ApiModelProperty("供应商编码") + @Excel(name = "供应商编码") + private String supplierCode; + + @ApiModelProperty("供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty("预计到货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计到货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接入库: 1-是 2-否") + @Excel(name = "是否直接入库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java new file mode 100644 index 000000000..e8f3c636d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutOrder/StockOutOrderDTO.java @@ -0,0 +1,280 @@ +package com.mhd.wms.interfaces.dto.stockOutOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 出库单对象 stock_out_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutOrderDTO extends StockOutOrderBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单id") + private Long outOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("通知单号") + @Excel(name = "通知单号") + private String noticeNumber; + + @ApiModelProperty("出库单号") + @Excel(name = "出库单号") + private String outOrderNumber; + + @ApiModelProperty("出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + @Excel(name = "出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-波次中 6-拣货中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭") + private Integer status; + + @ApiModelProperty("出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + @Excel(name = "出库单审核状态: 1-未审核 2-审核不通过 3-审核通过") + private Integer auditStatus; + + @ApiModelProperty("出库单审核备注") + @Excel(name = "出库单审核备注") + private String auditRemark; + + @ApiModelProperty("出库单审核人") + @Excel(name = "出库单审核人") + private Long auditBy; + + @ApiModelProperty("出库单审核人姓名") + @Excel(name = "出库单审核人姓名") + private String auditByName; + + @ApiModelProperty("出库单审核时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "出库单审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date auditTime; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("预计出货时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date expectTime; + + @ApiModelProperty("供应链订单号") + @Excel(name = "供应链订单号") + private String supplyChainNumber; + + @ApiModelProperty("优先级别编码") + @Excel(name = "优先级别编码") + private String priorityLevelCode; + + @ApiModelProperty("优先级别名称") + @Excel(name = "优先级别名称") + private String priorityLevelName; + + @ApiModelProperty("是否直接出库: 1-是 2-否") + @Excel(name = "是否直接出库: 1-是 2-否") + private Integer directWarehouse; + + @ApiModelProperty("是否复核: 1-是 2-否") + @Excel(name = "是否复核: 1-是 2-否") + private Integer review; + + @ApiModelProperty("附件url") + @Excel(name = "附件url") + private String annexUrl; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单分配数量") + private BigDecimal alreadyAllocationQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("是否取消订单: 1-是 2-否") + @Excel(name = "是否取消订单: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消订单备注") + @Excel(name = "取消订单备注") + private String cancelRemark; + + @ApiModelProperty("取消订单人") + @Excel(name = "取消订单人") + private Long cancelBy; + + @ApiModelProperty("取消订单人姓名") + @Excel(name = "取消订单人姓名") + private String cancelByName; + + @ApiModelProperty("取消订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("是否关闭订单: 1-是 2-否") + @Excel(name = "是否关闭订单: 1-是 2-否") + private Integer closeOrder; + + @ApiModelProperty("关闭订单备注") + @Excel(name = "关闭订单备注") + private String closeRemark; + + @ApiModelProperty("关闭订单人") + @Excel(name = "关闭订单人") + private Long closeBy; + + @ApiModelProperty("关闭订单人姓名") + @Excel(name = "关闭订单人姓名") + private String closeByName; + + @ApiModelProperty("关闭订单时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "关闭订单时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date closeTime; + + @ApiModelProperty("复核状态: 1-未复核 2-复核中 3-已复核") + @Excel(name = "复核状态: 1-未复核 2-复核中 3-已复核") + private Integer checkStatus; + + @ApiModelProperty("复核任务是否下发: 1-是 2-否") + @Excel(name = "复核任务是否下发: 1-是 2-否") + private Integer checkTaskDistribution; + + @ApiModelProperty("复核任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "复核任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTaskDistributionTime; + + @ApiModelProperty("复核作业人用户ID") + @Excel(name = "复核作业人用户ID") + private Long checkOperatorsBy; + + @ApiModelProperty("复核作业人姓名") + @Excel(name = "复核作业人姓名") + private String checkOperatorsName; + + @ApiModelProperty("调度单号") + @Excel(name = "调度单号") + private String mobilizeCode; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("出库单id集合") + private List outOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("物料审核数量") + @Excel(name = "物料审核数量") + private BigDecimal actualQuantity; + + @ApiModelProperty("波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("大于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer gtCheckStatus; + + @ApiModelProperty("小于复核状态: 1-未复核 2-复核中 3-已复核") + private Integer ltCheckStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/StockOutTaskOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/StockOutTaskOrderDTO.java new file mode 100644 index 000000000..6619730f1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/StockOutTaskOrderDTO.java @@ -0,0 +1,162 @@ +package com.mhd.wms.interfaces.dto.stockOutTaskOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 拣货作业单对象 stock_out_task_order + * + * @author gen + * @date 2024-05-28 + */ + +@Data +public class StockOutTaskOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("拣货作业单id") + private Long outTaskOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("作业流水号") + @Excel(name = "作业流水号") + private String serialNumber; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货单状态: 1-待拣货 2-拣货中 3-已拣货") + private Integer status; + + @ApiModelProperty("拣货类型:1-按单拣货 2-按品拣货") + @Excel(name = "拣货类型:1-按单拣货 2-按品拣货") + private Integer type; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("来源单号") + @Excel(name = "来源单号") + private String orderNumber; + + @ApiModelProperty("拣货单号") + @Excel(name = "拣货单号") + private String pickingOrderNumber; + + @ApiModelProperty("物料总数量") + @Excel(name = "物料总数量") + private BigDecimal quantity; + + @ApiModelProperty("物料种类数") + @Excel(name = "物料种类数") + private Integer materialQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货物料种数") + @Excel(name = "拣货物料种数") + private Integer pickingMaterialQuantity; + + @ApiModelProperty("集货库区id") + @Excel(name = "集货库区id") + private Long storageSectionId; + + @ApiModelProperty("集货库区编码") + @Excel(name = "集货库区编码") + private String storageCode; + + @ApiModelProperty("集货库区名称") + @Excel(name = "集货库区名称") + private String storageName; + + @ApiModelProperty("集货库位id") + @Excel(name = "集货库位id") + private Long storageLocationId; + + @ApiModelProperty("集货库位编码") + @Excel(name = "集货库位编码") + private String storageLocationCode; + + @ApiModelProperty("集货库位名称") + @Excel(name = "集货库位名称") + private String storageLocationName; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("作业完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "作业完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date operatorsEndTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("库位分组") + private List taskStorageList; + + @ApiModelProperty("物料分组") + private List taskMaterialList; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskMaterialDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskMaterialDTO.java new file mode 100644 index 000000000..cd9e6d3c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskMaterialDTO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.interfaces.dto.stockOutTaskOrder; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.taskPickingMaterialDetail.TaskPickingMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskMaterialDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("待拣货数量") + @Excel(name = "待拣货数量") + private BigDecimal waitPickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("拣货作业物料详情") + private List taskPickingMaterialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskStorageDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskStorageDTO.java new file mode 100644 index 000000000..c6866eaba --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockOutTaskOrder/TaskStorageDTO.java @@ -0,0 +1,79 @@ +package com.mhd.wms.interfaces.dto.stockOutTaskOrder; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.taskPickingMaterialDetail.TaskPickingMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + + +/** + * 拣货单库位与物料明细中间关系对象 task_picking_storage_material + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskStorageDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("待拣货数量") + @Excel(name = "待拣货数量") + private BigDecimal waitPickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("拣货作业物料详情") + private List taskPickingMaterialDetailList; + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java new file mode 100644 index 000000000..bd92bfe91 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockReceiptOrder/StockReceiptOrderDTO.java @@ -0,0 +1,149 @@ +package com.mhd.wms.interfaces.dto.stockReceiptOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.receiptMaterialDetail.ReceiptMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 收货单对象 stock_receipt_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockReceiptOrderDTO extends StockInOrderBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("收货单id") + private Long receiptOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + @Excel(name = "收货状态: 1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer status; + + @ApiModelProperty("月台id") + @Excel(name = "月台id") + private Long platformId; + + @ApiModelProperty("月台编码") + @Excel(name = "月台编码") + private String platformCode; + + @ApiModelProperty("月台名称 ") + @Excel(name = "月台名称 ") + private String platformName; + + @ApiModelProperty("月台使用时间管理id") + @Excel(name = "月台使用时间管理id") + private Long platformUseTimeId; + + @ApiModelProperty("月台使用开始时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用开始时间", width = 30, dateFormat = "HH:mm") + private Date platformUseStartTime; + + @ApiModelProperty("月台使用结束时间") + @JsonFormat(pattern = "HH:mm") + @DateTimeFormat(pattern = "HH:mm") + @Excel(name = "月台使用结束时间", width = 30, dateFormat = "HH:mm") + private Date platformUseEndTime; + + @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放") + @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放") + private Integer platformUseStatus; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "收货数量") + private Integer materialQuantity; + + @ApiModelProperty("收货物料种数") + @Excel(name = "收货数量") + private Integer receiptMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务是否合并下发: 1-是 2-否") + @Excel(name = "任务是否合并下发: 1-是 2-否") + private Integer taskDistributionMerge; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("收货单id集合") + private List receiptOrderIds; + + @ApiModelProperty("小于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待收货 2-部分收货 3-已收货 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockShelfOrder/StockShelfOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockShelfOrder/StockShelfOrderDTO.java new file mode 100644 index 000000000..25d31b343 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockShelfOrder/StockShelfOrderDTO.java @@ -0,0 +1,120 @@ +package com.mhd.wms.interfaces.dto.stockShelfOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.wms.interfaces.dto.shelfMaterialDetail.ShelfMaterialDetailDTO; +import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderBaseDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 上架单对象 stock_shelf_order + * + * @author gen + * @date 2024-05-21 + */ + +@Data +public class StockShelfOrderDTO extends StockInOrderBaseDTO { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("上架单id") + private Long shelfOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("入库单号") + @Excel(name = "入库单号") + private String inOrderNumber; + + @ApiModelProperty("收货单号") + @Excel(name = "收货单号") + private String receiptOrderNumber; + + @ApiModelProperty("收货作业单号") + private String receiptTaskNumber; + + @ApiModelProperty("上架单号") + @Excel(name = "上架单号") + private String shelfOrderNumber; + + @ApiModelProperty("上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + @Excel(name = "上架状态: 1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer status; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("物料种数") + @Excel(name = "物料种数") + private Integer materialQuantity; + + @ApiModelProperty("上架物料种数") + @Excel(name = "上架物料种数") + private Integer shelvesMaterialQuantity; + + @ApiModelProperty("是否异常: 1-是 2-否") + @Excel(name = "是否异常: 1-是 2-否") + private Integer abnormal; + + @ApiModelProperty("任务是否下发: 1-是 2-否") + @Excel(name = "任务是否下发: 1-是 2-否") + private Integer taskDistribution; + + @ApiModelProperty("任务下发时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "任务下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date taskDistributionTime; + + @ApiModelProperty("作业人用户ID") + @Excel(name = "作业人用户ID") + private Long operatorsBy; + + @ApiModelProperty("作业人姓名") + @Excel(name = "作业人姓名") + private String operatorsName; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("上架单id集合") + private List shelfOrderIds; + + @ApiModelProperty("小于指定状态值:1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer ltStatus; + + @ApiModelProperty("大于指定状态值:1-待上架 2-部分上架 3-已上架 4-已关闭") + private Integer gtStatus; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskHandoverMaterialDetail/TaskHandoverMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskHandoverMaterialDetail/TaskHandoverMaterialDetailDTO.java new file mode 100644 index 000000000..387160832 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskHandoverMaterialDetail/TaskHandoverMaterialDetailDTO.java @@ -0,0 +1,130 @@ +package com.mhd.wms.interfaces.dto.taskHandoverMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 交接作业单物料明细对象 task_handover_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskHandoverMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java new file mode 100644 index 000000000..6720be036 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskPickingMaterialDetail/TaskPickingMaterialDetailDTO.java @@ -0,0 +1,216 @@ +package com.mhd.wms.interfaces.dto.taskPickingMaterialDetail; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 拣货作业单物料明细对象 task_picking_material_detail + * + * @author gen + * @date 2024-07-13 + */ + +@Data +public class TaskPickingMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("拣货状态: 1-待拣货 2-拣货中 3-已拣货") + @Excel(name = "拣货状态: 1-待拣货 2-拣货中 3-已拣货", readConverterExp = "少=拣") + private Integer pickingStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private String packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-否 2-是") + @Excel(name = "是否序列号管理: 1-否 2-是") + private Integer serialNumberManage; + + @ApiModelProperty("物料库存id") + @Excel(name = "物料库存id") + private Long materialInventoryId; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Long level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("序列号") + private List materialDetailSerialNumberList; + + @ApiModelProperty("作业数量:拣货数量") + @Excel(name = "作业数量:拣货数量") + private BigDecimal actualQuantity; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskReceiptMaterialDetail/TaskReceiptMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskReceiptMaterialDetail/TaskReceiptMaterialDetailDTO.java new file mode 100644 index 000000000..bb98d54fe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskReceiptMaterialDetail/TaskReceiptMaterialDetailDTO.java @@ -0,0 +1,204 @@ +package com.mhd.wms.interfaces.dto.taskReceiptMaterialDetail; + + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 收货作业单物料详情对象 task_receipt_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskReceiptMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("收货数量") + @Excel(name = "收货数量") + private BigDecimal receiptQuantity; + + @ApiModelProperty("收货状态: 1-待收货 2-收货中 3-已收货 4-已收货(少收) 5-已收货(超收)") + @Excel(name = "收货状态: 1-待收货 2-收货中 3-已收货 4-已收货", readConverterExp = "少=收") + private Integer receiptStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("是否质检管理: 1-是 2-否") + @Excel(name = "是否质检管理: 1-是 2-否") + private Integer qualityInspectionManage; + + @ApiModelProperty("质检阶段: 1-收货前 2-收货后上架前") + @Excel(name = "质检阶段: 1-收货前 2-收货后上架前") + private Integer qualityInspectionStage; + + @ApiModelProperty("质检规则: 1-目检 2-抽检") + @Excel(name = "质检规则: 1-目检 2-抽检") + private Integer qualityInspectionRule; + + @ApiModelProperty("抽检比例") + @Excel(name = "抽检比例") + private BigDecimal qualityInspectionRatio; + + @ApiModelProperty("质检项: 1-包装 2-纯度") + @Excel(name = "质检项: 1-包装 2-纯度") + private Integer qualityInspectionTerm; + + @ApiModelProperty("质检结果: 1-正常 2-异常") + @Excel(name = "质检结果: 1-正常 2-异常") + private Integer qualityInspectionResults; + + @ApiModelProperty("是否允许超收: 1-是 2-否") + @Excel(name = "是否允许超收: 1-是 2-否") + private Integer allowOvercharge; + + @ApiModelProperty("超收比例") + @Excel(name = "超收比例") + private BigDecimal overchargeRatio; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("分配规则id") + @Excel(name = "分配规则id") + private Long distributeRuleId; + + @ApiModelProperty("分配规则编码") + @Excel(name = "分配规则编码") + private String distributeRuleCode; + + @ApiModelProperty("分配规则名称") + @Excel(name = "分配规则名称") + private String distributeRuleName; + + @ApiModelProperty("容器id") + @Excel(name = "容器id") + private Long containerId; + + @ApiModelProperty("容器编码") + @Excel(name = "容器编码") + private String containerCode; + + @ApiModelProperty("容器类型 数据字典") + @Excel(name = "容器类型 数据字典") + private String containerType; + + @ApiModelProperty("容器类型名称 数据字典") + @Excel(name = "容器类型名称 数据字典") + private String containerTypeName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskShelfMaterialDetail/TaskShelfMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskShelfMaterialDetail/TaskShelfMaterialDetailDTO.java new file mode 100644 index 000000000..10298cd51 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/taskShelfMaterialDetail/TaskShelfMaterialDetailDTO.java @@ -0,0 +1,187 @@ +package com.mhd.wms.interfaces.dto.taskShelfMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 上架作业物料详情对象 task_shelf_material_detail + * + * @author gen + * @date 2024-06-19 + */ + +@Data +public class TaskShelfMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("订单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("作业单号") + @Excel(name = "作业单号") + private String taskNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("上架数量") + @Excel(name = "上架数量") + private BigDecimal shelvesQuantity; + + @ApiModelProperty("上架状态: 1-待上架 2-上架中 3-已上架 4-已上架(少上) 5-已上架(超上)") + @Excel(name = "上架状态: 1-待上架 2-上架中 3-已上架 4-已上架", readConverterExp = "少=上") + private Integer shelvesStatus; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("批次号") + @Excel(name = "批次号") + private String batchNumber; + + @ApiModelProperty("物料状态编码") + @Excel(name = "物料状态编码") + private String materialStatusCode; + + @ApiModelProperty("物料状态名称") + @Excel(name = "物料状态名称") + private String materialStatusName; + + @ApiModelProperty("上架仓库id") + @Excel(name = "上架仓库id") + private Long warehouseId; + + @ApiModelProperty("上架仓库编码") + @Excel(name = "上架仓库编码") + private String warehouseCode; + + @ApiModelProperty("上架仓库名称") + @Excel(name = "上架仓库名称") + private String warehouseName; + + @ApiModelProperty("上架库区id") + @Excel(name = "上架库区id") + private Long storageSectionId; + + @ApiModelProperty("上架库区编码") + @Excel(name = "上架库区编码") + private String storageCode; + + @ApiModelProperty("上架库区名称") + @Excel(name = "上架库区名称") + private String storageName; + + @ApiModelProperty("上架库位id") + @Excel(name = "上架库位id") + private Long storageLocationId; + + @ApiModelProperty("上架库位编码") + @Excel(name = "上架库位编码") + private String storageLocationCode; + + @ApiModelProperty("上架库位名称") + @Excel(name = "上架库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("入库单物料明细唯一Id") + @Excel(name = "入库单物料明细唯一Id") + private Long inUniqueId; + + @ApiModelProperty("收货单物料明细唯一Id") + @Excel(name = "收货单物料明细唯一Id") + private Long receiptUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsAddDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsAddDTO.java new file mode 100644 index 000000000..6496499de --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsAddDTO.java @@ -0,0 +1,17 @@ +package com.mhd.wms.interfaces.dto.userCommonSettings; + +import com.mhd.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserCommonSettingsAddDTO { + @ApiModelProperty("常用设置id") + @Excel(name = "常用设置id") + private Long commonSettingsId; + + + @ApiModelProperty("是否设置为常用 0-否 1-是") + @Excel(name = "是否设置为常用 0-否 1-是") + private Integer isSettings; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsDTO.java new file mode 100644 index 000000000..8f7627040 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/userCommonSettings/UserCommonSettingsDTO.java @@ -0,0 +1,34 @@ +package com.mhd.wms.interfaces.dto.userCommonSettings; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 用户常用设置关联对象 user_common_settings + * + * @author gen + * @date 2024-07-29 + */ + +@Data +public class UserCommonSettingsDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户常用设置id") + private Long userCommonSettingsId; + + @ApiModelProperty("用户id") + @Excel(name = "用户id") + private Long userId; + + @ApiModelProperty("常用设置id") + @Excel(name = "常用设置id") + private Long commonSettingsId; + + @ApiModelProperty(name = "常用设置id集合") + private List userCommonSettingsAddDTOList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveMaterialDetail/WaveMaterialDetailDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveMaterialDetail/WaveMaterialDetailDTO.java new file mode 100644 index 000000000..ab3766de1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveMaterialDetail/WaveMaterialDetailDTO.java @@ -0,0 +1,187 @@ +package com.mhd.wms.interfaces.dto.waveMaterialDetail; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 出库单物料明细对象 wave_material_detail + * + * @author gen + * @date 2024-06-27 + */ + +@Data +public class WaveMaterialDetailDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("出库单物料明细id") + private Long materialDetailId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("业务唯一id") + @Excel(name = "业务唯一id") + @JsonSerialize(using = ToStringSerializer.class) + private Long uniqueId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("物料条形码") + @Excel(name = "物料条形码") + private String barCode; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("库存数量") + @Excel(name = "库存数量") + private BigDecimal inventoryQuantity; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + + @ApiModelProperty("已生成拣货单数量") + @Excel(name = "已生成拣货单数量") + private BigDecimal alreadyGenPickingQuantity; + + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("包装规格id") + @Excel(name = "包装规格id") + private Long packId; + + @ApiModelProperty("包装规格编码") + @Excel(name = "包装规格编码") + private String packCode; + + @ApiModelProperty("包装规格名称") + @Excel(name = "包装规格名称") + private String packName; + + @ApiModelProperty("包装详情id") + @Excel(name = "包装详情id") + private Long packDetailId; + + @ApiModelProperty("单位代码:EA IP CS PL OT") + @Excel(name = "单位代码:EA IP CS PL OT") + private String unitCode; + + @ApiModelProperty("单位名称") + @Excel(name = "单位名称") + private String unitName; + + @ApiModelProperty("单位数量") + @Excel(name = "单位数量") + private BigDecimal unitNumber; + + @ApiModelProperty("物料仓库控制信息id") + @Excel(name = "物料仓库控制信息id") + private Long materialWarehouseControlId; + + @ApiModelProperty("是否序列号管理: 1-是 2-否") + @Excel(name = "是否序列号管理: 1-是 2-否") + private Integer serialNumberManage; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("库区id") + @Excel(name = "库区id") + private Long storageSectionId; + + @ApiModelProperty("库区编码") + @Excel(name = "库区编码") + private String storageCode; + + @ApiModelProperty("库区名称") + @Excel(name = "库区名称") + private String storageName; + + @ApiModelProperty("库位id") + @Excel(name = "库位id") + private Long storageLocationId; + + @ApiModelProperty("库位编码") + @Excel(name = "库位编码") + private String storageLocationCode; + + @ApiModelProperty("库位名称") + @Excel(name = "库位名称") + private String storageLocationName; + + @ApiModelProperty("层级深度,从一级开始递增") + @Excel(name = "层级深度,从一级开始递增") + private Integer level; + + @ApiModelProperty("父级唯一Id") + @Excel(name = "父级唯一Id") + @JsonSerialize(using = ToStringSerializer.class) + private Long parentUniqueId; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveOrder/WaveOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveOrder/WaveOrderDTO.java new file mode 100644 index 000000000..159337ab0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveOrder/WaveOrderDTO.java @@ -0,0 +1,176 @@ +package com.mhd.wms.interfaces.dto.waveOrder; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import com.mhd.wms.interfaces.dto.outMaterialDetail.OutMaterialDetailDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 波次单对象 wave_order + * + * @author gen + * @date 2024-06-04 + */ + +@Data +public class WaveOrderDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("波次单id") + private Long waveOrderId; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("波次单号") + @Excel(name = "波次单号") + private String waveOrderNumber; + + @ApiModelProperty("出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + @Excel(name = "出库状态: 1-已生成 2-部分分配 3-部分分配 4-已分配 5-拣货中 6-拣货完成 7-播种中 9-播种完成 10-已取消") + private Integer status; + + @ApiModelProperty("波次类型编码") + @Excel(name = "波次类型编码") + private String waveOrderTypeCode; + + @ApiModelProperty("波次类型名称") + @Excel(name = "波次类型名称") + private String waveOrderTypeName; + + @ApiModelProperty("出库单数量") + @Excel(name = "出库单数量") + private Integer outOrderQuantity; + + @ApiModelProperty("物料种类数量") + @Excel(name = "物料种类数量") + private Integer materialCategoryQuantity; + + @ApiModelProperty("计划数量") + @Excel(name = "计划数量") + private BigDecimal quantity; + + @ApiModelProperty("净重 单位:千克") + @Excel(name = "净重 单位:千克") + private BigDecimal weightLimit; + + @ApiModelProperty("体积 单位:立方米") + @Excel(name = "体积 单位:立方米") + private BigDecimal volumeLimit; + + @ApiModelProperty("分配数量") + @Excel(name = "分配数量") + private BigDecimal allocationQuantity; + @ApiModelProperty("拣货数量") + @Excel(name = "拣货数量") + private BigDecimal pickingQuantity; + + @ApiModelProperty("复核数量") + @Excel(name = "复核数量") + private BigDecimal checkQuantity; + + @ApiModelProperty("出库数量") + @Excel(name = "出库数量") + private BigDecimal outQuantity; + + @ApiModelProperty("播种数量") + @Excel(name = "播种数量") + private BigDecimal sowingQuantity; + + @ApiModelProperty("仓库id") + @Excel(name = "仓库id") + private Long warehouseId; + + @ApiModelProperty("仓库编码") + @Excel(name = "仓库编码") + private String warehouseCode; + + @ApiModelProperty("仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty("货主id") + @Excel(name = "货主id") + private Long shipperId; + + @ApiModelProperty("货主编码") + @Excel(name = "货主编码") + private String shipperCode; + + @ApiModelProperty("货主名称") + @Excel(name = "货主名称") + private String shipperName; + + @ApiModelProperty("出库单类型编码") + @Excel(name = "出库单类型编码") + private String orderTypeCode; + + @ApiModelProperty("出库单类型名称") + @Excel(name = "出库单类型名称") + private String orderTypeName; + + @ApiModelProperty("客户id") + @Excel(name = "客户id") + private Long customerId; + + @ApiModelProperty("客户编码") + @Excel(name = "客户编码") + private String customerCode; + + @ApiModelProperty("客户名称") + @Excel(name = "客户名称") + private String customerName; + + @ApiModelProperty("是否取消波次: 1-是 2-否") + @Excel(name = "是否取消波次: 1-是 2-否") + private Integer cancelOrder; + + @ApiModelProperty("取消波次备注") + @Excel(name = "取消波次备注") + private String cancelRemark; + + @ApiModelProperty("取消波次人") + @Excel(name = "取消波次人") + private Long cancelBy; + + @ApiModelProperty("取消波次人姓名") + @Excel(name = "取消波次人姓名") + private String cancelByName; + + @ApiModelProperty("取消波次时间") + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消波次时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cancelTime; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; + + @ApiModelProperty("波次单id集合") + private List waveOrderIds; + + @ApiModelProperty("物料明细") + private List materialDetailList; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveRule/WaveRuleDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveRule/WaveRuleDTO.java new file mode 100644 index 000000000..42aa2bc4e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/waveRule/WaveRuleDTO.java @@ -0,0 +1,94 @@ +package com.mhd.wms.interfaces.dto.waveRule; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 波次规则对象 wave_rule + * + * @author gen + * @date 2024-07-23 + */ + +@Data +public class WaveRuleDTO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("编号") + private Long id; + + @ApiModelProperty("最高组织id") + @Excel(name = "最高组织id") + private Long topOrganizationId; + + @ApiModelProperty("组织表id") + @Excel(name = "组织表id") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("规则编码") + @Excel(name = "规则编码") + private String ruleNum; + + @ApiModelProperty("规则名称") + @Excel(name = "规则名称") + private String ruleName; + + @ApiModelProperty("启用状态;0启用1停用") + @Excel(name = "启用状态;0启用1停用") + private Integer enabled; + + @ApiModelProperty("单次生成波次数量") + @Excel(name = "单次生成波次数量") + private Long waveNumber; + + @ApiModelProperty("订单数量上限") + @Excel(name = "订单数量上限") + private Long orderNumMax; + + @ApiModelProperty("订单数量下限") + @Excel(name = "订单数量下限") + private Long orderNumMin; + + @ApiModelProperty("物料种类上限") + @Excel(name = "物料种类上限") + private Long materialTypeMax; + + @ApiModelProperty("物料种类下限") + @Excel(name = "物料种类下限") + private Long materialTypeMin; + + @ApiModelProperty("物料数量上限") + @Excel(name = "物料数量上限") + private Long materialNumMax; + + @ApiModelProperty("物料数量下限") + @Excel(name = "物料数量下限") + private Long materialNumMin; + + @ApiModelProperty("允许多货主;0不允许1允许") + @Excel(name = "允许多货主;0不允许1允许") + private Integer isMoreShipper; + + @ApiModelProperty("允许跨库区;0不允许1允许") + @Excel(name = "允许跨库区;0不允许1允许") + private Integer isCrossDepot; + + @ApiModelProperty("备注") + @Excel(name = "备注") + private String remark; + + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "权限菜单ID") + private Long permissionMenuId; +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/containerUsageRecord/ContainerUsageRecordApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/containerUsageRecord/ContainerUsageRecordApi.java new file mode 100644 index 000000000..2c298c7ae --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/containerUsageRecord/ContainerUsageRecordApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.containerUsageRecord; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.containerUsageRecord.ContainerUsageRecordApplicationService; +import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO; +import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO; +import com.mhd.wms.interfaces.assember.containerUsageRecord.ContainerUsageRecordAssembler; +import com.mhd.wms.interfaces.dto.containerUsageRecord.ContainerUsageRecordDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 容器使用记录Api + * + * @author gen + * @date 2024-08-22 + */ +@RestController +@RequestMapping("/containerUsageRecordApi") +public class ContainerUsageRecordApi extends BaseController { + @Autowired + private ContainerUsageRecordApplicationService containerUsageRecordApplicationService; + + @Resource + private ContainerUsageRecordAssembler containerUsageRecordAssembler; + + /** + * 分页查询容器使用记录列表 + */ + @ApiOperation("查询容器使用记录列表") + @GetMapping("/list") + public TableDataInfo list(ContainerUsageRecordDTO containerUsageRecordDTO) + { + //转换实体 + ContainerUsageRecordDO containerUsageRecordDO = containerUsageRecordAssembler.toDO(containerUsageRecordDTO); + startPage(); + List list = containerUsageRecordApplicationService.queryList(containerUsageRecordDO); + return getDataTable(list); + } + + /** + * 编辑容器使用记录 + */ + @ApiOperation("编辑容器使用记录") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ContainerUsageRecordDTO containerUsageRecordDTO) + { + //转换实体 + ContainerUsageRecordDO containerUsageRecordDO = containerUsageRecordAssembler.toDO(containerUsageRecordDTO); + if(containerUsageRecordDTO.getId() != null){ + return toAjax(containerUsageRecordApplicationService.update(containerUsageRecordDO)); + }else { + return toAjax(containerUsageRecordApplicationService.insert(containerUsageRecordDO)); + } + } + + /** + * 批量删除容器使用记录 + */ + @ApiOperation("批量删除容器使用记录") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable String[] ids) + { + return toAjax(containerUsageRecordApplicationService.delete(ids)); + } + + /** + * 获取容器使用记录详细信息 + */ + @ApiOperation("获取容器使用记录") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") String id) + { + return AjaxResult.success(containerUsageRecordApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/deliveTask/DeliveTaskApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/deliveTask/DeliveTaskApi.java new file mode 100644 index 000000000..eac4717d0 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/deliveTask/DeliveTaskApi.java @@ -0,0 +1,91 @@ +package com.mhd.wms.interfaces.facadeApi.deliveTask; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.deliveTask.DeliveTaskApplicationService; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.interfaces.assember.deliveTask.DeliveTaskAssembler; +import com.mhd.wms.interfaces.dto.deliveTask.DeliveTaskDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 下发任务Api + * + * @author gen + * @date 2024-07-26 + */ +@RestController +@RequestMapping("/deliveTaskApi") +public class DeliveTaskApi extends BaseController { + @Autowired + private DeliveTaskApplicationService deliveTaskApplicationService; + + @Resource + private DeliveTaskAssembler deliveTaskAssembler; + + /** + * 分页查询下发任务列表 + */ + @ApiOperation("查询下发任务列表") + @GetMapping("/list") + public TableDataInfo list(DeliveTaskDTO deliveTaskDTO) + { + //转换实体 + DeliveTaskDO deliveTaskDO = deliveTaskAssembler.toDO(deliveTaskDTO); + startPage(); + List list = deliveTaskApplicationService.queryList(deliveTaskDO); + return getDataTable(list); + } + + /** + * 批量 新增下发任务 + */ + @ApiOperation("批量 新增下发任务") + @PostMapping("/batchInsert") + public AjaxResult batchInsert(@RequestBody List deliveTaskDTOList) + { + //转换实体 + List deliveTaskDOList = JSONUtil.toList(JSONUtil.parseArray(deliveTaskDTOList), DeliveTaskDO.class); + return toAjax(deliveTaskApplicationService.batchInsert(deliveTaskDOList)); + } + + /** + * 批量删除下发任务 + */ + @ApiOperation("批量删除下发任务") + @DeleteMapping("/deleteByIds/{deliverTaskIds}") + public AjaxResult delete(@PathVariable Long[] deliverTaskIds) + { + return toAjax(deliveTaskApplicationService.delete(deliverTaskIds)); + } + + /** + * 获取下发任务详细信息 + */ + @ApiOperation("获取下发任务") + @GetMapping(value = "/getInfo/{deliverTaskId}") + public AjaxResult getInfo(@PathVariable("deliverTaskId") Long deliverTaskId) + { + return AjaxResult.success(deliveTaskApplicationService.getInfo(deliverTaskId)); + } + + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/differentManage/DifferentManageApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/differentManage/DifferentManageApi.java new file mode 100644 index 000000000..631d021c9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/differentManage/DifferentManageApi.java @@ -0,0 +1,107 @@ +package com.mhd.wms.interfaces.facadeApi.differentManage; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.differentManage.DifferentManageApplicationService; +import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO; +import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO; +import com.mhd.wms.interfaces.assember.differentManage.DifferentManageAssembler; +import com.mhd.wms.interfaces.dto.differentManage.DifferentManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 差异单Api + * + * @author gen + * @date 2024-07-20 + */ +@RestController +@RequestMapping("/differentManageApi") +public class DifferentManageApi extends BaseController { + @Autowired + private DifferentManageApplicationService differentManageApplicationService; + + @Resource + private DifferentManageAssembler differentManageAssembler; + + /** + * 分页查询差异单列表 + */ + @ApiOperation("查询差异单列表") + @GetMapping("/list") + public TableDataInfo list(DifferentManageDTO differentManageDTO) { + //转换实体 + DifferentManageDO differentManageDO = differentManageAssembler.toDO(differentManageDTO); + startPage(); + List list = differentManageApplicationService.queryList(differentManageDO); + return getDataTable(list); + } + + /** + * 编辑差异单 + */ + @ApiOperation("编辑差异单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody DifferentManageDTO differentManageDTO) { + //转换实体 + DifferentManageDO differentManageDO = differentManageAssembler.toDO(differentManageDTO); + if (differentManageDTO.getDifferentManageId() != null) { + return toAjax(differentManageApplicationService.update(differentManageDO)); + } else { + return toAjax(differentManageApplicationService.insert(differentManageDO)); + } + } + + /** + * 批量删除差异单 + */ + @ApiOperation("批量删除差异单") + @DeleteMapping("/deleteByIds/{differentManageIds}") + public AjaxResult delete(@PathVariable Long[] differentManageIds) { + return toAjax(differentManageApplicationService.delete(differentManageIds)); + } + + /** + * 获取差异单详细信息 + */ + @ApiOperation("获取差异单") + @GetMapping(value = "/getInfo/{differentManageId}") + public AjaxResult getInfo(@PathVariable("differentManageId") Long differentManageId) { + return AjaxResult.success(differentManageApplicationService.getInfo(differentManageId)); + } + + /** + * 差异过账 + */ + @ApiOperation("差异过账") + @PostMapping(value = "/differentAccount") + public AjaxResult differentAccount(@RequestBody DifferentManageDTO differentManageDTO){ + // 重盘 + DifferentManageDO differentManageDO = differentManageAssembler.toDO(differentManageDTO); + return AjaxResult.success(differentManageApplicationService.differentRollback(differentManageDO)); + } + + @ApiOperation("查询差异过账明细") + @GetMapping(value = "/differentAccountDetail/{differentManageId}") + public AjaxResult differentAccountDetail(@PathVariable Long differentManageId){ + return AjaxResult.success(differentManageApplicationService.getDifferentManageDO(differentManageId)); + } + + /** + * 重盘 + */ + @ApiOperation("重盘") + @PostMapping(value = "/resetDifferent") + public AjaxResult resetDifferent(@RequestBody DifferentManageDTO differentManageDTO){ + // 重盘 + DifferentManageDO differentManageDO = differentManageAssembler.toDO(differentManageDTO); + return AjaxResult.success(differentManageApplicationService.resetDifferent(differentManageDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/handoverTaskOrder/HandoverTaskOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/handoverTaskOrder/HandoverTaskOrderApi.java new file mode 100644 index 000000000..b6cbe83c1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/handoverTaskOrder/HandoverTaskOrderApi.java @@ -0,0 +1,110 @@ +package com.mhd.wms.interfaces.facadeApi.handoverTaskOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.handoverTaskOrder.HandoverTaskOrderApplicationService; +import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO; +import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO; +import com.mhd.wms.interfaces.assember.handoverTaskOrder.HandoverTaskOrderAssembler; +import com.mhd.wms.interfaces.dto.handoverTaskOrder.HandoverTaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 交接作业单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/handoverTaskOrderApi") +public class HandoverTaskOrderApi extends BaseController { + @Autowired + private HandoverTaskOrderApplicationService handoverTaskOrderApplicationService; + + @Resource + private HandoverTaskOrderAssembler handoverTaskOrderAssembler; + + /** + * 分页查询交接作业单列表 + */ + @ApiOperation("查询交接作业单列表") + @GetMapping("/list") + public TableDataInfo list(HandoverTaskOrderDTO handoverTaskOrderDTO) + { + //转换实体 + HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO); + startPage(); + List list = handoverTaskOrderApplicationService.queryList(handoverTaskOrderDO); + return getDataTable(list); + } + + /** + * 编辑交接作业单 + */ + @ApiOperation("编辑交接作业单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) + { + //转换实体 + HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDOByEdit(handoverTaskOrderDTO); + if(handoverTaskOrderDTO.getHandoverTaskOrderId() != null){ + return toAjax(handoverTaskOrderApplicationService.update(handoverTaskOrderDO)); + }else { + return toAjax(handoverTaskOrderApplicationService.insert(handoverTaskOrderDO)); + } + } + + /** + * 批量删除交接作业单 + */ + @ApiOperation("批量删除交接作业单") + @DeleteMapping("/deleteByIds/{outTaskOrderIds}") + public AjaxResult delete(@PathVariable Long[] outTaskOrderIds) + { + return toAjax(handoverTaskOrderApplicationService.delete(outTaskOrderIds)); + } + + /** + * 获取交接作业单详细信息 + */ + @ApiOperation("获取交接作业单") + @GetMapping(value = "/getInfo/{outTaskOrderId}") + public AjaxResult getInfo(@PathVariable("outTaskOrderId") Long outTaskOrderId) + { + return AjaxResult.success(handoverTaskOrderApplicationService.getInfo(outTaskOrderId)); + } + + + @ApiOperation("分配月台") + @PostMapping("/allocationPlatform") + public AjaxResult allocationPlatform(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) { + HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO); + return toAjax(handoverTaskOrderApplicationService.allocationPlatform(handoverTaskOrderDO)); + } + + @ApiOperation("释放月台") + @PostMapping("/releasePlatform") + public AjaxResult releasePlatform(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) { + HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO); + return toAjax(handoverTaskOrderApplicationService.releasePlatform(handoverTaskOrderDO)); + } + + + @ApiOperation("完成交接") + @PostMapping("/completeHandover") + public AjaxResult completeHandover(@RequestBody HandoverTaskOrderDTO handoverTaskOrderDTO) { + HandoverTaskOrderDO handoverTaskOrderDO = handoverTaskOrderAssembler.toDO(handoverTaskOrderDTO); + return toAjax(handoverTaskOrderApplicationService.completeHandover(handoverTaskOrderDO)); + } + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java new file mode 100644 index 000000000..0a756e040 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetail/InMaterialDetailApi.java @@ -0,0 +1,83 @@ +package com.mhd.wms.interfaces.facadeApi.inMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inMaterialDetail.InMaterialDetailApplicationService; +import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO; +import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO; +import com.mhd.wms.interfaces.assember.inMaterialDetail.InMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料明细Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/materialDetailApi") +public class InMaterialDetailApi extends BaseController { + @Autowired + private InMaterialDetailApplicationService inMaterialDetailApplicationService; + @Resource + private InMaterialDetailAssembler inMaterialDetailAssembler; + + /** + * 分页查询物料明细列表 + */ + @ApiOperation("查询物料明细列表") + @GetMapping("/list") + public TableDataInfo list(InMaterialDetailDTO inMaterialDetailDTO) + { + //转换实体 + InMaterialDetailDO inMaterialDetailDO = inMaterialDetailAssembler.toDO(inMaterialDetailDTO); + startPage(); + List list = inMaterialDetailApplicationService.queryList(inMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑物料明细 + */ + @ApiOperation("编辑物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InMaterialDetailDTO inMaterialDetailDTO) + { + //转换实体 + InMaterialDetailDO inMaterialDetailDO = inMaterialDetailAssembler.toDOByEdit(inMaterialDetailDTO); + if(inMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(inMaterialDetailApplicationService.update(inMaterialDetailDO)); + }else { + return toAjax(inMaterialDetailApplicationService.insert(inMaterialDetailDO)); + } + } + + /** + * 批量删除物料明细 + */ + @ApiOperation("批量删除物料明细") + @DeleteMapping("/deleteByIds/{materialDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailIds) + { + return toAjax(inMaterialDetailApplicationService.delete(materialDetailIds)); + } + + /** + * 获取物料明细详细信息 + */ + @ApiOperation("获取物料明细") + @GetMapping(value = "/getInfo/{materialDetailId}") + public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId) + { + return AjaxResult.success(inMaterialDetailApplicationService.getInfo(materialDetailId)); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApi.java new file mode 100644 index 000000000..b1ac806b1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApi.java @@ -0,0 +1,102 @@ +package com.mhd.wms.interfaces.facadeApi.inMaterialDetailSerialNumber; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inMaterialDetailSerialNumber.InMaterialDetailSerialNumberApplicationService; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO; +import com.mhd.wms.interfaces.assember.inMaterialDetailSerialNumber.InMaterialDetailSerialNumberAssembler; +import com.mhd.wms.interfaces.dto.inMaterialDetailSerialNumber.InMaterialDetailSerialNumberDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料明细序列号Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/materialDetailSerialNumberApi") +public class InMaterialDetailSerialNumberApi extends BaseController { + @Autowired + private InMaterialDetailSerialNumberApplicationService inMaterialDetailSerialNumberApplicationService; + + @Resource + private InMaterialDetailSerialNumberAssembler inMaterialDetailSerialNumberAssembler; + + /** + * 分页查询物料明细序列号列表 + */ + @ApiOperation("查询物料明细序列号列表") + @GetMapping("/list") + public TableDataInfo list(InMaterialDetailSerialNumberDTO inMaterialDetailSerialNumberDTO) + { + //转换实体 + InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO = inMaterialDetailSerialNumberAssembler.toDO(inMaterialDetailSerialNumberDTO); + startPage(); + List list = inMaterialDetailSerialNumberApplicationService.queryList(InMaterialDetailSerialNumberDO); + return getDataTable(list); + } + + /** + * 编辑物料明细序列号 + */ + @ApiOperation("编辑物料明细序列号") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InMaterialDetailSerialNumberDTO inMaterialDetailSerialNumberDTO) + { + //转换实体 + InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO = inMaterialDetailSerialNumberAssembler.toDOByEdit(inMaterialDetailSerialNumberDTO); + if(inMaterialDetailSerialNumberDTO.getMaterialDetailSerialNumberId() != null){ + return toAjax(inMaterialDetailSerialNumberApplicationService.update(InMaterialDetailSerialNumberDO)); + }else { + return toAjax(inMaterialDetailSerialNumberApplicationService.insert(InMaterialDetailSerialNumberDO)); + } + } + + /** + * 批量删除物料明细序列号 + */ + @ApiOperation("批量删除物料明细序列号") + @DeleteMapping("/deleteByIds/{materialDetailSerialNumberIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailSerialNumberIds) + { + return toAjax(inMaterialDetailSerialNumberApplicationService.delete(materialDetailSerialNumberIds)); + } + + /** + * 获取物料明细序列号详细信息 + */ + @ApiOperation("获取物料明细序列号") + @GetMapping(value = "/getInfo/{materialDetailSerialNumberId}") + public AjaxResult getInfo(@PathVariable("materialDetailSerialNumberId") Long materialDetailSerialNumberId) + { + return AjaxResult.success(inMaterialDetailSerialNumberApplicationService.getInfo(materialDetailSerialNumberId)); + } + + + /** + * 查询物料明细序列号 + */ + @ApiOperation("查询物料明细序列号") + @GetMapping("/getMaterialDetailSerialNumberList/{materialDetailUniqueId}") + public AjaxResult getMaterialDetailSerialNumberList(@PathVariable("materialDetailUniqueId") Long materialDetailUniqueId) { + //转换实体 + InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO = new InMaterialDetailSerialNumberDO(); + InMaterialDetailSerialNumberDO.setMaterialDetailUniqueId(materialDetailUniqueId); + List list = inMaterialDetailSerialNumberApplicationService.queryList(InMaterialDetailSerialNumberDO); + return AjaxResult.success(list); + } + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inOrderAbnormal/InOrderAbnormalApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inOrderAbnormal/InOrderAbnormalApi.java new file mode 100644 index 000000000..d0350078d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inOrderAbnormal/InOrderAbnormalApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.inOrderAbnormal; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inOrderAbnormal.InOrderAbnormalApplicationService; +import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO; +import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO; +import com.mhd.wms.interfaces.assember.inOrderAbnormal.InOrderAbnormalAssembler; +import com.mhd.wms.interfaces.dto.inOrderAbnormal.InOrderAbnormalDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 入库异常单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/inOrderAbnormalApi") +public class InOrderAbnormalApi extends BaseController { + @Autowired + private InOrderAbnormalApplicationService inOrderAbnormalApplicationService; + + @Resource + private InOrderAbnormalAssembler inOrderAbnormalAssembler; + + /** + * 分页查询入库异常单列表 + */ + @ApiOperation("查询入库异常单列表") + @GetMapping("/list") + public TableDataInfo list(InOrderAbnormalDTO inOrderAbnormalDTO) + { + //转换实体 + InOrderAbnormalDO inOrderAbnormalDO = inOrderAbnormalAssembler.toDO(inOrderAbnormalDTO); + startPage(); + List list = inOrderAbnormalApplicationService.queryList(inOrderAbnormalDO); + return getDataTable(list); + } + + /** + * 编辑入库异常单 + */ + @ApiOperation("编辑入库异常单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InOrderAbnormalDTO inOrderAbnormalDTO) + { + //转换实体 + InOrderAbnormalDO inOrderAbnormalDO = inOrderAbnormalAssembler.toDOByEdit(inOrderAbnormalDTO); + if(inOrderAbnormalDTO.getInOrderAbnormalId() != null){ + return toAjax(inOrderAbnormalApplicationService.update(inOrderAbnormalDO)); + }else { + return toAjax(inOrderAbnormalApplicationService.insert(inOrderAbnormalDO)); + } + } + + /** + * 批量删除入库异常单 + */ + @ApiOperation("批量删除入库异常单") + @DeleteMapping("/deleteByIds/{inOrderAbnormalIds}") + public AjaxResult delete(@PathVariable Long[] inOrderAbnormalIds) + { + return toAjax(inOrderAbnormalApplicationService.delete(inOrderAbnormalIds)); + } + + /** + * 获取入库异常单详细信息 + */ + @ApiOperation("获取入库异常单") + @GetMapping(value = "/getInfo/{inOrderAbnormalId}") + public AjaxResult getInfo(@PathVariable("inOrderAbnormalId") Long inOrderAbnormalId) + { + return AjaxResult.success(inOrderAbnormalApplicationService.getInfo(inOrderAbnormalId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAdjustmentRecord/InventoryAdjustmentRecordApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAdjustmentRecord/InventoryAdjustmentRecordApi.java new file mode 100644 index 000000000..8f98f0784 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAdjustmentRecord/InventoryAdjustmentRecordApi.java @@ -0,0 +1,120 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryAdjustmentRecord; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryAdjustmentRecord.InventoryAdjustmentRecordApplicationService; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO; +import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO; +import com.mhd.wms.interfaces.assember.inventoryAdjustmentRecord.InventoryAdjustmentRecordAssembler; +import com.mhd.wms.interfaces.dto.inventoryAdjustmentRecord.InventoryAdjustmentRecordDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存调整记录 + * + * @author gen + * @date 2024-07-17 + */ +@RestController +@RequestMapping("/inventoryAdjustmentRecordApi") +public class InventoryAdjustmentRecordApi extends BaseController { + @Autowired + private InventoryAdjustmentRecordApplicationService inventoryAdjustmentRecordApplicationService; + + @Resource + private InventoryAdjustmentRecordAssembler inventoryAdjustmentRecordAssembler; + + /** + * 分页查询库存调整记录列表 + */ + @ApiOperation("查询库存调整记录列表") + @GetMapping("/list") + public TableDataInfo list(InventoryAdjustmentRecordDTO inventoryAdjustmentRecordDTO) + { + //转换实体 + InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO = inventoryAdjustmentRecordAssembler.toDO(inventoryAdjustmentRecordDTO); + startPage(); + List list = inventoryAdjustmentRecordApplicationService.queryList(inventoryAdjustmentRecordDO); + return getDataTable(list); + } + + /** + * 编辑库存调整记录 + */ + @ApiOperation("编辑库存调整记录") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryAdjustmentRecordDTO inventoryAdjustmentRecordDTO) + { + //转换实体 + InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO = inventoryAdjustmentRecordAssembler.toDO(inventoryAdjustmentRecordDTO); + if(inventoryAdjustmentRecordDTO.getInventoryAdjustmentId() != null){ + return toAjax(inventoryAdjustmentRecordApplicationService.update(inventoryAdjustmentRecordDO)); + }else { + return toAjax(inventoryAdjustmentRecordApplicationService.insert(inventoryAdjustmentRecordDO)); + } + } + + /** + * 批量删除库存调整记录 + */ + @ApiOperation("批量删除库存调整记录") + @DeleteMapping("/deleteByIds/{inventoryAdjustmentIds}") + public AjaxResult delete(@PathVariable Long[] inventoryAdjustmentIds) + { + return toAjax(inventoryAdjustmentRecordApplicationService.delete(inventoryAdjustmentIds)); + } + + /** + * 获取库存调整记录详细信息 + */ + @ApiOperation("获取库存调整记录") + @GetMapping(value = "/getInfo/{inventoryAdjustmentId}") + public AjaxResult getInfo(@PathVariable("inventoryAdjustmentId") Long inventoryAdjustmentId) + { + return AjaxResult.success(inventoryAdjustmentRecordApplicationService.getInfo(inventoryAdjustmentId)); + } + + /** + * @description:库存调整 + * @param inventoryAdjustmentRecordDTO + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-18 9:28:47 + */ + @ApiOperation("库存调整") + @PostMapping("/inventoryAdjust") + public AjaxResult inventoryAdjust(@RequestBody InventoryAdjustmentRecordDTO inventoryAdjustmentRecordDTO) + { + //转换实体 + InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO = inventoryAdjustmentRecordAssembler.toDO(inventoryAdjustmentRecordDTO); + return AjaxResult.success(inventoryAdjustmentRecordApplicationService.inventoryAdjust(inventoryAdjustmentRecordDO)); + } + + + /** + * @description:库存冻结 + * @param inventoryAdjustmentRecordDTO + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-18 14:57:51 + */ + @ApiOperation("库存冻结") + @PostMapping("/inventoryFrozen") + public AjaxResult inventoryFrozen(@RequestBody InventoryAdjustmentRecordDTO inventoryAdjustmentRecordDTO) + { + //转换实体 + InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO = inventoryAdjustmentRecordAssembler.toDO(inventoryAdjustmentRecordDTO); + return AjaxResult.success(inventoryAdjustmentRecordApplicationService.inventoryFrozenForAll(inventoryAdjustmentRecordDO)); + } + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRule/InventoryAllocationRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRule/InventoryAllocationRuleApi.java new file mode 100644 index 000000000..6e9383af4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRule/InventoryAllocationRuleApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryAllocationRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryAllocationRule.InventoryAllocationRuleApplicationService; +import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO; +import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO; +import com.mhd.wms.interfaces.assember.inventoryAllocationRule.InventoryAllocationRuleAssembler; +import com.mhd.wms.interfaces.dto.inventoryAllocationRule.InventoryAllocationRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存分配规则Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/inventoryAllocationRuleApi") +public class InventoryAllocationRuleApi extends BaseController { + @Autowired + private InventoryAllocationRuleApplicationService inventoryAllocationRuleApplicationService; + + @Resource + private InventoryAllocationRuleAssembler inventoryAllocationRuleAssembler; + + /** + * 分页查询库存分配规则列表 + */ + @ApiOperation("查询库存分配规则列表") + @GetMapping("/list") + public TableDataInfo list(InventoryAllocationRuleDTO inventoryAllocationRuleDTO) + { + //转换实体 + InventoryAllocationRuleDO inventoryAllocationRuleDO = inventoryAllocationRuleAssembler.toDO(inventoryAllocationRuleDTO); + startPage(); + List list = inventoryAllocationRuleApplicationService.queryList(inventoryAllocationRuleDO); + return getDataTable(list); + } + + /** + * 编辑库存分配规则 + */ + @ApiOperation("编辑库存分配规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryAllocationRuleDTO inventoryAllocationRuleDTO) + { + //转换实体 + InventoryAllocationRuleDO inventoryAllocationRuleDO = inventoryAllocationRuleAssembler.toDO(inventoryAllocationRuleDTO); + if(inventoryAllocationRuleDTO.getId() != null){ + return toAjax(inventoryAllocationRuleApplicationService.update(inventoryAllocationRuleDO)); + }else { + return toAjax(inventoryAllocationRuleApplicationService.insert(inventoryAllocationRuleDO)); + } + } + + /** + * 批量删除库存分配规则 + */ + @ApiOperation("批量删除库存分配规则") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(inventoryAllocationRuleApplicationService.delete(ids)); + } + + /** + * 获取库存分配规则详细信息 + */ + @ApiOperation("获取库存分配规则") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(inventoryAllocationRuleApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApi.java new file mode 100644 index 000000000..ff5785703 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryAllocationRuleDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailApplicationService; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO; +import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO; +import com.mhd.wms.interfaces.assember.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailAssembler; +import com.mhd.wms.interfaces.dto.inventoryAllocationRuleDetail.InventoryAllocationRuleDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存规则分配明细Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/inventoryAllocationRuleDetailApi") +public class InventoryAllocationRuleDetailApi extends BaseController { + @Autowired + private InventoryAllocationRuleDetailApplicationService inventoryAllocationRuleDetailApplicationService; + + @Resource + private InventoryAllocationRuleDetailAssembler inventoryAllocationRuleDetailAssembler; + + /** + * 分页查询库存规则分配明细列表 + */ + @ApiOperation("查询库存规则分配明细列表") + @GetMapping("/list") + public TableDataInfo list(InventoryAllocationRuleDetailDTO inventoryAllocationRuleDetailDTO) + { + //转换实体 + InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO = inventoryAllocationRuleDetailAssembler.toDO(inventoryAllocationRuleDetailDTO); + startPage(); + List list = inventoryAllocationRuleDetailApplicationService.queryList(inventoryAllocationRuleDetailDO); + return getDataTable(list); + } + + /** + * 编辑库存规则分配明细 + */ + @ApiOperation("编辑库存规则分配明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryAllocationRuleDetailDTO inventoryAllocationRuleDetailDTO) + { + //转换实体 + InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO = inventoryAllocationRuleDetailAssembler.toDO(inventoryAllocationRuleDetailDTO); + if(inventoryAllocationRuleDetailDTO.getId() != null){ + return toAjax(inventoryAllocationRuleDetailApplicationService.update(inventoryAllocationRuleDetailDO)); + }else { + return toAjax(inventoryAllocationRuleDetailApplicationService.insert(inventoryAllocationRuleDetailDO)); + } + } + + /** + * 批量删除库存规则分配明细 + */ + @ApiOperation("批量删除库存规则分配明细") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(inventoryAllocationRuleDetailApplicationService.delete(ids)); + } + + /** + * 获取库存规则分配明细详细信息 + */ + @ApiOperation("获取库存规则分配明细") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(inventoryAllocationRuleDetailApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingDetail/InventoryStandingDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingDetail/InventoryStandingDetailApi.java new file mode 100644 index 000000000..7ba96cc65 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingDetail/InventoryStandingDetailApi.java @@ -0,0 +1,77 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryStandingDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryStandingDetail.InventoryStandingDetailApplicationService; +import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO; +import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO; +import com.mhd.wms.interfaces.assember.inventoryStandingDetail.InventoryStandingDetailAssembler; +import com.mhd.wms.interfaces.dto.inventoryStandingDetail.InventoryStandingDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存台账追溯查询 + * + * @author gen + * @date 2024-07-13 + */ +@RestController +@RequestMapping("/inventoryStandingDetailApi") +public class InventoryStandingDetailApi extends BaseController { + @Autowired + private InventoryStandingDetailApplicationService inventoryStandingDetailApplicationService; + + @Resource + private InventoryStandingDetailAssembler inventoryStandingDetailAssembler; + + /** + * 分页查询库存台账追溯详情列表 + */ + @ApiOperation("查询库存台账追溯详情列表") + @GetMapping("/list") + public TableDataInfo list(InventoryStandingDetailDTO inventoryStandingDetailDTO) + { + //转换实体 + InventoryStandingDetailDO inventoryStandingDetailDO = inventoryStandingDetailAssembler.toDO(inventoryStandingDetailDTO); + startPage(); + List list = inventoryStandingDetailApplicationService.queryList(inventoryStandingDetailDO); + return getDataTable(list); + } + + /** + * 批量删除库存台账追溯详情 + */ + @ApiOperation("批量删除库存台账追溯详情") + @DeleteMapping("/deleteByIds/{inventoryStandingDetailIds}") + public AjaxResult delete(@PathVariable Long[] inventoryStandingDetailIds) + { + return toAjax(inventoryStandingDetailApplicationService.delete(inventoryStandingDetailIds)); + } + + /** + * 获取库存台账追溯详情详细信息 + */ + @ApiOperation("获取库存台账追溯详情") + @GetMapping(value = "/getInfo/{inventoryStandingDetailId}") + public AjaxResult getInfo(@PathVariable("inventoryStandingDetailId") Long inventoryStandingDetailId) + { + return AjaxResult.success(inventoryStandingDetailApplicationService.getInfo(inventoryStandingDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingReport/InventoryStandingReportApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingReport/InventoryStandingReportApi.java new file mode 100644 index 000000000..6ddf26cdb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryStandingReport/InventoryStandingReportApi.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryStandingReport; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryStandingReport.InventoryStandingReportApplicationService; +import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO; +import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO; +import com.mhd.wms.interfaces.assember.inventoryStandingReport.InventoryStandingReportAssembler; +import com.mhd.wms.interfaces.dto.inventoryStandingReport.InventoryStandingReportDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存台账报表 + * + * @author gen + * @date 2024-07-12 + */ +@RestController +@RequestMapping("/inventoryStandingReportApi") +public class InventoryStandingReportApi extends BaseController { + @Autowired + private InventoryStandingReportApplicationService inventoryStandingReportApplicationService; + + @Resource + private InventoryStandingReportAssembler inventoryStandingReportAssembler; + + /** + * 分页查询库存台账报列表 + */ + @ApiOperation("查询库存台账报列表") + @GetMapping("/list") + public TableDataInfo list(InventoryStandingReportDTO inventoryStandingReportDTO) + { + //转换实体 + InventoryStandingReportDO inventoryStandingReportDO = inventoryStandingReportAssembler.toDO(inventoryStandingReportDTO); + startPage(); + List list = inventoryStandingReportApplicationService.queryList(inventoryStandingReportDO); + return getDataTable(list); + } + + /** + * 编辑库存台账报 + */ + @ApiOperation("编辑库存台账报") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryStandingReportDTO inventoryStandingReportDTO) + { + //转换实体 + InventoryStandingReportDO inventoryStandingReportDO = inventoryStandingReportAssembler.toDO(inventoryStandingReportDTO); + if(inventoryStandingReportDTO.getInventoryStandingId() != null){ + return toAjax(inventoryStandingReportApplicationService.update(inventoryStandingReportDO)); + }else { + return toAjax(inventoryStandingReportApplicationService.insert(inventoryStandingReportDO)); + } + } + + /** + * 批量删除库存台账报 + */ + @ApiOperation("批量删除库存台账报") + @DeleteMapping("/deleteByIds/{inventoryStandingIds}") + public AjaxResult delete(@PathVariable Long[] inventoryStandingIds) + { + return toAjax(inventoryStandingReportApplicationService.delete(inventoryStandingIds)); + } + + /** + * 获取库存台账报详细信息 + */ + @ApiOperation("获取库存台账报") + @GetMapping(value = "/getInfo/{inventoryStandingId}") + public AjaxResult getInfo(@PathVariable("inventoryStandingId") Long inventoryStandingId) + { + return AjaxResult.success(inventoryStandingReportApplicationService.getInfo(inventoryStandingId)); + } + + + /** + * 获取库存台账报详细信息 + */ + @ApiOperation("获取库存台账报详细信息") + @GetMapping(value = "/getInventoryStandingInfo") + public AjaxResult getInventoryStandingInfo(InventoryStandingReportDTO inventoryStandingReportDTO) + { + //转换实体 + InventoryStandingReportDO inventoryStandingReportDO = inventoryStandingReportAssembler.toDO(inventoryStandingReportDTO); + return AjaxResult.success(inventoryStandingReportApplicationService.getInventoryStandingInfo(inventoryStandingReportDO)); + } + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRule/InventoryTurnoverRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRule/InventoryTurnoverRuleApi.java new file mode 100644 index 000000000..50e4bf004 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRule/InventoryTurnoverRuleApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryTurnoverRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryTurnoverRule.InventoryTurnoverRuleApplicationService; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO; +import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO; +import com.mhd.wms.interfaces.assember.inventoryTurnoverRule.InventoryTurnoverRuleAssembler; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRule.InventoryTurnoverRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存周转规则Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/inventoryTurnoverRuleApi") +public class InventoryTurnoverRuleApi extends BaseController { + @Autowired + private InventoryTurnoverRuleApplicationService inventoryTurnoverRuleApplicationService; + + @Resource + private InventoryTurnoverRuleAssembler inventoryTurnoverRuleAssembler; + + /** + * 分页查询库存周转规则列表 + */ + @ApiOperation("查询库存周转规则列表") + @GetMapping("/list") + public TableDataInfo list(InventoryTurnoverRuleDTO inventoryTurnoverRuleDTO) + { + //转换实体 + InventoryTurnoverRuleDO inventoryTurnoverRuleDO = inventoryTurnoverRuleAssembler.toDO(inventoryTurnoverRuleDTO); + startPage(); + List list = inventoryTurnoverRuleApplicationService.queryList(inventoryTurnoverRuleDO); + return getDataTable(list); + } + + /** + * 编辑库存周转规则 + */ + @ApiOperation("编辑库存周转规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryTurnoverRuleDTO inventoryTurnoverRuleDTO) + { + //转换实体 + InventoryTurnoverRuleDO inventoryTurnoverRuleDO = inventoryTurnoverRuleAssembler.toDO(inventoryTurnoverRuleDTO); + if(inventoryTurnoverRuleDTO.getId() != null){ + return toAjax(inventoryTurnoverRuleApplicationService.update(inventoryTurnoverRuleDO)); + }else { + return toAjax(inventoryTurnoverRuleApplicationService.insert(inventoryTurnoverRuleDO)); + } + } + + /** + * 批量删除库存周转规则 + */ + @ApiOperation("批量删除库存周转规则") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable("ids") Long[] ids) + { + return toAjax(inventoryTurnoverRuleApplicationService.delete(ids)); + } + + /** + * 获取库存周转规则详细信息 + */ + @ApiOperation("获取库存周转规则") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(inventoryTurnoverRuleApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApi.java new file mode 100644 index 000000000..6ce936ff5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryTurnoverRuleDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailApplicationService; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO; +import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO; +import com.mhd.wms.interfaces.assember.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailAssembler; +import com.mhd.wms.interfaces.dto.inventoryTurnoverRuleDetail.InventoryTurnoverRuleDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存周转规则明细Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/inventoryTurnoverRuleDetailApi") +public class InventoryTurnoverRuleDetailApi extends BaseController { + @Autowired + private InventoryTurnoverRuleDetailApplicationService inventoryTurnoverRuleDetailApplicationService; + + @Resource + private InventoryTurnoverRuleDetailAssembler inventoryTurnoverRuleDetailAssembler; + + /** + * 分页查询库存周转规则明细列表 + */ + @ApiOperation("查询库存周转规则明细列表") + @GetMapping("/list") + public TableDataInfo list(InventoryTurnoverRuleDetailDTO inventoryTurnoverRuleDetailDTO) + { + //转换实体 + InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO = inventoryTurnoverRuleDetailAssembler.toDO(inventoryTurnoverRuleDetailDTO); + startPage(); + List list = inventoryTurnoverRuleDetailApplicationService.queryList(inventoryTurnoverRuleDetailDO); + return getDataTable(list); + } + + /** + * 编辑库存周转规则明细 + */ + @ApiOperation("编辑库存周转规则明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryTurnoverRuleDetailDTO inventoryTurnoverRuleDetailDTO) + { + //转换实体 + InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO = inventoryTurnoverRuleDetailAssembler.toDO(inventoryTurnoverRuleDetailDTO); + if(inventoryTurnoverRuleDetailDTO.getId() != null){ + return toAjax(inventoryTurnoverRuleDetailApplicationService.update(inventoryTurnoverRuleDetailDO)); + }else { + return toAjax(inventoryTurnoverRuleDetailApplicationService.insert(inventoryTurnoverRuleDetailDO)); + } + } + + /** + * 批量删除库存周转规则明细 + */ + @ApiOperation("批量删除库存周转规则明细") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(inventoryTurnoverRuleDetailApplicationService.delete(ids)); + } + + /** + * 获取库存周转规则明细详细信息 + */ + @ApiOperation("获取库存周转规则明细") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(inventoryTurnoverRuleDetailApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryWarningAnalyze/InventoryWarningAnalyzeApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryWarningAnalyze/InventoryWarningAnalyzeApi.java new file mode 100644 index 000000000..d5852de6c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inventoryWarningAnalyze/InventoryWarningAnalyzeApi.java @@ -0,0 +1,102 @@ +package com.mhd.wms.interfaces.facadeApi.inventoryWarningAnalyze; + +import com.mhd.common.core.annotation.ValidateJob; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.inventoryWarningAnalyze.InventoryWarningAnalyzeApplicationService; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO; +import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO; +import com.mhd.wms.interfaces.assember.inventoryWarningAnalyze.InventoryWarningAnalyzeAssembler; +import com.mhd.wms.interfaces.dto.inventoryWarningAnalyze.InventoryWarningAnalyzeDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存预警分析Api + * + * @author gen + * @date 2024-07-24 + */ +@RestController +@RequestMapping("/inventoryWarningAnalyzeApi") +public class InventoryWarningAnalyzeApi extends BaseController { + @Autowired + private InventoryWarningAnalyzeApplicationService inventoryWarningAnalyzeApplicationService; + + @Resource + private InventoryWarningAnalyzeAssembler inventoryWarningAnalyzeAssembler; + + /** + * 分页查询库存预警分析列表 + */ + @ApiOperation("查询库存预警分析列表") + @GetMapping("/list") + public TableDataInfo list(InventoryWarningAnalyzeDTO inventoryWarningAnalyzeDTO) { + //转换实体 + InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO = inventoryWarningAnalyzeAssembler.toDO(inventoryWarningAnalyzeDTO); + startPage(); + List list = inventoryWarningAnalyzeApplicationService.queryList(inventoryWarningAnalyzeDO); + return getDataTable(list); + } + + /** + * 编辑库存预警分析 + */ + @ApiOperation("编辑库存预警分析") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InventoryWarningAnalyzeDTO inventoryWarningAnalyzeDTO) { + //转换实体 + InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO = inventoryWarningAnalyzeAssembler.toDO(inventoryWarningAnalyzeDTO); + if (inventoryWarningAnalyzeDTO.getInventoryWarningAnalyzeId() != null) { + return toAjax(inventoryWarningAnalyzeApplicationService.update(inventoryWarningAnalyzeDO)); + } else { + return toAjax(inventoryWarningAnalyzeApplicationService.insert(inventoryWarningAnalyzeDO)); + } + } + + /** + * 批量删除库存预警分析 + */ + @ApiOperation("批量删除库存预警分析") + @DeleteMapping("/deleteByIds/{inventoryWarningAnalyzeIds}") + public AjaxResult delete(@PathVariable Long[] inventoryWarningAnalyzeIds) { + return toAjax(inventoryWarningAnalyzeApplicationService.delete(inventoryWarningAnalyzeIds)); + } + + /** + * 获取库存预警分析详细信息 + */ + @ApiOperation("获取库存预警分析") + @GetMapping(value = "/getInfo/{inventoryWarningAnalyzeId}") + public AjaxResult getInfo(@PathVariable("inventoryWarningAnalyzeId") Long inventoryWarningAnalyzeId) { + return AjaxResult.success(inventoryWarningAnalyzeApplicationService.getInfo(inventoryWarningAnalyzeId)); + } + + /** + * 编辑库存预警分析 + */ + @ApiOperation("编辑库存预警分析") + @PostMapping("/add") + public AjaxResult add(@RequestBody InventoryWarningAnalyzeDTO inventoryWarningAnalyzeDTO) { + //转换实体 + InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO = inventoryWarningAnalyzeAssembler.toDO(inventoryWarningAnalyzeDTO); + return toAjax(inventoryWarningAnalyzeApplicationService.insert(inventoryWarningAnalyzeDO)); + } + + + /** + * 库存预警定时任务 + */ + @ApiOperation("库存预警定时任务") + @ValidateJob + @PostMapping("/inventoryWarningTask") + public void inventoryWarningTask() { + inventoryWarningAnalyzeApplicationService.inventoryWarningTask(); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigationManage/InvestigationManageApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigationManage/InvestigationManageApi.java new file mode 100644 index 000000000..66445fe7b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigationManage/InvestigationManageApi.java @@ -0,0 +1,118 @@ +package com.mhd.wms.interfaces.facadeApi.investigationManage; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.investigationManage.InvestigationManageApplicationService; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.interfaces.assember.investigationManage.InvestigationManageAssembler; +import com.mhd.wms.interfaces.dto.investigationManage.InvestigationManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 盘点管理Api + * + * @author gen + * @date 2024-07-10 + */ +@RestController +@RequestMapping("/investigationManageApi") +public class InvestigationManageApi extends BaseController { + @Autowired + private InvestigationManageApplicationService investigationManageApplicationService; + + @Resource + private InvestigationManageAssembler investigationManageAssembler; + + /** + * 分页查询盘点管理列表 + */ + @ApiOperation("查询盘点管理列表") + @GetMapping("/list") + public TableDataInfo list(InvestigationManageDTO investigationManageDTO) { + //转换实体 + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDOByList(investigationManageDTO); + startPage(); + List list = investigationManageApplicationService.queryList(investigationManageDO); + return getDataTable(list); + } + + /** + * 编辑盘点管理 + */ + @ApiOperation("添加编辑盘点单子") + @PostMapping("/addEdit") + public AjaxResult addEdit(@RequestBody InvestigationManageDTO investigationManageDTO) { + //转换实体 + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDO(investigationManageDTO); + if (investigationManageDTO.getInvestigationManageId() != null) { + return toAjax(investigationManageApplicationService.update(investigationManageDO)); + } else { + return toAjax(investigationManageApplicationService.insert(investigationManageDO)); + } + } + + /** + * 批量删除盘点管理 + */ + @ApiOperation("批量删除盘点管理") + @DeleteMapping("/deleteByIds/{investigationManageIds}") + public AjaxResult delete(@PathVariable Long[] investigationManageIds) { + return toAjax(investigationManageApplicationService.delete(investigationManageIds)); + } + + /** + * 获取盘点管理详细信息 + */ + @ApiOperation("获取盘点管理") + @GetMapping(value = "/getInfo/{investigationManageId}") + public AjaxResult getInfo(@PathVariable("investigationManageId") Long investigationManageId) { + return AjaxResult.success(investigationManageApplicationService.getInfo(investigationManageId)); + } + + /** + * 审核 + */ + @ApiOperation("审核") + @PostMapping("/auditState") + public AjaxResult auditState(@RequestBody InvestigationManageDTO investigationManageDTO) { + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDO(investigationManageDTO); + //转换实体 + return toAjax(investigationManageApplicationService.auditState(investigationManageDO)); + } + + /** + * 任务下发 + */ + @ApiOperation("任务下发") + @PostMapping(value = "/taskDistribution") + public AjaxResult taskDistribution(@RequestBody InvestigationManageDTO investigationManageDTO) { + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDO(investigationManageDTO); + return AjaxResult.success(investigationManageApplicationService.taskDistribution(investigationManageDO)); + } + + /** + * 盘点 + */ + @ApiOperation("盘点") + @PostMapping(value = "/investigationCount") + public AjaxResult investigationCount(@RequestBody InvestigationManageDTO investigationManageDTO){ + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDO(investigationManageDTO); + return AjaxResult.success(investigationManageApplicationService.investigationCount(investigationManageDO)); + } + + @ApiOperation("完成盘点") + @PostMapping(value = "/finishInvestigation") + public AjaxResult finishInvestigation(@RequestBody InvestigationManageDTO investigationManageDTO){ + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDO(investigationManageDTO); + return AjaxResult.success(investigationManageApplicationService.finishInvestigation(investigationManageDO.getInvestigationManageId())); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigetionManageDetail/InvestigetionManageDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigetionManageDetail/InvestigetionManageDetailApi.java new file mode 100644 index 000000000..64f1ddec4 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/investigetionManageDetail/InvestigetionManageDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.investigetionManageDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.investigetionManageDetail.InvestigetionManageDetailApplicationService; +import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO; +import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO; +import com.mhd.wms.interfaces.assember.investigetionManageDetail.InvestigetionManageDetailAssembler; +import com.mhd.wms.interfaces.dto.investigetionManageDetail.InvestigetionManageDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 盘点详情管理Api + * + * @author gen + * @date 2024-07-10 + */ +@RestController +@RequestMapping("/investigetionManageDetailApi") +public class InvestigetionManageDetailApi extends BaseController { + @Autowired + private InvestigetionManageDetailApplicationService investigetionManageDetailApplicationService; + + @Resource + private InvestigetionManageDetailAssembler investigetionManageDetailAssembler; + + /** + * 分页查询盘点详情管理列表 + */ + @ApiOperation("查询盘点详情管理列表") + @GetMapping("/list") + public TableDataInfo list(InvestigetionManageDetailDTO investigetionManageDetailDTO) + { + //转换实体 + InvestigetionManageDetailDO investigetionManageDetailDO = investigetionManageDetailAssembler.toDO(investigetionManageDetailDTO); + startPage(); + List list = investigetionManageDetailApplicationService.queryList(investigetionManageDetailDO); + return getDataTable(list); + } + + /** + * 编辑盘点详情管理 + */ + @ApiOperation("编辑盘点详情管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody InvestigetionManageDetailDTO investigetionManageDetailDTO) + { + //转换实体 + InvestigetionManageDetailDO investigetionManageDetailDO = investigetionManageDetailAssembler.toDO(investigetionManageDetailDTO); + if(investigetionManageDetailDTO.getInvestigationManageDetailId() != null){ + return toAjax(investigetionManageDetailApplicationService.update(investigetionManageDetailDO)); + }else { + return toAjax(investigetionManageDetailApplicationService.insert(investigetionManageDetailDO)); + } + } + + /** + * 批量删除盘点详情管理 + */ + @ApiOperation("批量删除盘点详情管理") + @DeleteMapping("/deleteByIds/{investigationManageDetailIds}") + public AjaxResult delete(@PathVariable Long[] investigationManageDetailIds) + { + return toAjax(investigetionManageDetailApplicationService.delete(investigationManageDetailIds)); + } + + /** + * 获取盘点详情管理详细信息 + */ + @ApiOperation("获取盘点详情管理") + @GetMapping(value = "/getInfo/{investigationManageDetailId}") + public AjaxResult getInfo(@PathVariable("investigationManageDetailId") Long investigationManageDetailId) + { + return AjaxResult.success(investigetionManageDetailApplicationService.getInfo(investigationManageDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBarCode/MaterialBarCodeApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBarCode/MaterialBarCodeApi.java new file mode 100644 index 000000000..ac23f62a5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBarCode/MaterialBarCodeApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.materialBarCode; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialBarCode.MaterialBarCodeApplicationService; +import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO; +import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO; +import com.mhd.wms.interfaces.assember.materialBarCode.MaterialBarCodeAssembler; +import com.mhd.wms.interfaces.dto.materialBarCode.MaterialBarCodeDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料条码信息Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialBarCodeApi") +public class MaterialBarCodeApi extends BaseController { + @Autowired + private MaterialBarCodeApplicationService materialBarCodeApplicationService; + + @Resource + private MaterialBarCodeAssembler materialBarCodeAssembler; + + /** + * 分页查询物料条码信息列表 + */ + @ApiOperation("查询物料条码信息列表") + @GetMapping("/list") + public TableDataInfo list(MaterialBarCodeDTO materialBarCodeDTO) + { + //转换实体 + MaterialBarCodeDO materialBarCodeDO = materialBarCodeAssembler.toDO(materialBarCodeDTO); + startPage(); + List list = materialBarCodeApplicationService.queryList(materialBarCodeDO); + return getDataTable(list); + } + + /** + * 编辑物料条码信息 + */ + @ApiOperation("编辑物料条码信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialBarCodeDTO materialBarCodeDTO) + { + //转换实体 + MaterialBarCodeDO materialBarCodeDO = materialBarCodeAssembler.toDO(materialBarCodeDTO); + if(materialBarCodeDTO.getMaterialBarCodeId() != null){ + return toAjax(materialBarCodeApplicationService.update(materialBarCodeDO)); + }else { + return toAjax(materialBarCodeApplicationService.insert(materialBarCodeDO)); + } + } + + /** + * 批量删除物料条码信息 + */ + @ApiOperation("批量删除物料条码信息") + @DeleteMapping("/deleteByIds/{materialBarCodeIds}") + public AjaxResult delete(@PathVariable Long[] materialBarCodeIds) + { + return toAjax(materialBarCodeApplicationService.delete(materialBarCodeIds)); + } + + /** + * 获取物料条码信息详细信息 + */ + @ApiOperation("获取物料条码信息") + @GetMapping(value = "/getInfo/{materialBarCodeId}") + public AjaxResult getInfo(@PathVariable("materialBarCodeId") Long materialBarCodeId) + { + return AjaxResult.success(materialBarCodeApplicationService.getInfo(materialBarCodeId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java new file mode 100644 index 000000000..3f789154e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialBaseInfo/MaterialBaseInfoApi.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.facadeApi.materialBaseInfo; + +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialBaseInfo.MaterialBaseInfoApplicationService; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; +import com.mhd.wms.interfaces.assember.materialBaseInfo.MaterialBaseInfoAssembler; +import com.mhd.wms.interfaces.dto.materialBaseInfo.MaterialBaseInfoDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料基础信息Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialBaseInfoApi") +public class MaterialBaseInfoApi extends BaseController { + @Autowired + private MaterialBaseInfoApplicationService materialBaseInfoApplicationService; + + @Resource + private MaterialBaseInfoAssembler materialBaseInfoAssembler; + + /** + * 分页查询物料基础信息列表 + */ + @ApiOperation("查询物料基础信息列表") + @GetMapping("/list") + public TableDataInfo list(MaterialBaseInfoDTO materialBaseInfoDTO) + { + //转换实体 + MaterialBaseInfoDO materialBaseInfoDO = materialBaseInfoAssembler.toDO(materialBaseInfoDTO); + startPage(); + List list = materialBaseInfoApplicationService.queryList(materialBaseInfoDO); + return getDataTable(list); + } + + /** + * 编辑物料基础信息 + */ + @ApiOperation("编辑物料基础信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialBaseInfoDTO materialBaseInfoDTO) + { + //转换实体 + MaterialBaseInfoDO materialBaseInfoDO = materialBaseInfoAssembler.toDO(materialBaseInfoDTO); + if(1 == materialBaseInfoDTO.getUpdateFeign()){ + return toAjax(materialBaseInfoApplicationService.update(materialBaseInfoDO)); + }else { + return toAjax(materialBaseInfoApplicationService.insert(materialBaseInfoDO)); + } + } + + /** + * 批量删除物料基础信息 + */ + @ApiOperation("批量删除物料基础信息") + @DeleteMapping("/deleteByIds/{materialBaseInfoIds}") + public AjaxResult delete(@PathVariable Long[] materialBaseInfoIds) + { + return toAjax(materialBaseInfoApplicationService.delete(materialBaseInfoIds)); + } + + /** + * 获取物料基础信息详细信息 + */ + @ApiOperation("获取物料基础信息") + @GetMapping(value = "/getInfo/{materialBaseInfoId}") + public AjaxResult getInfo(@PathVariable("materialBaseInfoId") Long materialBaseInfoId) + { + return AjaxResult.success(materialBaseInfoApplicationService.getInfo(materialBaseInfoId)); + } + + + + /** + * 无单收货 获取物料基础信息 + */ + @ApiOperation("无单收货 获取物料基础信息") + @GetMapping(value = "/getInfoByNoOrderReceipt") + public R getInfoByNoOrderReceipt(MaterialBaseInfoDTO materialBaseInfoDTO) { + //转换实体 + MaterialBaseInfoDO materialBaseInfoDO = materialBaseInfoAssembler.toDO(materialBaseInfoDTO); + return R.ok(materialBaseInfoApplicationService.getInfoByNoOrderReceipt(materialBaseInfoDO)); + } + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialCommon/MaterialCommonApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialCommon/MaterialCommonApi.java new file mode 100644 index 000000000..2aa6adec7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialCommon/MaterialCommonApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.materialCommon; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialCommon.MaterialCommonApplicationService; +import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO; +import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO; +import com.mhd.wms.interfaces.assember.materialCommon.MaterialCommonAssembler; +import com.mhd.wms.interfaces.dto.materialCommon.MaterialCommonDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料公共信息Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialCommonApi") +public class MaterialCommonApi extends BaseController { + @Autowired + private MaterialCommonApplicationService materialCommonApplicationService; + + @Resource + private MaterialCommonAssembler materialCommonAssembler; + + /** + * 分页查询物料公共信息列表 + */ + @ApiOperation("查询物料公共信息列表") + @GetMapping("/list") + public TableDataInfo list(MaterialCommonDTO materialCommonDTO) + { + //转换实体 + MaterialCommonDO materialCommonDO = materialCommonAssembler.toDO(materialCommonDTO); + startPage(); + List list = materialCommonApplicationService.queryList(materialCommonDO); + return getDataTable(list); + } + + /** + * 编辑物料公共信息 + */ + @ApiOperation("编辑物料公共信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialCommonDTO materialCommonDTO) + { + //转换实体 + MaterialCommonDO materialCommonDO = materialCommonAssembler.toDO(materialCommonDTO); + if(materialCommonDTO.getMaterialCommonId() != null){ + return toAjax(materialCommonApplicationService.update(materialCommonDO)); + }else { + return toAjax(materialCommonApplicationService.insert(materialCommonDO)); + } + } + + /** + * 批量删除物料公共信息 + */ + @ApiOperation("批量删除物料公共信息") + @DeleteMapping("/deleteByIds/{materialCommonIds}") + public AjaxResult delete(@PathVariable Long[] materialCommonIds) + { + return toAjax(materialCommonApplicationService.delete(materialCommonIds)); + } + + /** + * 获取物料公共信息详细信息 + */ + @ApiOperation("获取物料公共信息") + @GetMapping(value = "/getInfo/{materialCommonId}") + public AjaxResult getInfo(@PathVariable("materialCommonId") Long materialCommonId) + { + return AjaxResult.success(materialCommonApplicationService.getInfo(materialCommonId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialGoodsRule/MaterialGoodsRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialGoodsRule/MaterialGoodsRuleApi.java new file mode 100644 index 000000000..724732435 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialGoodsRule/MaterialGoodsRuleApi.java @@ -0,0 +1,101 @@ +package com.mhd.wms.interfaces.facadeApi.materialGoodsRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialGoodsRule.MaterialGoodsRuleApplicationService; +import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO; +import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO; +import com.mhd.wms.interfaces.assember.materialGoodsRule.MaterialGoodsRuleAssembler; +import com.mhd.wms.interfaces.dto.materialGoodsRule.MaterialGoodsRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料商品规则Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialGoodsRuleApi") +public class MaterialGoodsRuleApi extends BaseController { + @Autowired + private MaterialGoodsRuleApplicationService materialGoodsRuleApplicationService; + + @Resource + private MaterialGoodsRuleAssembler materialGoodsRuleAssembler; + + /** + * 分页查询物料商品规则列表 + */ + @ApiOperation("查询物料商品规则列表") + @GetMapping("/list") + public TableDataInfo list(MaterialGoodsRuleDTO materialGoodsRuleDTO) + { + //转换实体 + MaterialGoodsRuleDO materialGoodsRuleDO = materialGoodsRuleAssembler.toDO(materialGoodsRuleDTO); + startPage(); + List list = materialGoodsRuleApplicationService.queryList(materialGoodsRuleDO); + return getDataTable(list); + } + + /** + * 编辑物料商品规则 + */ + @ApiOperation("编辑物料商品规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialGoodsRuleDTO materialGoodsRuleDTO) + { + //转换实体 + MaterialGoodsRuleDO materialGoodsRuleDO = materialGoodsRuleAssembler.toDO(materialGoodsRuleDTO); + if(materialGoodsRuleDTO.getMaterialGoodsRuleId() != null){ + return toAjax(materialGoodsRuleApplicationService.update(materialGoodsRuleDO)); + }else { + return toAjax(materialGoodsRuleApplicationService.insert(materialGoodsRuleDO)); + } + } + + /** + * 批量删除物料商品规则 + */ + @ApiOperation("批量删除物料商品规则") + @DeleteMapping("/deleteByIds/{materialGoodsRuleIds}") + public AjaxResult delete(@PathVariable Long[] materialGoodsRuleIds) + { + return toAjax(materialGoodsRuleApplicationService.delete(materialGoodsRuleIds)); + } + + /** + * 获取物料商品规则详细信息 + */ + @ApiOperation("获取物料商品规则") + @GetMapping(value = "/getInfo/{materialGoodsRuleId}") + public AjaxResult getInfo(@PathVariable("materialGoodsRuleId") Long materialGoodsRuleId) + { + return AjaxResult.success(materialGoodsRuleApplicationService.getInfo(materialGoodsRuleId)); + } + + + + /** + * 根据 物料基础信息id 获取物料商品规则详细信息 + */ + @ApiOperation("根据 物料基础信息id 获取物料商品规则详细信息") + @GetMapping(value = "/getInfoByMaterialBaseInfoIds/{materialBaseInfoId}") + public AjaxResult getInfoByMaterialBaseInfoIds(@PathVariable("materialBaseInfoId") Long materialBaseInfoId) + { + return AjaxResult.success(materialGoodsRuleApplicationService.getInfoByMaterialBaseInfoIds(materialBaseInfoId)); + } + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java new file mode 100644 index 000000000..b1ce90493 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventory/MaterialInventoryApi.java @@ -0,0 +1,123 @@ +package com.mhd.wms.interfaces.facadeApi.materialInventory; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialInventory.MaterialInventoryApplicationService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.interfaces.assember.materialInventory.MaterialInventoryAssembler; +import com.mhd.wms.interfaces.dto.materialInventory.MaterialInventoryDTO; +import com.mhd.wms.interfaces.dto.materialInventory.MaterialInventoryQueryListDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料库存Api + * + * @author gen + * @date 2024-05-29 + */ +@RestController +@RequestMapping("/materialInventoryApi") +public class MaterialInventoryApi extends BaseController { + @Autowired + private MaterialInventoryApplicationService materialInventoryApplicationService; + + @Resource + private MaterialInventoryAssembler materialInventoryAssembler; + + /** + * 分页查询物料库存列表 + */ + @ApiOperation("查询物料库存列表") + @GetMapping("/list") + public TableDataInfo list(MaterialInventoryDTO materialInventoryDTO) + { + //转换实体 + MaterialInventoryDO materialInventoryDO = materialInventoryAssembler.toDO(materialInventoryDTO); + startPage(); + List list = materialInventoryApplicationService.queryList(materialInventoryDO); + return getDataTable(list); + } + + /** + * 编辑物料库存 + */ + @ApiOperation("编辑物料库存") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialInventoryDTO materialInventoryDTO) + { + //转换实体 + MaterialInventoryDO materialInventoryDO = materialInventoryAssembler.toDOByEdit(materialInventoryDTO); + if(materialInventoryDTO.getMaterialInventoryId() != null){ + return toAjax(materialInventoryApplicationService.update(materialInventoryDO)); + }else { + return toAjax(materialInventoryApplicationService.insert(materialInventoryDO)); + } + } + + /** + * 批量删除物料库存 + */ + @ApiOperation("批量删除物料库存") + @DeleteMapping("/deleteByIds/{materialInventoryIds}") + public AjaxResult delete(@PathVariable Long[] materialInventoryIds) + { + return toAjax(materialInventoryApplicationService.delete(materialInventoryIds)); + } + + /** + * 获取物料库存详细信息 + */ + @ApiOperation("获取物料库存") + @GetMapping(value = "/getInfo/{materialInventoryId}") + public AjaxResult getInfo(@PathVariable("materialInventoryId") Long materialInventoryId) + { + return AjaxResult.success(materialInventoryApplicationService.getInfo(materialInventoryId)); + } + + + + /** + * 根据库位Id和物料基础信息Id 获取物料库存详细信息 + */ + @ApiOperation("根据库位Id和物料基础信息Id 获取物料库存详细信息") + @GetMapping(value = "/getInventory/{storageLocationId}/{materialBaseInfoId}") + public AjaxResult getInventoryByStorageLocationIdAndMaterialBaseInfoId(@PathVariable("storageLocationId") Long storageLocationId, @PathVariable("materialBaseInfoId") Long materialBaseInfoId) + { + return AjaxResult.success(materialInventoryApplicationService.getInventoryByStorageLocationIdAndMaterialBaseInfoId(storageLocationId, materialBaseInfoId)); + } + + + + /** + * 分页库存列表 + */ + @ApiOperation("查询库存列表") + @GetMapping("/queryList") + public TableDataInfo queryList(MaterialInventoryQueryListDTO materialInventoryQueryListDTO) + { + //转换实体 + MaterialInventoryQueryListDO materialInventoryQueryListDO = materialInventoryAssembler.toDOByQueryList(materialInventoryQueryListDTO); + startPage(); + List list = materialInventoryApplicationService.materialQueryList(materialInventoryQueryListDO); + return getDataTable(list); + } + + @ApiOperation("查询物料库存数量") + @GetMapping("/sumInventoryQuantity") + public AjaxResult sumInventoryQuantity(MaterialInventoryDTO materialInventoryDTO) + { + //转换实体 + MaterialInventoryDO materialInventoryDO = materialInventoryAssembler.toDO(materialInventoryDTO); + return AjaxResult.success(materialInventoryApplicationService.sumInventoryQuantity(materialInventoryDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventoryWarning/MaterialInventoryWarningApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventoryWarning/MaterialInventoryWarningApi.java new file mode 100644 index 000000000..75f072c16 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialInventoryWarning/MaterialInventoryWarningApi.java @@ -0,0 +1,89 @@ +package com.mhd.wms.interfaces.facadeApi.materialInventoryWarning; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialInventoryWarning.MaterialInventoryWarningApplicationService; +import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO; +import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO; +import com.mhd.wms.interfaces.assember.materialInventoryWarning.MaterialInventoryWarningAssembler; +import com.mhd.wms.interfaces.dto.materialInventoryWarning.MaterialInventoryWarningDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料库存预警Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialInventoryWarningApi") +public class MaterialInventoryWarningApi extends BaseController { + @Autowired + private MaterialInventoryWarningApplicationService materialInventoryWarningApplicationService; + + @Resource + private MaterialInventoryWarningAssembler materialInventoryWarningAssembler; + + /** + * 分页查询物料库存预警列表 + */ + @ApiOperation("查询物料库存预警列表") + @GetMapping("/list") + public TableDataInfo list(MaterialInventoryWarningDTO materialInventoryWarningDTO) + { + //转换实体 + MaterialInventoryWarningDO materialInventoryWarningDO = materialInventoryWarningAssembler.toDO(materialInventoryWarningDTO); + startPage(); + List list = materialInventoryWarningApplicationService.queryList(materialInventoryWarningDO); + return getDataTable(list); + } + + /** + * 编辑物料库存预警 + */ + @ApiOperation("编辑物料库存预警") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialInventoryWarningDTO materialInventoryWarningDTO) + { + //转换实体 + MaterialInventoryWarningDO materialInventoryWarningDO = materialInventoryWarningAssembler.toDO(materialInventoryWarningDTO); + return toAjax(materialInventoryWarningApplicationService.insert(materialInventoryWarningDO)); + } + + /** + * 批量删除物料库存预警 + */ + @ApiOperation("批量删除物料库存预警") + @DeleteMapping("/deleteByIds/{materialInventoryWarningIds}") + public AjaxResult delete(@PathVariable Long[] materialInventoryWarningIds) + { + return toAjax(materialInventoryWarningApplicationService.delete(materialInventoryWarningIds)); + } + + /** + * 获取物料库存预警详细信息 + */ + @ApiOperation("获取物料库存预警") + @GetMapping(value = "/getInfo/{materialInventoryWarningId}") + public AjaxResult getInfo(@PathVariable("materialInventoryWarningId") Long materialInventoryWarningId) + { + return AjaxResult.success(materialInventoryWarningApplicationService.getInfo(materialInventoryWarningId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialMoreDetail/MaterialMoreDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialMoreDetail/MaterialMoreDetailApi.java new file mode 100644 index 000000000..1640194d5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialMoreDetail/MaterialMoreDetailApi.java @@ -0,0 +1,104 @@ +package com.mhd.wms.interfaces.facadeApi.materialMoreDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialMoreDetail.MaterialMoreDetailApplicationService; +import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO; +import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO; +import com.mhd.wms.interfaces.assember.materialMoreDetail.MaterialMoreDetailAssembler; +import com.mhd.wms.interfaces.dto.materialMoreDetail.MaterialMoreDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料更多属性明细Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/materialMoreDetailApi") +public class MaterialMoreDetailApi extends BaseController { + @Autowired + private MaterialMoreDetailApplicationService materialMoreDetailApplicationService; + + @Resource + private MaterialMoreDetailAssembler materialMoreDetailAssembler; + + /** + * 分页查询物料更多属性明细列表 + */ + @ApiOperation("查询物料更多属性明细列表") + @GetMapping("/list") + public TableDataInfo list(MaterialMoreDetailDTO materialMoreDetailDTO) + { + //转换实体 + MaterialMoreDetailDO materialMoreDetailDO = materialMoreDetailAssembler.toDO(materialMoreDetailDTO); + startPage(); + List list = materialMoreDetailApplicationService.queryList(materialMoreDetailDO); + return getDataTable(list); + } + + /** + * 编辑物料更多属性明细 + */ + @ApiOperation("编辑物料更多属性明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialMoreDetailDTO materialMoreDetailDTO) + { + //转换实体 + MaterialMoreDetailDO materialMoreDetailDO = materialMoreDetailAssembler.toDOByEdit(materialMoreDetailDTO); + if(materialMoreDetailDTO.getMaterialMoreDetailId() != null){ + return toAjax(materialMoreDetailApplicationService.update(materialMoreDetailDO)); + }else { + return toAjax(materialMoreDetailApplicationService.insert(materialMoreDetailDO)); + } + } + + /** + * 批量删除物料更多属性明细 + */ + @ApiOperation("批量删除物料更多属性明细") + @DeleteMapping("/deleteByIds/{materialMoreDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialMoreDetailIds) + { + return toAjax(materialMoreDetailApplicationService.delete(materialMoreDetailIds)); + } + + /** + * 获取物料更多属性明细详细信息 + */ + @ApiOperation("获取物料更多属性明细") + @GetMapping(value = "/getInfo/{materialMoreDetailId}") + public AjaxResult getInfo(@PathVariable("materialMoreDetailId") Long materialMoreDetailId) + { + return AjaxResult.success(materialMoreDetailApplicationService.getInfo(materialMoreDetailId)); + } + + + + /** + * 查询物料更多属性明细 + */ + @ApiOperation("查询物料更多属性明细") + @GetMapping("/getMaterialMoreDetailList/{materialDetailUniqueId}") + public AjaxResult getMaterialMoreDetailList(@PathVariable("materialDetailUniqueId") Long materialDetailUniqueId) { + //转换实体 + MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO(); + materialMoreDetailDO.setMaterialDetailUniqueId(materialDetailUniqueId); + List list = materialMoreDetailApplicationService.queryList(materialMoreDetailDO); + return AjaxResult.success(list); + } + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialWarehouseControl/MaterialWarehouseControlApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialWarehouseControl/MaterialWarehouseControlApi.java new file mode 100644 index 000000000..a6f78dd48 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/materialWarehouseControl/MaterialWarehouseControlApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.materialWarehouseControl; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.materialWarehouseControl.MaterialWarehouseControlApplicationService; +import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO; +import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO; +import com.mhd.wms.interfaces.assember.materialWarehouseControl.MaterialWarehouseControlAssembler; +import com.mhd.wms.interfaces.dto.materialWarehouseControl.MaterialWarehouseControlDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 仓库控制信息Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/materialWarehouseControlApi") +public class MaterialWarehouseControlApi extends BaseController { + @Autowired + private MaterialWarehouseControlApplicationService materialWarehouseControlApplicationService; + + @Resource + private MaterialWarehouseControlAssembler materialWarehouseControlAssembler; + + /** + * 分页查询仓库控制信息列表 + */ + @ApiOperation("查询仓库控制信息列表") + @GetMapping("/list") + public TableDataInfo list(MaterialWarehouseControlDTO materialWarehouseControlDTO) + { + //转换实体 + MaterialWarehouseControlDO materialWarehouseControlDO = materialWarehouseControlAssembler.toDO(materialWarehouseControlDTO); + startPage(); + List list = materialWarehouseControlApplicationService.queryList(materialWarehouseControlDO); + return getDataTable(list); + } + + /** + * 编辑仓库控制信息 + */ + @ApiOperation("编辑仓库控制信息") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MaterialWarehouseControlDTO materialWarehouseControlDTO) + { + //转换实体 + MaterialWarehouseControlDO materialWarehouseControlDO = materialWarehouseControlAssembler.toDO(materialWarehouseControlDTO); + if(materialWarehouseControlDTO.getMaterialWarehouseControlId() != null){ + return toAjax(materialWarehouseControlApplicationService.update(materialWarehouseControlDO)); + }else { + return toAjax(materialWarehouseControlApplicationService.insert(materialWarehouseControlDO)); + } + } + + /** + * 批量删除仓库控制信息 + */ + @ApiOperation("批量删除仓库控制信息") + @DeleteMapping("/deleteByIds/{materialWarehouseControlIds}") + public AjaxResult delete(@PathVariable Long[] materialWarehouseControlIds) + { + return toAjax(materialWarehouseControlApplicationService.delete(materialWarehouseControlIds)); + } + + /** + * 获取仓库控制信息详细信息 + */ + @ApiOperation("获取仓库控制信息") + @GetMapping(value = "/getInfo/{materialWarehouseControlId}") + public AjaxResult getInfo(@PathVariable("materialWarehouseControlId") Long materialWarehouseControlId) + { + return AjaxResult.success(materialWarehouseControlApplicationService.getInfo(materialWarehouseControlId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManage/MobilizeManageApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManage/MobilizeManageApi.java new file mode 100644 index 000000000..2f484a167 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManage/MobilizeManageApi.java @@ -0,0 +1,100 @@ +package com.mhd.wms.interfaces.facadeApi.mobilizeManage; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.mobilizeManage.MobilizeManageApplicationService; +import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO; +import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO; +import com.mhd.wms.interfaces.assember.mobilizeManage.MobilizeManageAssembler; +import com.mhd.wms.interfaces.dto.mobilizeManage.MobilizeManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 调拨管理Api + * + * @author gen + * @date 2024-07-08 + */ +@RestController +@RequestMapping("/mobilizeManageApi") +public class MobilizeManageApi extends BaseController { + @Autowired + private MobilizeManageApplicationService mobilizeManageApplicationService; + + @Resource + private MobilizeManageAssembler mobilizeManageAssembler; + + /** + * 分页查询调拨管理列表 + */ + @ApiOperation("查询调拨管理列表") + @GetMapping("/list") + public TableDataInfo list(MobilizeManageDTO mobilizeManageDTO) { + //转换实体 + MobilizeManageDO mobilizeManageDO = mobilizeManageAssembler.toDO(mobilizeManageDTO); + startPage(); + List list = mobilizeManageApplicationService.queryList(mobilizeManageDO); + return getDataTable(list); + } + + /** + * 编辑调拨管理 + */ + @ApiOperation("编辑调拨管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MobilizeManageDTO mobilizeManageDTO) { + try { + //转换实体 + MobilizeManageDO mobilizeManageDO = mobilizeManageAssembler.toDO(mobilizeManageDTO); + if (mobilizeManageDTO.getMobilizeManageId() != null) { + + return toAjax(mobilizeManageApplicationService.update(mobilizeManageDO)); + + } else { + return toAjax(mobilizeManageApplicationService.insert(mobilizeManageDO)); + } + } catch (SecurityException e) { + e.printStackTrace(); + return AjaxResult.error(e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 批量删除调拨管理 + */ + @ApiOperation("批量删除调拨管理") + @DeleteMapping("/deleteByIds/{mobilizeManageIds}") + public AjaxResult delete(@PathVariable("mobilizeManageIds") Long[] mobilizeManageIds) { + return toAjax(mobilizeManageApplicationService.delete(mobilizeManageIds)); + } + + /** + * 获取调拨管理详细信息 + */ + @ApiOperation("获取调拨管理") + @GetMapping(value = "/getInfo/{mobilizeManageId}") + public AjaxResult getInfo(@PathVariable("mobilizeManageId") Long mobilizeManageId) { + return AjaxResult.success(mobilizeManageApplicationService.getInfo(mobilizeManageId)); + } + + /** + * 审核调拨单 + */ + @ApiOperation("审核调拨单") + @PostMapping(value = "/audit") + public AjaxResult audit(@RequestBody MobilizeManageDTO mobilizeManageDTO) { + MobilizeManageDO mobilizeManageDO = mobilizeManageAssembler.toDO(mobilizeManageDTO); + return AjaxResult.success(mobilizeManageApplicationService.auditMobilizeManage(mobilizeManageDO)); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManageDetail/MobilizeManageDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManageDetail/MobilizeManageDetailApi.java new file mode 100644 index 000000000..7a7137c20 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/mobilizeManageDetail/MobilizeManageDetailApi.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.facadeApi.mobilizeManageDetail; + +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.mobilizeManageDetail.MobilizeManageDetailApplicationService; +import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO; +import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO; +import com.mhd.wms.interfaces.assember.mobilizeManageDetail.MobilizeManageDetailAssembler; +import com.mhd.wms.interfaces.dto.mobilizeManageDetail.MobilizeManageDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 调拨管理详情Api + * + * @author gen + * @date 2024-07-08 + */ +@RestController +@RequestMapping("/mobilizeManageDetailApi") +public class MobilizeManageDetailApi extends BaseController { + @Autowired + private MobilizeManageDetailApplicationService mobilizeManageDetailApplicationService; + + @Resource + private MobilizeManageDetailAssembler mobilizeManageDetailAssembler; + + /** + * 分页查询调拨管理详情列表 + */ + @ApiOperation("查询调拨管理详情列表") + @GetMapping("/list") + public TableDataInfo list(MobilizeManageDetailDTO mobilizeManageDetailDTO) + { + //转换实体 + MobilizeManageDetailDO mobilizeManageDetailDO = mobilizeManageDetailAssembler.toDO(mobilizeManageDetailDTO); + startPage(); + List list = mobilizeManageDetailApplicationService.queryList(mobilizeManageDetailDO); + return getDataTable(list); + } + + /** + * 编辑调拨管理详情 + */ + @ApiOperation("编辑调拨管理详情") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody MobilizeManageDetailDTO mobilizeManageDetailDTO) + { + //转换实体 + MobilizeManageDetailDO mobilizeManageDetailDO = mobilizeManageDetailAssembler.toDO(mobilizeManageDetailDTO); + if(mobilizeManageDetailDTO.getMobilizeMaterialDetailId() != null){ + return toAjax(mobilizeManageDetailApplicationService.update(mobilizeManageDetailDO)); + }else { + return toAjax(mobilizeManageDetailApplicationService.insert(mobilizeManageDetailDO)); + } + } + + @ApiOperation("添加调拨管理详情") + @PostMapping("/add") + public R add(MobilizeManageDetailDTO mobilizeManageDetailDTO) + { + //转换实体 + MobilizeManageDetailDO mobilizeManageDetailDO = mobilizeManageDetailAssembler.toDO(mobilizeManageDetailDTO); + return R.ok(mobilizeManageDetailApplicationService.insert(mobilizeManageDetailDO)); + } + + /** + * 批量删除调拨管理详情 + */ + @ApiOperation("批量删除调拨管理详情") + @DeleteMapping("/deleteByIds/{mobilizeMaterialDetails}") + public AjaxResult delete(@PathVariable Long[] mobilizeMaterialDetails) + { + return toAjax(mobilizeManageDetailApplicationService.delete(mobilizeMaterialDetails)); + } + + /** + * 获取调拨管理详情详细信息 + */ + @ApiOperation("获取调拨管理详情") + @GetMapping(value = "/getInfo/{mobilizeMaterialDetail}") + public AjaxResult getInfo(@PathVariable("mobilizeMaterialDetail") Long mobilizeMaterialDetail) + { + return AjaxResult.success(mobilizeManageDetailApplicationService.getInfo(mobilizeMaterialDetail)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeMaterialDetail/NoticeMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeMaterialDetail/NoticeMaterialDetailApi.java new file mode 100644 index 000000000..efced509f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeMaterialDetail/NoticeMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.noticeMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.noticeMaterialDetail.NoticeMaterialDetailApplicationService; +import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO; +import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO; +import com.mhd.wms.interfaces.assember.noticeMaterialDetail.NoticeMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.noticeMaterialDetail.NoticeMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料明细Api + * + * @author gen + * @date 2024-06-17 + */ +@RestController +@RequestMapping("/noticeMaterialDetailApi") +public class NoticeMaterialDetailApi extends BaseController { + @Autowired + private NoticeMaterialDetailApplicationService noticeMaterialDetailApplicationService; + + @Resource + private NoticeMaterialDetailAssembler noticeMaterialDetailAssembler; + + /** + * 分页查询物料明细列表 + */ + @ApiOperation("查询物料明细列表") + @GetMapping("/list") + public TableDataInfo list(NoticeMaterialDetailDTO noticeMaterialDetailDTO) + { + //转换实体 + NoticeMaterialDetailDO noticeMaterialDetailDO = noticeMaterialDetailAssembler.toDO(noticeMaterialDetailDTO); + startPage(); + List list = noticeMaterialDetailApplicationService.queryList(noticeMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑物料明细 + */ + @ApiOperation("编辑物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody NoticeMaterialDetailDTO noticeMaterialDetailDTO) + { + //转换实体 + NoticeMaterialDetailDO noticeMaterialDetailDO = noticeMaterialDetailAssembler.toDO(noticeMaterialDetailDTO); + if(noticeMaterialDetailDTO.getNoticeMaterialDetailId() != null){ + return toAjax(noticeMaterialDetailApplicationService.update(noticeMaterialDetailDO)); + }else { + return toAjax(noticeMaterialDetailApplicationService.insert(noticeMaterialDetailDO)); + } + } + + /** + * 批量删除物料明细 + */ + @ApiOperation("批量删除物料明细") + @DeleteMapping("/deleteByIds/{noticeMaterialDetailIds}") + public AjaxResult delete(@PathVariable Long[] noticeMaterialDetailIds) + { + return toAjax(noticeMaterialDetailApplicationService.delete(noticeMaterialDetailIds)); + } + + /** + * 获取物料明细详细信息 + */ + @ApiOperation("获取物料明细") + @GetMapping(value = "/getInfo/{noticeMaterialDetailId}") + public AjaxResult getInfo(@PathVariable("noticeMaterialDetailId") Long noticeMaterialDetailId) + { + return AjaxResult.success(noticeMaterialDetailApplicationService.getInfo(noticeMaterialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeOrder/NoticeOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeOrder/NoticeOrderApi.java new file mode 100644 index 000000000..cf0bfe182 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/noticeOrder/NoticeOrderApi.java @@ -0,0 +1,115 @@ +package com.mhd.wms.interfaces.facadeApi.noticeOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.noticeOrder.NoticeOrderApplicationService; +import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO; +import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO; +import com.mhd.wms.interfaces.assember.noticeOrder.NoticeOrderAssembler; +import com.mhd.wms.interfaces.dto.noticeOrder.NoticeOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 入出库通知单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/noticeOrderApi") +public class NoticeOrderApi extends BaseController { + @Autowired + private NoticeOrderApplicationService noticeOrderApplicationService; + + @Resource + private NoticeOrderAssembler noticeOrderAssembler; + + /** + * 分页查询入出库通知单列表 + */ + @ApiOperation("查询入出库通知单列表") + @GetMapping("/list") + public TableDataInfo list(NoticeOrderDTO noticeOrderDTO) + { + //转换实体 + NoticeOrderDO noticeOrderDO = noticeOrderAssembler.toDO(noticeOrderDTO); + startPage(); + List list = noticeOrderApplicationService.queryList(noticeOrderDO); + return getDataTable(list); + } + + /** + * 下发入出库通知单 + */ + @ApiOperation("下发入出库通知单") + @PostMapping("/insert") + public AjaxResult edit(@RequestBody NoticeOrderDTO noticeOrderDTO) + { + //转换实体 + NoticeOrderDO noticeOrderDO = noticeOrderAssembler.toDOByEdit(noticeOrderDTO); + return toAjax(noticeOrderApplicationService.insert(noticeOrderDO)); + } + + /** + * 批量删除入出库通知单 + */ + @ApiOperation("批量删除入出库通知单") + @DeleteMapping("/deleteByIds/{noticeIds}") + public AjaxResult delete(@PathVariable Long[] noticeIds) + { + return toAjax(noticeOrderApplicationService.delete(noticeIds)); + } + + /** + * 获取入出库通知单详细信息 + */ + @ApiOperation("获取入出库通知单") + @GetMapping(value = "/getInfo/{noticeId}") + public AjaxResult getInfo(@PathVariable("noticeId") Long noticeId) + { + return AjaxResult.success(noticeOrderApplicationService.getInfo(noticeId)); + } + + + + /** + * 作废入出库通知单 + */ + @ApiOperation("作废入出库通知单") + @GetMapping(value = "/nullifyByIds/{noticeIds}") + public AjaxResult nullifyByIds(@PathVariable("noticeIds") Long[] noticeIds) + { + return AjaxResult.success(noticeOrderApplicationService.nullifyByIds(noticeIds)); + } + + /** + * 批量生成入库单 + */ + @ApiOperation("批量生成入库单") + @GetMapping("/generateStockInOrder/{noticeIds}") + public AjaxResult generateStockInOrder(@PathVariable Long[] noticeIds) + { + return toAjax(noticeOrderApplicationService.generateStockInOrder(noticeIds)); + } + + + + /** + * 批量生成出库单 + */ + @ApiOperation("批量生成出库单") + @GetMapping("/generateStockOutOrder/{noticeIds}") + public AjaxResult generateStockOutOrder(@PathVariable Long[] noticeIds) + { + return toAjax(noticeOrderApplicationService.generateStockOutOrder(noticeIds)); + } + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApi.java new file mode 100644 index 000000000..47292574f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.outMaterialDetailSerialNumber; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberApplicationService; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO; +import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO; +import com.mhd.wms.interfaces.assember.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberAssembler; +import com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 出库单物料明细序列号Api + * + * @author gen + * @date 2024-06-03 + */ +@RestController +@RequestMapping("/outMaterialDetailSerialNumberApi") +public class OutMaterialDetailSerialNumberApi extends BaseController { + @Autowired + private OutMaterialDetailSerialNumberApplicationService outMaterialDetailSerialNumberApplicationService; + + @Resource + private OutMaterialDetailSerialNumberAssembler outMaterialDetailSerialNumberAssembler; + + /** + * 分页查询出库单物料明细序列号列表 + */ + @ApiOperation("查询出库单物料明细序列号列表") + @GetMapping("/list") + public TableDataInfo list(OutMaterialDetailSerialNumberDTO outMaterialDetailSerialNumberDTO) + { + //转换实体 + OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = outMaterialDetailSerialNumberAssembler.toDO(outMaterialDetailSerialNumberDTO); + startPage(); + List list = outMaterialDetailSerialNumberApplicationService.queryList(outMaterialDetailSerialNumberDO); + return getDataTable(list); + } + + /** + * 编辑出库单物料明细序列号 + */ + @ApiOperation("编辑出库单物料明细序列号") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody OutMaterialDetailSerialNumberDTO outMaterialDetailSerialNumberDTO) + { + //转换实体 + OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO = outMaterialDetailSerialNumberAssembler.toDOByEdit(outMaterialDetailSerialNumberDTO); + if(outMaterialDetailSerialNumberDTO.getOutMaterialDetailSerialNumberId() != null){ + return toAjax(outMaterialDetailSerialNumberApplicationService.update(outMaterialDetailSerialNumberDO)); + }else { + return toAjax(outMaterialDetailSerialNumberApplicationService.insert(outMaterialDetailSerialNumberDO)); + } + } + + /** + * 批量删除出库单物料明细序列号 + */ + @ApiOperation("批量删除出库单物料明细序列号") + @DeleteMapping("/deleteByIds/{outMaterialDetailSerialNumberIds}") + public AjaxResult delete(@PathVariable Long[] outMaterialDetailSerialNumberIds) + { + return toAjax(outMaterialDetailSerialNumberApplicationService.delete(outMaterialDetailSerialNumberIds)); + } + + /** + * 获取出库单物料明细序列号详细信息 + */ + @ApiOperation("获取出库单物料明细序列号") + @GetMapping(value = "/getInfo/{outMaterialDetailSerialNumberId}") + public AjaxResult getInfo(@PathVariable("outMaterialDetailSerialNumberId") Long outMaterialDetailSerialNumberId) + { + return AjaxResult.success(outMaterialDetailSerialNumberApplicationService.getInfo(outMaterialDetailSerialNumberId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outOrderAbnormal/OutOrderAbnormalApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outOrderAbnormal/OutOrderAbnormalApi.java new file mode 100644 index 000000000..9b11a0eb3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/outOrderAbnormal/OutOrderAbnormalApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.outOrderAbnormal; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.outOrderAbnormal.OutOrderAbnormalApplicationService; +import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO; +import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO; +import com.mhd.wms.interfaces.assember.outOrderAbnormal.OutOrderAbnormalAssembler; +import com.mhd.wms.interfaces.dto.outOrderAbnormal.OutOrderAbnormalDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 出库异常单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/outOrderAbnormalApi") +public class OutOrderAbnormalApi extends BaseController { + @Autowired + private OutOrderAbnormalApplicationService outOrderAbnormalApplicationService; + + @Resource + private OutOrderAbnormalAssembler outOrderAbnormalAssembler; + + /** + * 分页查询出库异常单列表 + */ + @ApiOperation("查询出库异常单列表") + @GetMapping("/list") + public TableDataInfo list(OutOrderAbnormalDTO outOrderAbnormalDTO) + { + //转换实体 + OutOrderAbnormalDO outOrderAbnormalDO = outOrderAbnormalAssembler.toDO(outOrderAbnormalDTO); + startPage(); + List list = outOrderAbnormalApplicationService.queryList(outOrderAbnormalDO); + return getDataTable(list); + } + + /** + * 编辑出库异常单 + */ + @ApiOperation("编辑出库异常单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody OutOrderAbnormalDTO outOrderAbnormalDTO) + { + //转换实体 + OutOrderAbnormalDO outOrderAbnormalDO = outOrderAbnormalAssembler.toDOByEdit(outOrderAbnormalDTO); + if(outOrderAbnormalDTO.getOutOrderAbnormalId() != null){ + return toAjax(outOrderAbnormalApplicationService.update(outOrderAbnormalDO)); + }else { + return toAjax(outOrderAbnormalApplicationService.insert(outOrderAbnormalDO)); + } + } + + /** + * 批量删除出库异常单 + */ + @ApiOperation("批量删除出库异常单") + @DeleteMapping("/deleteByIds/{outOrderAbnormalIds}") + public AjaxResult delete(@PathVariable Long[] outOrderAbnormalIds) + { + return toAjax(outOrderAbnormalApplicationService.delete(outOrderAbnormalIds)); + } + + /** + * 获取出库异常单详细信息 + */ + @ApiOperation("获取出库异常单") + @GetMapping(value = "/getInfo/{outOrderAbnormalId}") + public AjaxResult getInfo(@PathVariable("outOrderAbnormalId") Long outOrderAbnormalId) + { + return AjaxResult.success(outOrderAbnormalApplicationService.getInfo(outOrderAbnormalId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/overStock/OverStockApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/overStock/OverStockApi.java new file mode 100644 index 000000000..409279a42 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/overStock/OverStockApi.java @@ -0,0 +1,212 @@ +package com.mhd.wms.interfaces.facadeApi.overStock; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.overStock.OverStockApplicationService; +import com.mhd.wms.domain.overStock.repository.po.OverStockPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockDetailPO; +import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockPO; +import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.OverStockDO; +import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO; +import com.mhd.wms.interfaces.assember.overStock.OverStockAssembler; +import com.mhd.wms.interfaces.dto.overStock.ExecuteOverStockDTO; +import com.mhd.wms.interfaces.dto.overStock.OverStockDTO; +import com.mhd.wms.interfaces.dto.overStock.QueryOrderOverStockDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 越库管理 + * + * @author gen + * @date 2024-07-23 + */ +@RestController +@RequestMapping("/overStockApi") +public class OverStockApi extends BaseController { + @Autowired + private OverStockApplicationService overStockApplicationService; + + @Resource + private OverStockAssembler overStockAssembler; + + /** + * 分页查询越库管理列表 + */ + @ApiOperation("查询越库管理列表") + @GetMapping("/list") + public TableDataInfo list(OverStockDTO overStockDTO) + { + //转换实体 + OverStockDO overStockDO = overStockAssembler.toDO(overStockDTO); + startPage(); + List list = overStockApplicationService.queryList(overStockDO); + return getDataTable(list); + } + + /** + * 编辑越库管理 + */ + @ApiOperation("编辑越库管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody OverStockDTO overStockDTO) + { + //转换实体 + OverStockDO overStockDO = overStockAssembler.toDO(overStockDTO); + if(overStockDTO.getOverStockId() != null){ + return toAjax(overStockApplicationService.update(overStockDO)); + }else { + return toAjax(overStockApplicationService.insert(overStockDO)); + } + } + + /** + * 批量删除越库管理 + */ + @ApiOperation("批量删除越库管理") + @DeleteMapping("/deleteByIds/{overStockIds}") + public AjaxResult delete(@PathVariable Long[] overStockIds) + { + return toAjax(overStockApplicationService.delete(overStockIds)); + } + + /** + * 获取越库管理详细信息 + */ + @ApiOperation("获取越库管理") + @GetMapping(value = "/getInfo/{overStockId}") + public AjaxResult getInfo(@PathVariable("overStockId") Long overStockId) + { + return AjaxResult.success(overStockApplicationService.getInfo(overStockId)); + } + + + /** + * @description:查询单据越库列表 + * @param queryOrderOverStockDTO + * @return: com.mhd.common.core.web.page.TableDataInfo + * @author: lianzj + * @time: 2024-07-23 17:25:17 + */ + @ApiOperation("查询单据越库列表") + @GetMapping("/getByInAndOutOrder") + public AjaxResult getByInAndOutOrder(QueryOrderOverStockDTO queryOrderOverStockDTO) { + //转换实体 + QueryOrderOverStockDO queryOrderOverStockDO = overStockAssembler.toDOByQueryOrder(queryOrderOverStockDTO); + List list = overStockApplicationService.getByInAndOutOrder(queryOrderOverStockDO); + return AjaxResult.success(list); + } + + /** + * @param overStockDTO + * @description:查询越库管理入库出库详情列表 + * @return: com.mhd.common.core.web.page.TableDataInfo + * @author: lianzj + * @time: 2024-07-26 10:02:48 + */ + @ApiOperation("查询越库管理入库出库详情列表") + @GetMapping("/overStockInOrderOutOrderDetailList") + public AjaxResult overStockInOrderOutOrderDetailList(OverStockDTO overStockDTO) + { + //转换实体 + OverStockDO overStockDO = overStockAssembler.toDO(overStockDTO); + startPage(); + return AjaxResult.success(overStockApplicationService.overStockInOrderOutOrderDetailList(overStockDO)); + } + + /** + * @description:查询单据越库详情 + * @param queryOrderOverStockDTO + * @return: com.mhd.common.core.web.page.TableDataInfo + * @author: lianzj + * @time: 2024-07-23 17:25:17 + */ + @ApiOperation("查询单据越库详情") + @GetMapping("/getByOrderDetail") + public AjaxResult getByOrderDetail(QueryOrderOverStockDTO queryOrderOverStockDTO) { + //转换实体 + QueryOrderOverStockDO queryOrderOverStockDO = overStockAssembler.toDOByQueryOrder(queryOrderOverStockDTO); + QueryOrderOverStockDetailPO queryOrderOverStockDetailPO = overStockApplicationService.getByOrderDetail(queryOrderOverStockDO); + return AjaxResult.success(queryOrderOverStockDetailPO); + } + + /** + * @description:执行越库 + * @param executeOverStockDTO + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-26 15:08:56 + */ + @ApiOperation("执行越库") + @PostMapping("/executeOverStock") + public AjaxResult executeOverStock(@RequestBody ExecuteOverStockDTO executeOverStockDTO) + { + //转换实体 + ExecuteOverStockDO executeOverStockDO = overStockAssembler.toDOByExecuteOverStock(executeOverStockDTO); + return AjaxResult.success(overStockApplicationService.executeOverStock(executeOverStockDO)); + } + + /** + * @description:取消越库标记(分拨) + * @param executeOverStockDTO + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-26 15:55:47 + */ + @ApiOperation("取消越库标记(分拨)") + @PostMapping("/cancelOverStock") + public AjaxResult cancelOverStock(@RequestBody ExecuteOverStockDTO executeOverStockDTO) + { + //转换实体 + ExecuteOverStockDO executeOverStockDO = overStockAssembler.toDOByExecuteOverStock(executeOverStockDTO); + return AjaxResult.success(overStockApplicationService.cancelOverStock(executeOverStockDO)); + } + + /** + * @description:取消越库任务(直接) + * @param overStockIds + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-27 11:24:56 + */ + @ApiOperation("取消越库任务(直接)") + @PostMapping("/cancelOverStockDirectByIds/{overStockIds}") + public AjaxResult cancelOverStockDirectByIds(@PathVariable Long[] overStockIds) + { + return toAjax(overStockApplicationService.cancelOverStockDirectByIds(overStockIds)); + } + + /** + * @description:取消越库标记(分拨) + * @param overStockIds + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-27 15:33:17 + */ + @ApiOperation("取消越库标记(分拨)") + @PostMapping("/cancelOverStockSignByIds/{overStockIds}") + public AjaxResult cancelOverStockSignByIds(@PathVariable Long[] overStockIds) + { + return toAjax(overStockApplicationService.cancelOverStockSignByIds(overStockIds)); + } + + /** + * @description:执行越库 + * @param overStockIds + * @return: com.mhd.common.core.web.domain.AjaxResult + * @author: lianzj + * @time: 2024-07-27 15:36:46 + */ + @ApiOperation("执行越库") + @PostMapping("/executeOverStockByIds/{overStockIds}") + public AjaxResult executeOverStockByIds(@PathVariable Long[] overStockIds) + { + return toAjax(overStockApplicationService.executeOverStockByIds(overStockIds)); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java new file mode 100644 index 000000000..9c5b014cc --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/pickingOrder/PickingOrderApi.java @@ -0,0 +1,119 @@ +package com.mhd.wms.interfaces.facadeApi.pickingOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.pickingOrder.PickingOrderApplicationService; +import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO; +import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO; +import com.mhd.wms.interfaces.assember.pickingOrder.PickingOrderAssembler; +import com.mhd.wms.interfaces.dto.pickingOrder.PickingOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 拣货单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/pickingOrderApi") +public class PickingOrderApi extends BaseController { + @Autowired + private PickingOrderApplicationService pickingOrderApplicationService; + + @Resource + private PickingOrderAssembler pickingOrderAssembler; + + /** + * 分页查询拣货单列表 + */ + @ApiOperation("查询拣货单列表") + @GetMapping("/list") + public TableDataInfo list(PickingOrderDTO pickingOrderDTO) + { + //转换实体 + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO); + startPage(); + List list = pickingOrderApplicationService.queryList(pickingOrderDO); + return getDataTable(list); + } + + /** + * 编辑拣货单 + */ + @ApiOperation("编辑拣货单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody PickingOrderDTO pickingOrderDTO) + { + //转换实体 + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDOByEdit(pickingOrderDTO); + if(pickingOrderDTO.getPickingOrderId() != null){ + return toAjax(pickingOrderApplicationService.update(pickingOrderDO)); + }else { + return toAjax(pickingOrderApplicationService.insert(pickingOrderDO)); + } + } + + /** + * 批量删除拣货单 + */ + @ApiOperation("批量删除拣货单") + @DeleteMapping("/deleteByIds/{pickingOrderIds}") + public AjaxResult delete(@PathVariable Long[] pickingOrderIds) + { + return toAjax(pickingOrderApplicationService.delete(pickingOrderIds)); + } + + /** + * 获取拣货单详细信息 + */ + @ApiOperation("获取拣货单") + @GetMapping(value = "/getInfoByIdAndType/{pickingOrderId}/{type}") + public AjaxResult getInfoByIdAndType(@PathVariable("pickingOrderId") Long pickingOrderId, @PathVariable("type") Integer type) { + return AjaxResult.success(pickingOrderApplicationService.getInfoByIdAndType(pickingOrderId, type)); + } + + + @ApiOperation("整单下发") + @PostMapping("/allDistribution") + public AjaxResult allDistribution(@RequestBody PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO); + return toAjax(pickingOrderApplicationService.allDistribution(pickingOrderDO)); + } + + @ApiOperation("明细下发") + @PostMapping("/detailDistribution") + public AjaxResult detailDistribution(@RequestBody PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO); + return toAjax(pickingOrderApplicationService.detailDistribution(pickingOrderDO)); + } + + + /** + * 拣货 + */ + @ApiOperation("拣货") + @PostMapping("/picking") + public AjaxResult picking(@RequestBody PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(pickingOrderDTO), PickingOrderDO.class); + return toAjax(pickingOrderApplicationService.picking(pickingOrderDO)); + } + + + /** + * 完成拣货 + */ + @ApiOperation("完成拣货") + @PostMapping("/completePicking") + public AjaxResult completePicking(@RequestBody PickingOrderDTO pickingOrderDTO) { + PickingOrderDO pickingOrderDO = pickingOrderAssembler.toDO(pickingOrderDTO); + return toAjax(pickingOrderApplicationService.completePicking(pickingOrderDO)); + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRule/PutawayRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRule/PutawayRuleApi.java new file mode 100644 index 000000000..1e4797324 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRule/PutawayRuleApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.putawayRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.putawayRule.PutawayRuleApplicationService; +import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO; +import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO; +import com.mhd.wms.interfaces.assember.putawayRule.PutawayRuleAssembler; +import com.mhd.wms.interfaces.dto.putawayRule.PutawayRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 上架规则Api + * + * @author gen + * @date 2024-07-19 + */ +@RestController +@RequestMapping("/putawayRuleApi") +public class PutawayRuleApi extends BaseController { + @Autowired + private PutawayRuleApplicationService putawayRuleApplicationService; + + @Resource + private PutawayRuleAssembler putawayRuleAssembler; + + /** + * 分页查询上架规则列表 + */ + @ApiOperation("查询上架规则列表") + @GetMapping("/list") + public TableDataInfo list(PutawayRuleDTO putawayRuleDTO) + { + //转换实体 + PutawayRuleDO putawayRuleDO = putawayRuleAssembler.toDO(putawayRuleDTO); + startPage(); + List list = putawayRuleApplicationService.queryList(putawayRuleDO); + return getDataTable(list); + } + + /** + * 编辑上架规则 + */ + @ApiOperation("编辑上架规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody PutawayRuleDTO putawayRuleDTO) + { + //转换实体 + PutawayRuleDO putawayRuleDO = putawayRuleAssembler.toDO(putawayRuleDTO); + if(putawayRuleDTO.getId() != null){ + return toAjax(putawayRuleApplicationService.update(putawayRuleDO)); + }else { + return toAjax(putawayRuleApplicationService.insert(putawayRuleDO)); + } + } + + /** + * 批量删除上架规则 + */ + @ApiOperation("批量删除上架规则") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(putawayRuleApplicationService.delete(ids)); + } + + /** + * 获取上架规则详细信息 + */ + @ApiOperation("获取上架规则") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(putawayRuleApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRuleDetail/PutawayRuleDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRuleDetail/PutawayRuleDetailApi.java new file mode 100644 index 000000000..06f5804e7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/putawayRuleDetail/PutawayRuleDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.putawayRuleDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.putawayRuleDetail.PutawayRuleDetailApplicationService; +import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO; +import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO; +import com.mhd.wms.interfaces.assember.putawayRuleDetail.PutawayRuleDetailAssembler; +import com.mhd.wms.interfaces.dto.putawayRuleDetail.PutawayRuleDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 上架规则明细Api + * + * @author gen + * @date 2024-07-20 + */ +@RestController +@RequestMapping("/putawayRuleDetailApi") +public class PutawayRuleDetailApi extends BaseController { + @Autowired + private PutawayRuleDetailApplicationService putawayRuleDetailApplicationService; + + @Resource + private PutawayRuleDetailAssembler putawayRuleDetailAssembler; + + /** + * 分页查询上架规则明细列表 + */ + @ApiOperation("查询上架规则明细列表") + @GetMapping("/list") + public TableDataInfo list(PutawayRuleDetailDTO putawayRuleDetailDTO) + { + //转换实体 + PutawayRuleDetailDO putawayRuleDetailDO = putawayRuleDetailAssembler.toDO(putawayRuleDetailDTO); + startPage(); + List list = putawayRuleDetailApplicationService.queryList(putawayRuleDetailDO); + return getDataTable(list); + } + + /** + * 编辑上架规则明细 + */ + @ApiOperation("编辑上架规则明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody PutawayRuleDetailDTO putawayRuleDetailDTO) + { + //转换实体 + PutawayRuleDetailDO putawayRuleDetailDO = putawayRuleDetailAssembler.toDO(putawayRuleDetailDTO); + if(putawayRuleDetailDTO.getId() != null){ + return toAjax(putawayRuleDetailApplicationService.update(putawayRuleDetailDO)); + }else { + return toAjax(putawayRuleDetailApplicationService.insert(putawayRuleDetailDO)); + } + } + + /** + * 批量删除上架规则明细 + */ + @ApiOperation("批量删除上架规则明细") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(putawayRuleDetailApplicationService.delete(ids)); + } + + /** + * 获取上架规则明细详细信息 + */ + @ApiOperation("获取上架规则明细") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(putawayRuleDetailApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRule/QcRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRule/QcRuleApi.java new file mode 100644 index 000000000..3c106c6aa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRule/QcRuleApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.qcRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.qcRule.QcRuleApplicationService; +import com.mhd.wms.domain.qcRule.repository.po.QcRulePO; +import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO; +import com.mhd.wms.interfaces.assember.qcRule.QcRuleAssembler; +import com.mhd.wms.interfaces.dto.qcRule.QcRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 质检规则Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/qcRuleApi") +public class QcRuleApi extends BaseController { + @Autowired + private QcRuleApplicationService qcRuleApplicationService; + + @Resource + private QcRuleAssembler qcRuleAssembler; + + /** + * 分页查询质检规则列表 + */ + @ApiOperation("查询质检规则列表") + @GetMapping("/list") + public TableDataInfo list(QcRuleDTO qcRuleDTO) + { + //转换实体 + QcRuleDO qcRuleDO = qcRuleAssembler.toDO(qcRuleDTO); + startPage(); + List list = qcRuleApplicationService.queryList(qcRuleDO); + return getDataTable(list); + } + + /** + * 编辑质检规则 + */ + @ApiOperation("编辑质检规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody QcRuleDTO qcRuleDTO) + { + //转换实体 + QcRuleDO qcRuleDO = qcRuleAssembler.toDO(qcRuleDTO); + if(qcRuleDTO.getId() != null){ + return toAjax(qcRuleApplicationService.update(qcRuleDO)); + }else { + return toAjax(qcRuleApplicationService.insert(qcRuleDO)); + } + } + + /** + * 批量删除质检规则 + */ + @ApiOperation("批量删除质检规则") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(qcRuleApplicationService.delete(ids)); + } + + /** + * 获取质检规则详细信息 + */ + @ApiOperation("获取质检规则") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(qcRuleApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRuleDetail/QcRuleDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRuleDetail/QcRuleDetailApi.java new file mode 100644 index 000000000..5f522bc1a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qcRuleDetail/QcRuleDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.qcRuleDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.qcRuleDetail.QcRuleDetailApplicationService; +import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO; +import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO; +import com.mhd.wms.interfaces.assember.qcRuleDetail.QcRuleDetailAssembler; +import com.mhd.wms.interfaces.dto.qcRuleDetail.QcRuleDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 质检规则明细Api + * + * @author gen + * @date 2024-07-22 + */ +@RestController +@RequestMapping("/qcRuleDetailApi") +public class QcRuleDetailApi extends BaseController { + @Autowired + private QcRuleDetailApplicationService qcRuleDetailApplicationService; + + @Resource + private QcRuleDetailAssembler qcRuleDetailAssembler; + + /** + * 分页查询质检规则明细列表 + */ + @ApiOperation("查询质检规则明细列表") + @GetMapping("/list") + public TableDataInfo list(QcRuleDetailDTO qcRuleDetailDTO) + { + //转换实体 + QcRuleDetailDO qcRuleDetailDO = qcRuleDetailAssembler.toDO(qcRuleDetailDTO); + startPage(); + List list = qcRuleDetailApplicationService.queryList(qcRuleDetailDO); + return getDataTable(list); + } + + /** + * 编辑质检规则明细 + */ + @ApiOperation("编辑质检规则明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody QcRuleDetailDTO qcRuleDetailDTO) + { + //转换实体 + QcRuleDetailDO qcRuleDetailDO = qcRuleDetailAssembler.toDO(qcRuleDetailDTO); + if(qcRuleDetailDTO.getId() != null){ + return toAjax(qcRuleDetailApplicationService.update(qcRuleDetailDO)); + }else { + return toAjax(qcRuleDetailApplicationService.insert(qcRuleDetailDO)); + } + } + + /** + * 批量删除质检规则明细 + */ + @ApiOperation("批量删除质检规则明细") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(qcRuleDetailApplicationService.delete(ids)); + } + + /** + * 获取质检规则明细详细信息 + */ + @ApiOperation("获取质检规则明细") + @GetMapping(value = "/getInfo/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(qcRuleDetailApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qualityInspection/QualityInspectionApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qualityInspection/QualityInspectionApi.java new file mode 100644 index 000000000..938ffc13c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/qualityInspection/QualityInspectionApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.qualityInspection; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.qualityInspection.QualityInspectionApplicationService; +import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO; +import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO; +import com.mhd.wms.interfaces.assember.qualityInspection.QualityInspectionAssembler; +import com.mhd.wms.interfaces.dto.qualityInspection.QualityInspectionDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 质检管理Api + * + * @author gen + * @date 2024-05-25 + */ +@RestController +@RequestMapping("/qualityInspectionApi") +public class QualityInspectionApi extends BaseController { + @Autowired + private QualityInspectionApplicationService qualityInspectionApplicationService; + + @Resource + private QualityInspectionAssembler qualityInspectionAssembler; + + /** + * 分页查询质检管理列表 + */ + @ApiOperation("查询质检管理列表") + @GetMapping("/list") + public TableDataInfo list(QualityInspectionDTO qualityInspectionDTO) + { + //转换实体 + QualityInspectionDO qualityInspectionDO = qualityInspectionAssembler.toDO(qualityInspectionDTO); + startPage(); + List list = qualityInspectionApplicationService.queryList(qualityInspectionDO); + return getDataTable(list); + } + + /** + * 编辑质检管理 + */ + @ApiOperation("编辑质检管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody QualityInspectionDTO qualityInspectionDTO) + { + //转换实体 + QualityInspectionDO qualityInspectionDO = qualityInspectionAssembler.toDOByEdit(qualityInspectionDTO); + if(qualityInspectionDTO.getQualityInspectionId() != null){ + return toAjax(qualityInspectionApplicationService.update(qualityInspectionDO)); + }else { + return toAjax(qualityInspectionApplicationService.insert(qualityInspectionDO)); + } + } + + /** + * 批量删除质检管理 + */ + @ApiOperation("批量删除质检管理") + @DeleteMapping("/deleteByIds/{qualityInspectionIds}") + public AjaxResult delete(@PathVariable Long[] qualityInspectionIds) + { + return toAjax(qualityInspectionApplicationService.delete(qualityInspectionIds)); + } + + /** + * 获取质检管理详细信息 + */ + @ApiOperation("获取质检管理") + @GetMapping(value = "/getInfo/{qualityInspectionId}") + public AjaxResult getInfo(@PathVariable("qualityInspectionId") Long qualityInspectionId) + { + return AjaxResult.success(qualityInspectionApplicationService.getInfo(qualityInspectionId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/receiptMaterialDetail/ReceiptMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/receiptMaterialDetail/ReceiptMaterialDetailApi.java new file mode 100644 index 000000000..85721b03d --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/receiptMaterialDetail/ReceiptMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.receiptMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.receiptMaterialDetail.ReceiptMaterialDetailApplicationService; +import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO; +import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO; +import com.mhd.wms.interfaces.assember.receiptMaterialDetail.ReceiptMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.receiptMaterialDetail.ReceiptMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料明细Api + * + * @author gen + * @date 2024-06-17 + */ +@RestController +@RequestMapping("/receiptMaterialDetailApi") +public class ReceiptMaterialDetailApi extends BaseController { + @Autowired + private ReceiptMaterialDetailApplicationService receiptMaterialDetailApplicationService; + + @Resource + private ReceiptMaterialDetailAssembler receiptMaterialDetailAssembler; + + /** + * 分页查询物料明细列表 + */ + @ApiOperation("查询物料明细列表") + @GetMapping("/list") + public TableDataInfo list(ReceiptMaterialDetailDTO receiptMaterialDetailDTO) + { + //转换实体 + ReceiptMaterialDetailDO receiptMaterialDetailDO = receiptMaterialDetailAssembler.toDO(receiptMaterialDetailDTO); + startPage(); + List list = receiptMaterialDetailApplicationService.queryList(receiptMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑物料明细 + */ + @ApiOperation("编辑物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ReceiptMaterialDetailDTO receiptMaterialDetailDTO) + { + //转换实体 + ReceiptMaterialDetailDO receiptMaterialDetailDO = receiptMaterialDetailAssembler.toDO(receiptMaterialDetailDTO); + if(receiptMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(receiptMaterialDetailApplicationService.update(receiptMaterialDetailDO)); + }else { + return toAjax(receiptMaterialDetailApplicationService.insert(receiptMaterialDetailDO)); + } + } + + /** + * 批量删除物料明细 + */ + @ApiOperation("批量删除物料明细") + @DeleteMapping("/deleteByIds/{materialDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailIds) + { + return toAjax(receiptMaterialDetailApplicationService.delete(materialDetailIds)); + } + + /** + * 获取物料明细详细信息 + */ + @ApiOperation("获取物料明细") + @GetMapping(value = "/getInfo/{materialDetailId}") + public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId) + { + return AjaxResult.success(receiptMaterialDetailApplicationService.getInfo(materialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/replenishmentNotice/ReplenishmentNoticeApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/replenishmentNotice/ReplenishmentNoticeApi.java new file mode 100644 index 000000000..c89668fc7 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/replenishmentNotice/ReplenishmentNoticeApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.replenishmentNotice; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.replenishmentNotice.ReplenishmentNoticeApplicationService; +import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO; +import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO; +import com.mhd.wms.interfaces.assember.replenishmentNotice.ReplenishmentNoticeAssembler; +import com.mhd.wms.interfaces.dto.replenishmentNotice.ReplenishmentNoticeDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 补货通知单Api + * + * @author gen + * @date 2024-06-11 + */ +@RestController +@RequestMapping("/replenishmentNoticeApi") +public class ReplenishmentNoticeApi extends BaseController { + @Autowired + private ReplenishmentNoticeApplicationService replenishmentNoticeApplicationService; + + @Resource + private ReplenishmentNoticeAssembler replenishmentNoticeAssembler; + + /** + * 分页查询补货通知单列表 + */ + @ApiOperation("查询补货通知单列表") + @GetMapping("/list") + public TableDataInfo list(ReplenishmentNoticeDTO replenishmentNoticeDTO) + { + //转换实体 + ReplenishmentNoticeDO replenishmentNoticeDO = replenishmentNoticeAssembler.toDO(replenishmentNoticeDTO); + startPage(); + List list = replenishmentNoticeApplicationService.queryList(replenishmentNoticeDO); + return getDataTable(list); + } + + /** + * 编辑补货通知单 + */ + @ApiOperation("编辑补货通知单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ReplenishmentNoticeDTO replenishmentNoticeDTO) + { + //转换实体 + ReplenishmentNoticeDO replenishmentNoticeDO = replenishmentNoticeAssembler.toDOByEdit(replenishmentNoticeDTO); + if(replenishmentNoticeDTO.getReplenishmentNoticeId() != null){ + return toAjax(replenishmentNoticeApplicationService.update(replenishmentNoticeDO)); + }else { + return toAjax(replenishmentNoticeApplicationService.insert(replenishmentNoticeDO)); + } + } + + /** + * 批量删除补货通知单 + */ + @ApiOperation("批量删除补货通知单") + @DeleteMapping("/deleteByIds/{replenishmentNoticeIds}") + public AjaxResult delete(@PathVariable Long[] replenishmentNoticeIds) + { + return toAjax(replenishmentNoticeApplicationService.delete(replenishmentNoticeIds)); + } + + /** + * 获取补货通知单详细信息 + */ + @ApiOperation("获取补货通知单") + @GetMapping(value = "/getInfo/{replenishmentNoticeId}") + public AjaxResult getInfo(@PathVariable("replenishmentNoticeId") Long replenishmentNoticeId) + { + return AjaxResult.success(replenishmentNoticeApplicationService.getInfo(replenishmentNoticeId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/serialNumber/SerialNumberApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/serialNumber/SerialNumberApi.java new file mode 100644 index 000000000..8fc7dcec5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/serialNumber/SerialNumberApi.java @@ -0,0 +1,99 @@ +package com.mhd.wms.interfaces.facadeApi.serialNumber; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.serialNumber.SerialNumberApplicationService; +import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO; +import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO; +import com.mhd.wms.interfaces.assember.serialNumber.SerialNumberAssembler; +import com.mhd.wms.interfaces.dto.serialNumber.SerialNumberDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 序列号 + * + * @author gen + * @date 2024-07-19 + */ +@RestController +@RequestMapping("/serialNumberApi") +public class SerialNumberApi extends BaseController { + @Autowired + private SerialNumberApplicationService serialNumberApplicationService; + + @Resource + private SerialNumberAssembler serialNumberAssembler; + + /** + * 分页查询序列号列表 + */ + @ApiOperation("查询序列号列表") + @GetMapping("/list") + public TableDataInfo list(SerialNumberDTO serialNumberDTO) + { + //转换实体 + SerialNumberDO serialNumberDO = serialNumberAssembler.toDO(serialNumberDTO); + startPage(); + List list = serialNumberApplicationService.queryList(serialNumberDO); + return getDataTable(list); + } + + /** + * 编辑序列号 + */ + @ApiOperation("编辑序列号") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody SerialNumberDTO serialNumberDTO) + { + //转换实体 + SerialNumberDO serialNumberDO = serialNumberAssembler.toDO(serialNumberDTO); + if(serialNumberDTO.getSerialNumberId() != null){ + return toAjax(serialNumberApplicationService.update(serialNumberDO)); + }else { + return toAjax(serialNumberApplicationService.insert(serialNumberDO)); + } + } + + /** + * 批量删除序列号 + */ + @ApiOperation("批量删除序列号") + @DeleteMapping("/deleteByIds/{serialNumberIds}") + public AjaxResult delete(@PathVariable Long[] serialNumberIds) + { + return toAjax(serialNumberApplicationService.delete(serialNumberIds)); + } + + /** + * 获取序列号详细信息 + */ + @ApiOperation("获取序列号") + @GetMapping(value = "/getInfo/{serialNumberId}") + public AjaxResult getInfo(@PathVariable("serialNumberId") Long serialNumberId) + { + return AjaxResult.success(serialNumberApplicationService.getInfo(serialNumberId)); + } + + + + @ApiOperation("拣货校验序列号是否在库") + @PostMapping(value = "/validationForPicking") + public AjaxResult validationForPicking(@RequestBody SerialNumberDTO serialNumberDTO) + { + return AjaxResult.success(serialNumberApplicationService.validationForPicking(serialNumberDTO)); + } + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shelfMaterialDetail/ShelfMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shelfMaterialDetail/ShelfMaterialDetailApi.java new file mode 100644 index 000000000..1d9369abe --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shelfMaterialDetail/ShelfMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.shelfMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.shelfMaterialDetail.ShelfMaterialDetailApplicationService; +import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO; +import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO; +import com.mhd.wms.interfaces.assember.shelfMaterialDetail.ShelfMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.shelfMaterialDetail.ShelfMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 物料明细Api + * + * @author gen + * @date 2024-06-17 + */ +@RestController +@RequestMapping("/shelfMaterialDetailApi") +public class ShelfMaterialDetailApi extends BaseController { + @Autowired + private ShelfMaterialDetailApplicationService shelfMaterialDetailApplicationService; + + @Resource + private ShelfMaterialDetailAssembler shelfMaterialDetailAssembler; + + /** + * 分页查询物料明细列表 + */ + @ApiOperation("查询物料明细列表") + @GetMapping("/list") + public TableDataInfo list(ShelfMaterialDetailDTO shelfMaterialDetailDTO) + { + //转换实体 + ShelfMaterialDetailDO shelfMaterialDetailDO = shelfMaterialDetailAssembler.toDO(shelfMaterialDetailDTO); + startPage(); + List list = shelfMaterialDetailApplicationService.queryList(shelfMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑物料明细 + */ + @ApiOperation("编辑物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ShelfMaterialDetailDTO shelfMaterialDetailDTO) + { + //转换实体 + ShelfMaterialDetailDO shelfMaterialDetailDO = shelfMaterialDetailAssembler.toDO(shelfMaterialDetailDTO); + if(shelfMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(shelfMaterialDetailApplicationService.update(shelfMaterialDetailDO)); + }else { + return toAjax(shelfMaterialDetailApplicationService.insert(shelfMaterialDetailDO)); + } + } + + /** + * 批量删除物料明细 + */ + @ApiOperation("批量删除物料明细") + @DeleteMapping("/deleteByIds/{shelfMaterialDetailIds}") + public AjaxResult delete(@PathVariable Long[] shelfMaterialDetailIds) + { + return toAjax(shelfMaterialDetailApplicationService.delete(shelfMaterialDetailIds)); + } + + /** + * 获取物料明细详细信息 + */ + @ApiOperation("获取物料明细") + @GetMapping(value = "/getInfo/{shelfMaterialDetailId}") + public AjaxResult getInfo(@PathVariable("shelfMaterialDetailId") Long shelfMaterialDetailId) + { + return AjaxResult.success(shelfMaterialDetailApplicationService.getInfo(shelfMaterialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftManage/ShiftManageApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftManage/ShiftManageApi.java new file mode 100644 index 000000000..45b49754e --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftManage/ShiftManageApi.java @@ -0,0 +1,123 @@ +package com.mhd.wms.interfaces.facadeApi.shiftManage; + +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.shiftManage.ShiftManageApplicationService; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.interfaces.assember.shiftManage.ShiftManageAssembler; +import com.mhd.wms.interfaces.dto.shiftManage.ShiftManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 移位管理Api + * + * @author gen + * @date 2024-07-02 + */ +@RestController +@RequestMapping("/shiftManageApi") +public class ShiftManageApi extends BaseController { + @Autowired + private ShiftManageApplicationService shiftManageApplicationService; + + @Resource + private ShiftManageAssembler shiftManageAssembler; + + /** + * 分页查询移位管理列表 + */ + @ApiOperation("查询移位管理列表") + @GetMapping("/list") + public TableDataInfo list(ShiftManageDTO shiftManageDTO) { + //转换实体 + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + startPage(); + List list = shiftManageApplicationService.queryList(shiftManageDO); + return getDataTable(list); + } + + /** + * 编辑移位管理 + */ + @ApiOperation("编辑移位管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ShiftManageDTO shiftManageDTO) { + //转换实体 + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + if (shiftManageDTO.getShiftManageId() != null) { + return toAjax(shiftManageApplicationService.update(shiftManageDO)); + } else { + return toAjax(shiftManageApplicationService.insert(shiftManageDO)); + } + } + + /** + * 批量删除移位管理 + */ + @ApiOperation("批量删除移位管理") + @DeleteMapping("/deleteByIds/{shiftManageIds}") + public AjaxResult delete(@PathVariable Long[] shiftManageIds) { + return toAjax(shiftManageApplicationService.delete(shiftManageIds)); + } + + /** + * 获取移位管理详细信息 + */ + @ApiOperation("获取移位管理") + @GetMapping(value = "/getInfo/{shiftManageId}") + public AjaxResult getInfo(@PathVariable("shiftManageId") Long shiftManageId) { + return AjaxResult.success(shiftManageApplicationService.getInfo(shiftManageId)); + } + + + /** + * 新增移位单 + */ + @ApiOperation("新增移位单") + @PostMapping("/add") + public R add(@RequestBody ShiftManageDTO shiftManageDTO) { + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + if (shiftManageDTO.getShiftManageId() != null) { + return R.ok(shiftManageApplicationService.update(shiftManageDO)); + } else { + return R.ok(shiftManageApplicationService.insert(shiftManageDO)); + } + } + + + @ApiOperation("完成移位") + @PostMapping("/finishShift") + public AjaxResult finishShift(@RequestBody ShiftManageDTO shiftManageDTO) { + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + return AjaxResult.success(shiftManageApplicationService.finishShiftByPC(shiftManageDO)); + } + + /** + * 审核入库单 + */ + @ApiOperation("审核移位单") + @PostMapping(value = "/auditState") + public AjaxResult auditState(@RequestBody ShiftManageDTO shiftManageDTO) { + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + return AjaxResult.success(shiftManageApplicationService.auditState(shiftManageDO)); + } + + /** + * 任务下发 + */ + @ApiOperation("任务下发") + @PostMapping(value = "/taskDistribution") + public AjaxResult taskDistribution(@RequestBody ShiftManageDTO shiftManageDTO) { + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + return AjaxResult.success(shiftManageApplicationService.taskDistribution(shiftManageDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftMaterialDetail/ShiftMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftMaterialDetail/ShiftMaterialDetailApi.java new file mode 100644 index 000000000..a582d40da --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/shiftMaterialDetail/ShiftMaterialDetailApi.java @@ -0,0 +1,99 @@ +package com.mhd.wms.interfaces.facadeApi.shiftMaterialDetail; + +import com.mhd.common.core.exception.ServiceException; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.shiftMaterialDetail.ShiftMaterialDetailApplicationService; +import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO; +import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO; +import com.mhd.wms.interfaces.assember.shiftMaterialDetail.ShiftMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.shiftMaterialDetail.ShiftMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 移位物料明细Api + * + * @author gen + * @date 2024-07-02 + */ +@RestController +@RequestMapping("/shiftMaterialDetailApi") +public class ShiftMaterialDetailApi extends BaseController { + @Autowired + private ShiftMaterialDetailApplicationService shiftMaterialDetailApplicationService; + + @Resource + private ShiftMaterialDetailAssembler shiftMaterialDetailAssembler; + + + /** + * 分页查询移位物料明细列表 + */ + @ApiOperation("查询移位物料明细列表") + @GetMapping("/list") + public TableDataInfo list(ShiftMaterialDetailDTO shiftMaterialDetailDTO) { + //转换实体 + ShiftMaterialDetailDO shiftMaterialDetailDO = shiftMaterialDetailAssembler.toDO(shiftMaterialDetailDTO); + startPage(); + List list = shiftMaterialDetailApplicationService.queryList(shiftMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑移位物料明细 + */ + @ApiOperation("编辑移位物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody ShiftMaterialDetailDTO shiftMaterialDetailDTO) { + //转换实体 + ShiftMaterialDetailDO shiftMaterialDetailDO = shiftMaterialDetailAssembler.toDO(shiftMaterialDetailDTO); + if (shiftMaterialDetailDTO.getShiftIoDetailId() != null) { + return toAjax(shiftMaterialDetailApplicationService.update(shiftMaterialDetailDO)); + } else { + return toAjax(shiftMaterialDetailApplicationService.insert(shiftMaterialDetailDO)); + } + } + + /** + * 批量删除移位物料明细 + */ + @ApiOperation("批量删除移位物料明细") + @DeleteMapping("/deleteByIds/{shiftIoDetailIds}") + public AjaxResult delete(@PathVariable Long[] shiftIoDetailIds) { + return toAjax(shiftMaterialDetailApplicationService.delete(shiftIoDetailIds)); + } + + /** + * 获取移位物料明细详细信息 + */ + @ApiOperation("获取移位物料明细") + @GetMapping(value = "/getInfo/{shiftIoDetailId}") + public AjaxResult getInfo(@PathVariable("shiftIoDetailId") Long shiftIoDetailId) { + return AjaxResult.success(shiftMaterialDetailApplicationService.getInfo(shiftIoDetailId)); + } + + + /** + * 移位单详情 + */ + @ApiOperation("查询移位物料明细列表") + @GetMapping("/listDetail") + public TableDataInfo listDetail(ShiftMaterialDetailDTO shiftMaterialDetailDTO) { + //转换实体 + ShiftMaterialDetailDO shiftMaterialDetailDO = shiftMaterialDetailAssembler.toDO(shiftMaterialDetailDTO); + if (StringUtils.isEmpty(shiftMaterialDetailDTO.getShiftNumber())){ + throw new ServiceException("请输入移位单号"); + } + startPage(); + List list = shiftMaterialDetailApplicationService.queryList(shiftMaterialDetailDO); + return getDataTable(list); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingDistributionDetails/SowingDistributionDetailsApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingDistributionDetails/SowingDistributionDetailsApi.java new file mode 100644 index 000000000..209b829d9 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingDistributionDetails/SowingDistributionDetailsApi.java @@ -0,0 +1,126 @@ +package com.mhd.wms.interfaces.facadeApi.sowingDistributionDetails; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.sowingDistributionDetails.SowingDistributionDetailsApplicationService; +import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO; +import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO; +import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO; +import com.mhd.wms.interfaces.assember.sowingDistributionDetails.SowingDistributionDetailsAssembler; +import com.mhd.wms.interfaces.dto.sowingDistributionDetails.SowingDistributionDetailsDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 播种分货明细表Api + * + * @author gen + * @date 2024-06-05 + */ +@RestController +@RequestMapping("/waveOutOrderRelevanceApi") +public class SowingDistributionDetailsApi extends BaseController { + @Autowired + private SowingDistributionDetailsApplicationService sowingDistributionDetailsApplicationService; + + @Resource + private SowingDistributionDetailsAssembler sowingDistributionDetailsAssembler; + + /** + * 分页查询播种分货明细表列表 + */ + @ApiOperation("查询播种分货明细表列表") + @GetMapping("/list") + public TableDataInfo list(SowingDistributionDetailsDTO sowingDistributionDetailsDTO) + { + //转换实体 + SowingDistributionDetailsDO sowingDistributionDetailsDO = sowingDistributionDetailsAssembler.toDO(sowingDistributionDetailsDTO); + startPage(); + List list = sowingDistributionDetailsApplicationService.queryList(sowingDistributionDetailsDO); + return getDataTable(list); + } + + /** + * 编辑播种分货明细表 + */ + @ApiOperation("编辑播种分货明细表") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody SowingDistributionDetailsDTO sowingDistributionDetailsDTO) + { + //转换实体 + SowingDistributionDetailsDO sowingDistributionDetailsDO = sowingDistributionDetailsAssembler.toDOByEdit(sowingDistributionDetailsDTO); + if(sowingDistributionDetailsDTO.getSowingDistributionDetailsId() != null){ + return toAjax(sowingDistributionDetailsApplicationService.update(sowingDistributionDetailsDO)); + }else { + return toAjax(sowingDistributionDetailsApplicationService.insert(sowingDistributionDetailsDO)); + } + } + + /** + * 批量删除播种分货明细表 + */ + @ApiOperation("批量删除播种分货明细表") + @DeleteMapping("/deleteByIds/{waveOutOrderRelevanceIds}") + public AjaxResult delete(@PathVariable Long[] waveOutOrderRelevanceIds) + { + return toAjax(sowingDistributionDetailsApplicationService.delete(waveOutOrderRelevanceIds)); + } + + /** + * 获取播种分货明细表详细信息 + */ + @ApiOperation("获取播种分货明细表") + @GetMapping(value = "/getInfo/{waveOutOrderRelevanceId}") + public AjaxResult getInfo(@PathVariable("waveOutOrderRelevanceId") Long waveOutOrderRelevanceId) + { + return AjaxResult.success(sowingDistributionDetailsApplicationService.getInfo(waveOutOrderRelevanceId)); + } + + /** + * 播种分单 + */ + @ApiOperation("播种分单") + @GetMapping("/allocationSowingWall") + public AjaxResult allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO){ + return AjaxResult.success(sowingDistributionDetailsApplicationService.allocationSowingWall(allocationSowingWallDO)); + } + + /** + * 物料扫码 将物料分配至对应的播种墙 + */ + @ApiOperation("物料扫码 将物料分配至对应的播种墙 ") + @GetMapping("/materialScanCodeAllocationSowing") + public AjaxResult materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO){ + return AjaxResult.success(sowingDistributionDetailsApplicationService.materialScanCodeAllocationSowing(allocationSowingWallDO)); + } + + + /** + * 按单分货 + */ + @ApiOperation("按单分货") + @GetMapping("/allocationByOrder") + public AjaxResult allocationByOrder(AllocationByOrderDO allocationByOrderDO){ + return AjaxResult.success(sowingDistributionDetailsApplicationService.allocationByOrder(allocationByOrderDO)); + } + + /** + * 物料扫码 将物料分配至对应的出库单物料明细 + */ + @ApiOperation("物料扫码 将物料分配至对应的出库单物料明细 ") + @GetMapping("/materialScanCodeAllocationByOrder") + public AjaxResult materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO){ + return AjaxResult.success(sowingDistributionDetailsApplicationService.materialScanCodeAllocationByOrder(allocationByOrderDO)); + } + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingWall/SowingWallApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingWall/SowingWallApi.java new file mode 100644 index 000000000..169b1c3aa --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/sowingWall/SowingWallApi.java @@ -0,0 +1,101 @@ +package com.mhd.wms.interfaces.facadeApi.sowingWall; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.sowingWall.SowingWallApplicationService; +import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO; +import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO; +import com.mhd.wms.interfaces.assember.sowingWall.SowingWallAssembler; +import com.mhd.wms.interfaces.dto.sowingWall.SowingWallDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 播种墙管理Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/sowingWallApi") +public class SowingWallApi extends BaseController { + @Autowired + private SowingWallApplicationService sowingWallApplicationService; + + @Resource + private SowingWallAssembler sowingWallAssembler; + + /** + * 分页查询播种墙管理列表 + */ + @ApiOperation("查询播种墙管理列表") + @GetMapping("/list") + public TableDataInfo list(SowingWallDTO sowingWallDTO) + { + //转换实体 + SowingWallDO sowingWallDO = sowingWallAssembler.toDO(sowingWallDTO); + startPage(); + List list = sowingWallApplicationService.queryList(sowingWallDO); + return getDataTable(list); + } + + /** + * 编辑播种墙管理 + */ + @ApiOperation("编辑播种墙管理") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody SowingWallDTO sowingWallDTO) + { + //转换实体 + SowingWallDO sowingWallDO = sowingWallAssembler.toDOByEdit(sowingWallDTO); + if(sowingWallDTO.getSowingWallId() != null){ + return toAjax(sowingWallApplicationService.update(sowingWallDO)); + }else { + return toAjax(sowingWallApplicationService.insert(sowingWallDO)); + } + } + + /** + * 批量删除播种墙管理 + */ + @ApiOperation("批量删除播种墙管理") + @DeleteMapping("/deleteByIds/{sowingWallIds}") + public AjaxResult delete(@PathVariable Long[] sowingWallIds) + { + return toAjax(sowingWallApplicationService.delete(sowingWallIds)); + } + + /** + * 获取播种墙管理详细信息 + */ + @ApiOperation("获取播种墙管理") + @GetMapping(value = "/getInfo/{sowingWallId}") + public AjaxResult getInfo(@PathVariable("sowingWallId") Long sowingWallId) + { + return AjaxResult.success(sowingWallApplicationService.getInfo(sowingWallId)); + } + + + /** + * 批量根据id作废播种墙 + */ + @ApiOperation("批量根据id作废播种墙") + @GetMapping("/nullifyByIds/{sowingWallIds}") + public AjaxResult nullifyByIds(@PathVariable Long[] sowingWallIds) + { + return toAjax(sowingWallApplicationService.nullifyByIds(sowingWallIds)); + } + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/statementStatistics/StatementStatisticsApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/statementStatistics/StatementStatisticsApi.java new file mode 100644 index 000000000..bd3a59e68 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/statementStatistics/StatementStatisticsApi.java @@ -0,0 +1,117 @@ +package com.mhd.wms.interfaces.facadeApi.statementStatistics; + +import com.github.pagehelper.PageInfo; +import com.mhd.common.core.constant.HttpStatus; +import com.mhd.common.core.utils.PageUtils; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.statementStatistics.StatementStatisticsService; +import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO; +import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO; +import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO; +import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO; +import com.mhd.wms.interfaces.assember.statementStatistics.ImmediateInventoryAssembler; +import com.mhd.wms.interfaces.assember.statementStatistics.WarehousingReportAssembler; +import com.mhd.wms.interfaces.dto.statementStatistics.ImmediateInventoryDTO; +import com.mhd.wms.interfaces.dto.statementStatistics.WarehousingReportDTO; +import io.swagger.annotations.ApiOperation; +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.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 报表管理Api + * + * @author gen + * @date 2024-05-07 + */ +@RestController +@RequestMapping("/statementStatisticsApi") +public class StatementStatisticsApi { + + @Resource + private ImmediateInventoryAssembler immediateInventoryAssembler; + + @Resource + private WarehousingReportAssembler warehousingReportAssembler; + + @Autowired + private StatementStatisticsService statementStatisticsService; + /** + * 分页查询即时库存列表 + */ + @ApiOperation("查询即时库存列表") + @GetMapping("/queryImmediateInventoryList") + public TableDataInfo queryImmediateInventoryList(ImmediateInventoryDTO immediateInventoryDTO) + { + //转换实体 + ImmediateInventoryDO immediateInventoryDO = immediateInventoryAssembler.toDO(immediateInventoryDTO); + startPage(); + List list = statementStatisticsService.queryImmediateInventoryList(immediateInventoryDO); + return getDataTable(list); + } + /** + * 分页查询入库日报表列表 + */ + @ApiOperation("查询入库日报表列表") + @GetMapping("/queryWarehousingReportList") + public TableDataInfo queryWarehousingReportList(WarehousingReportDTO warehousingReportDTO) + { + //转换实体 + WarehousingReportDO warehousingReportDO = warehousingReportAssembler.toDO(warehousingReportDTO); + startPage(); + List list = statementStatisticsService.queryWarehousingReportList(warehousingReportDO); + return getDataTable(list); + } + /** + * 分页查询出库日报表列表 + */ + @ApiOperation("查询出库日报表列表") + @GetMapping("/queryOutboundReportList") + public TableDataInfo queryOutboundReportList(WarehousingReportDTO warehousingReportDTO) + { + //转换实体 + WarehousingReportDO warehousingReportDO = warehousingReportAssembler.toDO(warehousingReportDTO); + startPage(); + List list = statementStatisticsService.queryOutboundReportList(warehousingReportDO); + return getDataTable(list); + } + /** + * 分页查询出进出存合并报表列表 + */ + @ApiOperation("查询进出存合并报表列表") + @GetMapping("/queryWarehousingAndOutboundReportList") + public TableDataInfo queryWarehousingAndOutboundReportList(WarehousingReportDTO warehousingReportDTO) + { + //转换实体 + WarehousingReportDO warehousingReportDO = warehousingReportAssembler.toDO(warehousingReportDTO); + startPage(); + List list = statementStatisticsService.queryWarehousingAndOutboundReportList(warehousingReportDO); + return getDataTable(list); + } + /** + * 设置请求分页数据 + */ + protected void startPage() + { + PageUtils.startPage(); + } + + /** + * 响应请求分页数据 + */ + @SuppressWarnings({ "rawtypes", "unchecked" }) + protected TableDataInfo getDataTable(List list) + { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setData(list); + //rspData.setRows(list); + rspData.setMsg("查询成功"); + rspData.setTotal(new PageInfo(list).getTotal()); + return rspData; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java new file mode 100644 index 000000000..cc727bdf6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInOrder/StockInOrderApi.java @@ -0,0 +1,116 @@ +package com.mhd.wms.interfaces.facadeApi.stockInOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockInOrder.StockInOrderApplicationService; +import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO; +import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO; +import com.mhd.wms.interfaces.assember.stockInOrder.StockInOrderAssembler; +import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 入库单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockInOrderApi") +public class StockInOrderApi extends BaseController { + @Autowired + private StockInOrderApplicationService stockInOrderApplicationService; + + @Resource + private StockInOrderAssembler stockInOrderAssembler; + + /** + * 分页查询入库单列表 + */ + @ApiOperation("查询入库单列表") + @GetMapping("/list") + public TableDataInfo list(StockInOrderDTO stockInOrderDTO) + { + //转换实体 + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + startPage(); + List list = stockInOrderApplicationService.queryList(stockInOrderDO); + return getDataTable(list); + } + + /** + * 编辑入库单 + */ + @ApiOperation("编辑入库单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody StockInOrderDTO stockInOrderDTO) + { + //转换实体 + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDOByEdit(stockInOrderDTO); + if(stockInOrderDTO.getInOrderId() != null){ + return toAjax(stockInOrderApplicationService.update(stockInOrderDO)); + }else { + return toAjax(stockInOrderApplicationService.insert(stockInOrderDO)); + } + } + + /** + * 批量删除入库单 + */ + @ApiOperation("批量删除入库单") + @DeleteMapping("/deleteByIds/{inOrderIds}") + public AjaxResult delete(@PathVariable Long[] inOrderIds) + { + return toAjax(stockInOrderApplicationService.delete(inOrderIds)); + } + + /** + * 获取入库单详细信息 + */ + @ApiOperation("获取入库单") + @GetMapping(value = "/getInfo/{inOrderId}") + public AjaxResult getInfo(@PathVariable("inOrderId") Long inOrderId) + { + return AjaxResult.success(stockInOrderApplicationService.getInfo(inOrderId)); + } + + + /** + * 审核入库单 + */ + @ApiOperation("审核入库单") + @PostMapping(value = "/auditState") + public AjaxResult auditState(@RequestBody StockInOrderDTO stockInOrderDTO) { + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.auditState(stockInOrderDO)); + } + + + /** + * 取消入库单 + */ + @ApiOperation("取消入库单") + @PostMapping(value = "/cancelOrder") + public AjaxResult cancelOrder(@RequestBody StockInOrderDTO stockInOrderDTO) { + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.cancelOrder(stockInOrderDO)); + } + + + /** + * 关闭入库单 + */ + @ApiOperation("关闭入库单") + @PostMapping(value = "/closeOrder") + public AjaxResult closeOrder(@RequestBody StockInOrderDTO stockInOrderDTO) { + StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO); + return AjaxResult.success(stockInOrderApplicationService.closeOrder(stockInOrderDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInTaskOrder/StockInTaskOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInTaskOrder/StockInTaskOrderApi.java new file mode 100644 index 000000000..616b43102 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockInTaskOrder/StockInTaskOrderApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.stockInTaskOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockInTaskOrder.StockInTaskOrderApplicationService; +import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO; +import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO; +import com.mhd.wms.interfaces.assember.stockInTaskOrder.StockInTaskOrderAssembler; +import com.mhd.wms.interfaces.dto.stockInTaskOrder.StockInTaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 入库作业单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockInTaskOrderApi") +public class StockInTaskOrderApi extends BaseController { + @Autowired + private StockInTaskOrderApplicationService stockInTaskOrderApplicationService; + + @Resource + private StockInTaskOrderAssembler stockInTaskOrderAssembler; + + /** + * 分页查询入库作业单列表 + */ + @ApiOperation("查询入库作业单列表") + @GetMapping("/list") + public TableDataInfo list(StockInTaskOrderDTO stockInTaskOrderDTO) + { + //转换实体 + StockInTaskOrderDO stockInTaskOrderDO = stockInTaskOrderAssembler.toDO(stockInTaskOrderDTO); + startPage(); + List list = stockInTaskOrderApplicationService.queryList(stockInTaskOrderDO); + return getDataTable(list); + } + + /** + * 编辑入库作业单 + */ + @ApiOperation("编辑入库作业单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody StockInTaskOrderDTO stockInTaskOrderDTO) + { + //转换实体 + StockInTaskOrderDO stockInTaskOrderDO = stockInTaskOrderAssembler.toDOByEdit(stockInTaskOrderDTO); + if(stockInTaskOrderDTO.getInTaskOrderId() != null){ + return toAjax(stockInTaskOrderApplicationService.update(stockInTaskOrderDO)); + }else { + return toAjax(stockInTaskOrderApplicationService.insert(stockInTaskOrderDO)); + } + } + + /** + * 批量删除入库作业单 + */ + @ApiOperation("批量删除入库作业单") + @DeleteMapping("/deleteByIds/{inTaskOrderIds}") + public AjaxResult delete(@PathVariable Long[] inTaskOrderIds) + { + return toAjax(stockInTaskOrderApplicationService.delete(inTaskOrderIds)); + } + + /** + * 获取入库作业单详细信息 + */ + @ApiOperation("获取入库作业单") + @GetMapping(value = "/getInfo/{inTaskOrderId}") + public AjaxResult getInfo(@PathVariable("inTaskOrderId") Long inTaskOrderId) + { + return AjaxResult.success(stockInTaskOrderApplicationService.getInfo(inTaskOrderId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java new file mode 100644 index 000000000..41925939c --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutOrder/StockOutOrderApi.java @@ -0,0 +1,233 @@ +package com.mhd.wms.interfaces.facadeApi.stockOutOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.interfaces.assember.stockOutOrder.StockOutOrderAssembler; +import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 出库单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/stockOutOrderApi") +public class StockOutOrderApi extends BaseController { + @Autowired + private StockOutOrderApplicationService stockOutOrderApplicationService; + + @Resource + private StockOutOrderAssembler stockOutOrderAssembler; + + /** + * 分页查询出库单列表 + */ + @ApiOperation("查询出库单列表") + @GetMapping("/list") + public TableDataInfo list(StockOutOrderDTO stockOutOrderDTO) + { + //转换实体 + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + startPage(); + List list = stockOutOrderApplicationService.queryList(stockOutOrderDO); + return getDataTable(list); + } + + /** + * 编辑出库单 + */ + @ApiOperation("编辑出库单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody StockOutOrderDTO stockOutOrderDTO) + { + //转换实体 + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDOByEdit(stockOutOrderDTO); + if(stockOutOrderDTO.getOutOrderId() != null){ + return toAjax(stockOutOrderApplicationService.update(stockOutOrderDO)); + }else { + return toAjax(stockOutOrderApplicationService.insert(stockOutOrderDO)); + } + } + + /** + * 批量删除出库单 + */ + @ApiOperation("批量删除出库单") + @DeleteMapping("/deleteByIds/{outOrderIds}") + public AjaxResult delete(@PathVariable Long[] outOrderIds) + { + return toAjax(stockOutOrderApplicationService.delete(outOrderIds)); + } + + /** + * 获取出库单详细信息 + */ + @ApiOperation("获取出库单") + @GetMapping(value = "/getInfo/{outOrderId}") + public AjaxResult getInfo(@PathVariable("outOrderId") Long outOrderId) + { + return AjaxResult.success(stockOutOrderApplicationService.getInfoChildren(outOrderId)); + } + + /** + * 审核出库单 + */ + @ApiOperation("审核出库单") + @PostMapping(value = "/auditState") + public AjaxResult auditState(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + return AjaxResult.success(stockOutOrderApplicationService.auditState(stockOutOrderDO)); + } + + /** + * 手动分配 + */ + @ApiOperation("手动分配") + @PostMapping("/manualAssign") + public AjaxResult manualAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.manualAssign(stockOutOrderDO)); + } + + + /** + * 取消分配 + */ + @ApiOperation("取消分配") + @PostMapping("/cancelAssign") + public AjaxResult cancelAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.cancelAssign(stockOutOrderDO)); + } + + + + /** + * 生成拣货单 + */ + @ApiOperation("生成拣货单") + @PostMapping("/genPickingOrder") + public AjaxResult genPickingOrder(@RequestBody StockOutOrderDTO stockOutOrderDTO){ + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.genPickingOrder(stockOutOrderDO)); + } + + + /** + * 复核下发 + */ + @ApiOperation("复核下发") + @PostMapping("/checkTaskDistribution") + public AjaxResult checkTaskDistribution(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return AjaxResult.success(stockOutOrderApplicationService.checkTaskDistribution(stockOutOrderDO)); + } + + /** + * 获取出库单复核详细信息 + */ + @ApiOperation("获取出库单复核详细信息") + @GetMapping(value = "/getCheckInfo") + public AjaxResult getCheckInfo(StockOutOrderDTO stockOutOrderDTO) + { + //转换实体 + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + return AjaxResult.success(stockOutOrderApplicationService.getCheckInfo(stockOutOrderDO)); + } + + /** + * 单件复核 + */ + @ApiOperation("单件复核") + @PostMapping("/singleCheck") + public AjaxResult singleCheck(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return AjaxResult.success(stockOutOrderApplicationService.singleCheck(stockOutOrderDO)); + } + + + /** + * 批量复核 + */ + @ApiOperation("批量复核") + @PostMapping("/batchCheck") + public AjaxResult batchCheck(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.batchCheck(stockOutOrderDO)); + } + + + /** + * 批量取消复核 + */ + @ApiOperation("批量取消复核") + @PostMapping("/batchCancelCheck") + public AjaxResult batchCancelCheck(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.batchCancelCheck(stockOutOrderDO)); + } + + + /** + * 批量复核确认 + */ + @ApiOperation("复核确认") + @PostMapping("/checkConfirm") + public AjaxResult checkConfirm(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.checkConfirm(stockOutOrderDO)); + } + + + /** + * 根据指定规则生成波次单 + */ + @ApiOperation("根据指定规则生成波次单") + @PostMapping("/genWaveOrder") + public AjaxResult genWaveOrder(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.genWaveOrder(stockOutOrderDO)); + } + + /** + * 生成补货单 + */ + @ApiOperation("生成补货单") + @GetMapping("/genReplenishmentNotice/{outOrderId}") + public AjaxResult genReplenishmentNotice(@PathVariable("outOrderId") Long outOrderId) { + return toAjax(stockOutOrderApplicationService.genReplenishmentNotice(outOrderId)); + } + + /** + * 自动分配 + */ + @ApiOperation("自动分配") + @PostMapping("/autoAssign") + public AjaxResult autoAssign(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.autoAssign(stockOutOrderDO)); + } + + + @ApiOperation("关闭出库单") + @PostMapping("/close") + public AjaxResult close(@RequestBody StockOutOrderDTO stockOutOrderDTO) + { + //转换实体 + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDOByEdit(stockOutOrderDTO); + return toAjax(stockOutOrderApplicationService.close(stockOutOrderDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutTaskOrder/StockOutTaskOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutTaskOrder/StockOutTaskOrderApi.java new file mode 100644 index 000000000..c48ff8002 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockOutTaskOrder/StockOutTaskOrderApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.stockOutTaskOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockOutTaskOrder.StockOutTaskOrderApplicationService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.interfaces.assember.stockOutTaskOrder.StockOutTaskOrderAssembler; +import com.mhd.wms.interfaces.dto.stockOutTaskOrder.StockOutTaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 拣货作业单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/stockOutTaskOrderApi") +public class StockOutTaskOrderApi extends BaseController { + @Autowired + private StockOutTaskOrderApplicationService stockOutTaskOrderApplicationService; + + @Resource + private StockOutTaskOrderAssembler stockOutTaskOrderAssembler; + + /** + * 分页查询拣货作业单列表 + */ + @ApiOperation("查询拣货作业单列表") + @GetMapping("/list") + public TableDataInfo list(StockOutTaskOrderDTO stockOutTaskOrderDTO) + { + //转换实体 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDO(stockOutTaskOrderDTO); + startPage(); + List list = stockOutTaskOrderApplicationService.queryList(stockOutTaskOrderDO); + return getDataTable(list); + } + + /** + * 编辑拣货作业单 + */ + @ApiOperation("编辑拣货作业单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) + { + //转换实体 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOByEdit(stockOutTaskOrderDTO); + if(stockOutTaskOrderDTO.getOutTaskOrderId() != null){ + return toAjax(stockOutTaskOrderApplicationService.update(stockOutTaskOrderDO)); + }else { + return toAjax(stockOutTaskOrderApplicationService.insert(stockOutTaskOrderDO)); + } + } + + /** + * 批量删除拣货作业单 + */ + @ApiOperation("批量删除拣货作业单") + @DeleteMapping("/deleteByIds/{outTaskOrderIds}") + public AjaxResult delete(@PathVariable Long[] outTaskOrderIds) + { + return toAjax(stockOutTaskOrderApplicationService.delete(outTaskOrderIds)); + } + + /** + * 获取拣货作业单详细信息 + */ + @ApiOperation("获取拣货作业单") + @GetMapping(value = "/getInfo/{outTaskOrderId}") + public AjaxResult getInfo(@PathVariable("outTaskOrderId") Long outTaskOrderId) + { + return AjaxResult.success(stockOutTaskOrderApplicationService.getInfo(outTaskOrderId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockReceiptOrder/StockReceiptOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockReceiptOrder/StockReceiptOrderApi.java new file mode 100644 index 000000000..f467a4862 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockReceiptOrder/StockReceiptOrderApi.java @@ -0,0 +1,107 @@ +package com.mhd.wms.interfaces.facadeApi.stockReceiptOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.interfaces.assember.stockReceiptOrder.StockReceiptOrderAssembler; +import com.mhd.wms.interfaces.dto.stockReceiptOrder.StockReceiptOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 收货单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockReceiptOrderApi") +public class StockReceiptOrderApi extends BaseController { + @Autowired + private StockReceiptOrderApplicationService stockReceiptOrderApplicationService; + + @Resource + private StockReceiptOrderAssembler stockReceiptOrderAssembler; + + /** + * 分页查询收货单列表 + */ + @ApiOperation("查询收货单列表") + @GetMapping("/list") + public TableDataInfo list(StockReceiptOrderDTO stockReceiptOrderDTO) + { + //转换实体 + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); + startPage(); + List list = stockReceiptOrderApplicationService.queryList(stockReceiptOrderDO); + return getDataTable(list); + } + + /** + * 批量删除收货单 + */ + @ApiOperation("批量删除收货单") + @DeleteMapping("/deleteByIds/{receiptOrderIds}") + public AjaxResult delete(@PathVariable Long[] receiptOrderIds) + { + return toAjax(stockReceiptOrderApplicationService.delete(receiptOrderIds)); + } + + /** + * 获取收货单详细信息 + */ + @ApiOperation("获取收货单") + @GetMapping(value = "/getInfo/{receiptOrderId}") + public AjaxResult getInfo(@PathVariable("receiptOrderId") Long receiptOrderId) + { + return AjaxResult.success(stockReceiptOrderApplicationService.getInfo(receiptOrderId)); + } + + @ApiOperation("分配月台") + @PostMapping("/allocationPlatform") + public AjaxResult allocationPlatform(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); + return toAjax(stockReceiptOrderApplicationService.allocationPlatform(stockReceiptOrderDO)); + } + + @ApiOperation("释放月台") + @PostMapping("/releasePlatform") + public AjaxResult releasePlatform(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); + return toAjax(stockReceiptOrderApplicationService.releasePlatform(stockReceiptOrderDO)); + } + + @ApiOperation("任务下发") + @PostMapping("/taskDistribution") + public AjaxResult taskDistribution(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); + return toAjax(stockReceiptOrderApplicationService.taskDistribution(stockReceiptOrderDO)); + } + + @ApiOperation("收货") + @PostMapping("/receivingGoods") + public AjaxResult receivingGoods(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDOByEdit(stockReceiptOrderDTO); + return toAjax(stockReceiptOrderApplicationService.receivingGoods(stockReceiptOrderDO)); + } + + @ApiOperation("完成收货") + @GetMapping("/completeReceipt/{receiptOrderId}") + public AjaxResult completeReceipt(@PathVariable("receiptOrderId") Long receiptOrderId) { + return toAjax(stockReceiptOrderApplicationService.completeReceipt(receiptOrderId)); + } + + @ApiOperation("整单收货") + @GetMapping("/entireReceipt/{receiptOrderIds}") + public AjaxResult entireReceipt(@PathVariable("receiptOrderIds") Long[] receiptOrderIds) { + return toAjax(stockReceiptOrderApplicationService.entireReceipt(receiptOrderIds)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockShelfOrder/StockShelfOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockShelfOrder/StockShelfOrderApi.java new file mode 100644 index 000000000..457490cca --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/stockShelfOrder/StockShelfOrderApi.java @@ -0,0 +1,94 @@ +package com.mhd.wms.interfaces.facadeApi.stockShelfOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.interfaces.assember.stockShelfOrder.StockShelfOrderAssembler; +import com.mhd.wms.interfaces.dto.stockShelfOrder.StockShelfOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 上架单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockShelfOrderApi") +public class StockShelfOrderApi extends BaseController { + @Autowired + private StockShelfOrderApplicationService stockShelfOrderApplicationService; + + @Resource + private StockShelfOrderAssembler stockShelfOrderAssembler; + + /** + * 分页查询上架单列表 + */ + @ApiOperation("查询上架单列表") + @GetMapping("/list") + public TableDataInfo list(StockShelfOrderDTO stockShelfOrderDTO) + { + //转换实体 + StockShelfOrderDO stockShelfOrderDO = stockShelfOrderAssembler.toDO(stockShelfOrderDTO); + startPage(); + List list = stockShelfOrderApplicationService.queryList(stockShelfOrderDO); + return getDataTable(list); + } + + /** + * 批量删除上架单 + */ + @ApiOperation("批量删除上架单") + @DeleteMapping("/deleteByIds/{shelfOrderIds}") + public AjaxResult delete(@PathVariable Long[] shelfOrderIds) + { + return toAjax(stockShelfOrderApplicationService.delete(shelfOrderIds)); + } + + /** + * 获取上架单详细信息 + */ + @ApiOperation("获取上架单") + @GetMapping(value = "/getInfo/{shelfOrderId}") + public AjaxResult getInfo(@PathVariable("shelfOrderId") Long shelfOrderId) + { + return AjaxResult.success(stockShelfOrderApplicationService.getInfo(shelfOrderId)); + } + + @ApiOperation("任务下发") + @PostMapping("/taskDistribution") + public AjaxResult taskDistribution(@RequestBody StockShelfOrderDTO stockShelfOrderDTO) { + StockShelfOrderDO stockReceiptOrderDO = stockShelfOrderAssembler.toDO(stockShelfOrderDTO); + return toAjax(stockShelfOrderApplicationService.taskDistribution(stockReceiptOrderDO)); + } + + + @ApiOperation("上架") + @PostMapping("/upShelf") + public AjaxResult upShelf(@RequestBody StockShelfOrderDTO stockShelfOrderDTO) { + StockShelfOrderDO stockReceiptOrderDO = stockShelfOrderAssembler.toDOByEdit(stockShelfOrderDTO); + return toAjax(stockShelfOrderApplicationService.upShelf(stockReceiptOrderDO)); + } + + + + @ApiOperation("完成上架") + @PostMapping("/completeUpShelf") + public AjaxResult completeUpShelf(@RequestBody StockShelfOrderDTO stockShelfOrderDTO) { + return toAjax(stockShelfOrderApplicationService.completeUpShelf(stockShelfOrderDTO.getShelfOrderId())); + } + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApi.java new file mode 100644 index 000000000..bc9b861b2 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.taskReceiptMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.taskReceiptMaterialDetail.TaskReceiptMaterialDetailApplicationService; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO; +import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO; +import com.mhd.wms.interfaces.assember.taskReceiptMaterialDetail.TaskReceiptMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.taskReceiptMaterialDetail.TaskReceiptMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 收货作业单物料详情Api + * + * @author gen + * @date 2024-06-19 + */ +@RestController +@RequestMapping("/taskReceiptMaterialDetailApi") +public class TaskReceiptMaterialDetailApi extends BaseController { + @Autowired + private TaskReceiptMaterialDetailApplicationService taskReceiptMaterialDetailApplicationService; + + @Resource + private TaskReceiptMaterialDetailAssembler taskReceiptMaterialDetailAssembler; + + /** + * 分页查询收货作业单物料详情列表 + */ + @ApiOperation("查询收货作业单物料详情列表") + @GetMapping("/list") + public TableDataInfo list(TaskReceiptMaterialDetailDTO taskReceiptMaterialDetailDTO) + { + //转换实体 + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = taskReceiptMaterialDetailAssembler.toDO(taskReceiptMaterialDetailDTO); + startPage(); + List list = taskReceiptMaterialDetailApplicationService.queryList(taskReceiptMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑收货作业单物料详情 + */ + @ApiOperation("编辑收货作业单物料详情") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody TaskReceiptMaterialDetailDTO taskReceiptMaterialDetailDTO) + { + //转换实体 + TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO = taskReceiptMaterialDetailAssembler.toDO(taskReceiptMaterialDetailDTO); + if(taskReceiptMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(taskReceiptMaterialDetailApplicationService.update(taskReceiptMaterialDetailDO)); + }else { + return toAjax(taskReceiptMaterialDetailApplicationService.insert(taskReceiptMaterialDetailDO)); + } + } + + /** + * 批量删除收货作业单物料详情 + */ + @ApiOperation("批量删除收货作业单物料详情") + @DeleteMapping("/deleteByIds/{materialDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailIds) + { + return toAjax(taskReceiptMaterialDetailApplicationService.delete(materialDetailIds)); + } + + /** + * 获取收货作业单物料详情详细信息 + */ + @ApiOperation("获取收货作业单物料详情") + @GetMapping(value = "/getInfo/{materialDetailId}") + public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId) + { + return AjaxResult.success(taskReceiptMaterialDetailApplicationService.getInfo(materialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskShelfMaterialDetail/TaskShelfMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskShelfMaterialDetail/TaskShelfMaterialDetailApi.java new file mode 100644 index 000000000..4cc85f7ad --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/taskShelfMaterialDetail/TaskShelfMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.taskShelfMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.taskShelfMaterialDetail.TaskShelfMaterialDetailApplicationService; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO; +import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO; +import com.mhd.wms.interfaces.assember.taskShelfMaterialDetail.TaskShelfMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.taskShelfMaterialDetail.TaskShelfMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 上架作业物料详情Api + * + * @author gen + * @date 2024-06-19 + */ +@RestController +@RequestMapping("/taskShelfMaterialDetailApi") +public class TaskShelfMaterialDetailApi extends BaseController { + @Autowired + private TaskShelfMaterialDetailApplicationService taskShelfMaterialDetailApplicationService; + + @Resource + private TaskShelfMaterialDetailAssembler taskShelfMaterialDetailAssembler; + + /** + * 分页查询上架作业物料详情列表 + */ + @ApiOperation("查询上架作业物料详情列表") + @GetMapping("/list") + public TableDataInfo list(TaskShelfMaterialDetailDTO taskShelfMaterialDetailDTO) + { + //转换实体 + TaskShelfMaterialDetailDO taskShelfMaterialDetailDO = taskShelfMaterialDetailAssembler.toDO(taskShelfMaterialDetailDTO); + startPage(); + List list = taskShelfMaterialDetailApplicationService.queryList(taskShelfMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑上架作业物料详情 + */ + @ApiOperation("编辑上架作业物料详情") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody TaskShelfMaterialDetailDTO taskShelfMaterialDetailDTO) + { + //转换实体 + TaskShelfMaterialDetailDO taskShelfMaterialDetailDO = taskShelfMaterialDetailAssembler.toDO(taskShelfMaterialDetailDTO); + if(taskShelfMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(taskShelfMaterialDetailApplicationService.update(taskShelfMaterialDetailDO)); + }else { + return toAjax(taskShelfMaterialDetailApplicationService.insert(taskShelfMaterialDetailDO)); + } + } + + /** + * 批量删除上架作业物料详情 + */ + @ApiOperation("批量删除上架作业物料详情") + @DeleteMapping("/deleteByIds/{materialDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailIds) + { + return toAjax(taskShelfMaterialDetailApplicationService.delete(materialDetailIds)); + } + + /** + * 获取上架作业物料详情详细信息 + */ + @ApiOperation("获取上架作业物料详情") + @GetMapping(value = "/getInfo/{materialDetailId}") + public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId) + { + return AjaxResult.success(taskShelfMaterialDetailApplicationService.getInfo(materialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveMaterialDetail/WaveMaterialDetailApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveMaterialDetail/WaveMaterialDetailApi.java new file mode 100644 index 000000000..d9e255b08 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveMaterialDetail/WaveMaterialDetailApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.waveMaterialDetail; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.waveMaterialDetail.WaveMaterialDetailApplicationService; +import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO; +import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO; +import com.mhd.wms.interfaces.assember.waveMaterialDetail.WaveMaterialDetailAssembler; +import com.mhd.wms.interfaces.dto.waveMaterialDetail.WaveMaterialDetailDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 出库单物料明细Api + * + * @author gen + * @date 2024-06-27 + */ +@RestController +@RequestMapping("/waveMaterialDetailApi") +public class WaveMaterialDetailApi extends BaseController { + @Autowired + private WaveMaterialDetailApplicationService waveMaterialDetailApplicationService; + + @Resource + private WaveMaterialDetailAssembler waveMaterialDetailAssembler; + + /** + * 分页查询出库单物料明细列表 + */ + @ApiOperation("查询出库单物料明细列表") + @GetMapping("/list") + public TableDataInfo list(WaveMaterialDetailDTO waveMaterialDetailDTO) + { + //转换实体 + WaveMaterialDetailDO waveMaterialDetailDO = waveMaterialDetailAssembler.toDO(waveMaterialDetailDTO); + startPage(); + List list = waveMaterialDetailApplicationService.queryList(waveMaterialDetailDO); + return getDataTable(list); + } + + /** + * 编辑出库单物料明细 + */ + @ApiOperation("编辑出库单物料明细") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody WaveMaterialDetailDTO waveMaterialDetailDTO) + { + //转换实体 + WaveMaterialDetailDO waveMaterialDetailDO = waveMaterialDetailAssembler.toDO(waveMaterialDetailDTO); + if(waveMaterialDetailDTO.getMaterialDetailId() != null){ + return toAjax(waveMaterialDetailApplicationService.update(waveMaterialDetailDO)); + }else { + return toAjax(waveMaterialDetailApplicationService.insert(waveMaterialDetailDO)); + } + } + + /** + * 批量删除出库单物料明细 + */ + @ApiOperation("批量删除出库单物料明细") + @DeleteMapping("/deleteByIds/{materialDetailIds}") + public AjaxResult delete(@PathVariable Long[] materialDetailIds) + { + return toAjax(waveMaterialDetailApplicationService.delete(materialDetailIds)); + } + + /** + * 获取出库单物料明细详细信息 + */ + @ApiOperation("获取出库单物料明细") + @GetMapping(value = "/getInfo/{materialDetailId}") + public AjaxResult getInfo(@PathVariable("materialDetailId") Long materialDetailId) + { + return AjaxResult.success(waveMaterialDetailApplicationService.getInfo(materialDetailId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveOrder/WaveOrderApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveOrder/WaveOrderApi.java new file mode 100644 index 000000000..0d8b12a64 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveOrder/WaveOrderApi.java @@ -0,0 +1,130 @@ +package com.mhd.wms.interfaces.facadeApi.waveOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.waveOrder.WaveOrderApplicationService; +import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO; +import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO; +import com.mhd.wms.interfaces.assember.waveOrder.WaveOrderAssembler; +import com.mhd.wms.interfaces.dto.waveOrder.WaveOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 波次单Api + * + * @author gen + * @date 2024-06-04 + */ +@RestController +@RequestMapping("/waveOrderApi") +public class WaveOrderApi extends BaseController { + @Autowired + private WaveOrderApplicationService waveOrderApplicationService; + + @Resource + private WaveOrderAssembler waveOrderAssembler; + + /** + * 分页查询波次单列表 + */ + @ApiOperation("查询波次单列表") + @GetMapping("/list") + public TableDataInfo list(WaveOrderDTO waveOrderDTO) + { + //转换实体 + WaveOrderDO waveOrderDO = waveOrderAssembler.toDO(waveOrderDTO); + startPage(); + List list = waveOrderApplicationService.queryList(waveOrderDO); + return getDataTable(list); + } + + /** + * 编辑波次单 + */ + @ApiOperation("编辑波次单") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody WaveOrderDTO waveOrderDTO) + { + //转换实体 + WaveOrderDO waveOrderDO = waveOrderAssembler.toDOByEdit(waveOrderDTO); + if(waveOrderDTO.getWaveOrderId() != null){ + return toAjax(waveOrderApplicationService.update(waveOrderDO)); + }else { + return toAjax(waveOrderApplicationService.insert(waveOrderDO)); + } + } + + /** + * 批量删除波次单 + */ + @ApiOperation("批量删除波次单") + @DeleteMapping("/deleteByIds/{waveOrderIds}") + public AjaxResult delete(@PathVariable Long[] waveOrderIds) + { + return toAjax(waveOrderApplicationService.delete(waveOrderIds)); + } + + /** + * 获取波次单详细信息 + */ + @ApiOperation("获取波次单") + @GetMapping(value = "/getInfo/{waveOrderId}") + public AjaxResult getInfo(@PathVariable("waveOrderId") Long waveOrderId) + { + return AjaxResult.success(waveOrderApplicationService.getInfo(waveOrderId)); + } + + + + /** + * 手动分配 + */ + @ApiOperation("手动分配") + @PostMapping("/manualAssign") + public AjaxResult manualAssign(@RequestBody WaveOrderDTO waveOrderDTO) { + WaveOrderDO waveOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(waveOrderDTO), WaveOrderDO.class); + return toAjax(waveOrderApplicationService.manualAssign(waveOrderDO)); + } + + + /** + * 取消分配 + */ + @ApiOperation("取消分配") + @PostMapping("/cancelAssign") + public AjaxResult cancelAssign(@RequestBody WaveOrderDTO waveOrderDTO) { + WaveOrderDO waveOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(waveOrderDTO), WaveOrderDO.class); + return toAjax(waveOrderApplicationService.cancelAssign(waveOrderDO)); + } + + + + /** + * 生成拣货单 + */ + @ApiOperation("生成拣货单") + @PostMapping("/genPickingOrder") + public AjaxResult genPickingOrder(@RequestBody WaveOrderDTO waveOrderDTO){ + //转换实体 + WaveOrderDO waveOrderDO = waveOrderAssembler.toDO(waveOrderDTO); + return toAjax(waveOrderApplicationService.genPickingOrder(waveOrderDO)); + } + + /** + * 取消波次 + */ + @ApiOperation("取消波次") + @PostMapping("/cancelWave") + public AjaxResult cancelWave(@RequestBody WaveOrderDTO waveOrderDTO) { + WaveOrderDO waveOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(waveOrderDTO), WaveOrderDO.class); + return toAjax(waveOrderApplicationService.cancelWave(waveOrderDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveRule/WaveRuleApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveRule/WaveRuleApi.java new file mode 100644 index 000000000..38bbf1ccb --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/waveRule/WaveRuleApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApi.waveRule; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfo; +import com.mhd.wms.application.service.waveRule.WaveRuleApplicationService; +import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO; +import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO; +import com.mhd.wms.interfaces.assember.waveRule.WaveRuleAssembler; +import com.mhd.wms.interfaces.dto.waveRule.WaveRuleDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 波次规则Api + * + * @author gen + * @date 2024-07-23 + */ +@RestController +@RequestMapping("/waveRuleApi") +public class WaveRuleApi extends BaseController { + @Autowired + private WaveRuleApplicationService waveRuleApplicationService; + + @Resource + private WaveRuleAssembler waveRuleAssembler; + + /** + * 分页查询波次规则列表 + */ + @ApiOperation("查询波次规则列表") + @GetMapping("/list") + public TableDataInfo list(WaveRuleDTO waveRuleDTO) + { + //转换实体 + WaveRuleDO waveRuleDO = waveRuleAssembler.toDO(waveRuleDTO); + startPage(); + List list = waveRuleApplicationService.queryList(waveRuleDO); + return getDataTable(list); + } + + /** + * 编辑波次规则 + */ + @ApiOperation("编辑波次规则") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody WaveRuleDTO waveRuleDTO) + { + //转换实体 + WaveRuleDO waveRuleDO = waveRuleAssembler.toDO(waveRuleDTO); + if(waveRuleDTO.getId() != null){ + return toAjax(waveRuleApplicationService.update(waveRuleDO)); + }else { + return toAjax(waveRuleApplicationService.insert(waveRuleDO)); + } + } + + /** + * 批量删除波次规则 + */ + @ApiOperation("批量删除波次规则") + @DeleteMapping("/deleteByIds/{ids}") + public AjaxResult delete(@PathVariable Long[] ids) + { + return toAjax(waveRuleApplicationService.delete(ids)); + } + + /** + * 获取波次规则详细信息 + */ + @ApiOperation("获取波次规则") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(@RequestParam("id") Long id) + { + return AjaxResult.success(waveRuleApplicationService.getInfo(id)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/commonSettings/CommonSettingsApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/commonSettings/CommonSettingsApi.java new file mode 100644 index 000000000..fec5e960a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/commonSettings/CommonSettingsApi.java @@ -0,0 +1,108 @@ +package com.mhd.wms.interfaces.facadeApp.commonSettings; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.wms.application.service.commonSettings.CommonSettingsApplicationService; +import com.mhd.wms.application.service.userCommonSettings.UserCommonSettingsApplicationService; +import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO; +import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import com.mhd.wms.interfaces.assember.commonSettings.CommonSettingsAssembler; +import com.mhd.wms.interfaces.dto.commonSettings.CommonSettingsDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + +/** + * 常用设置Api + * + * @author gen + * @date 2024-07-29 + */ +@RestController +@RequestMapping("/commonSettingsApi") +public class CommonSettingsApi extends BaseController { + @Autowired + private CommonSettingsApplicationService commonSettingsApplicationService; + + @Resource + private CommonSettingsAssembler commonSettingsAssembler; + + @Autowired + private UserCommonSettingsApplicationService userCommonSettingsApplicationService; + + /** + * 分页查询常用设置列表 + */ + @ApiOperation("查询常用设置列表") + @GetMapping("/list") + public AjaxResult list(CommonSettingsDTO commonSettingsDTO) + { + //转换实体 + CommonSettingsDO commonSettingsDO = commonSettingsAssembler.toDO(commonSettingsDTO); + List list = commonSettingsApplicationService.queryList(commonSettingsDO); + UserCommonSettingsDO userCommonSettingsDO = new UserCommonSettingsDO(); + List userCommonSettingsPOList=userCommonSettingsApplicationService.queryList(userCommonSettingsDO); + for(CommonSettingsPO commonSettingsPO:list){ + commonSettingsPO.setIsSettings(0); + for (UserCommonSettingsPO userCommonSettingsPO:userCommonSettingsPOList){ + if(Objects.equals(commonSettingsPO.getCommonSettingsId(), userCommonSettingsPO.getCommonSettingsId())){ + commonSettingsPO.setIsSettings(userCommonSettingsPO.getIsSettings()); + } + } + } + return AjaxResult.success(list); + } + + /** + * 编辑常用设置 + */ + @ApiOperation("编辑常用设置") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody CommonSettingsDTO commonSettingsDTO) + { + //转换实体 + CommonSettingsDO commonSettingsDO = commonSettingsAssembler.toDO(commonSettingsDTO); + if(commonSettingsDTO.getCommonSettingsId() != null){ + return toAjax(commonSettingsApplicationService.update(commonSettingsDO)); + }else { + return toAjax(commonSettingsApplicationService.insert(commonSettingsDO)); + } + } + + /** + * 批量删除常用设置 + */ + @ApiOperation("批量删除常用设置") + @DeleteMapping("/deleteByIds/{commonSettingsIds}") + public AjaxResult delete(@PathVariable Long[] commonSettingsIds) + { + return toAjax(commonSettingsApplicationService.delete(commonSettingsIds)); + } + + /** + * 获取常用设置详细信息 + */ + @ApiOperation("获取常用设置") + @GetMapping(value = "/getInfo/{commonSettingsId}") + public AjaxResult getInfo(@PathVariable("commonSettingsId") Long commonSettingsId) + { + return AjaxResult.success(commonSettingsApplicationService.getInfo(commonSettingsId)); + } + + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/deliveTask/DeliveTaskAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/deliveTask/DeliveTaskAppApi.java new file mode 100644 index 000000000..bf778a6cf --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/deliveTask/DeliveTaskAppApi.java @@ -0,0 +1,102 @@ +package com.mhd.wms.interfaces.facadeApp.deliveTask; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.wms.application.service.deliveTask.DeliveTaskApplicationService; +import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO; +import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO; +import com.mhd.wms.interfaces.assember.deliveTask.DeliveTaskAssembler; +import com.mhd.wms.interfaces.dto.deliveTask.DeliveTaskDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 下发任务Api + * + * @author gen + * @date 2024-07-26 + */ +@RestController +@RequestMapping("/deliveryTaskAppApi") +public class DeliveTaskAppApi extends BaseController { + @Autowired + private DeliveTaskApplicationService deliveTaskApplicationService; + + @Resource + private DeliveTaskAssembler deliveTaskAssembler; + + /** + * 分页查询下发任务列表 + * @return + */ + @ApiOperation("查询下发任务列表") + @GetMapping("/list") + public TableDataInfoApi list(DeliveTaskDTO deliveTaskDTO) + { + //转换实体 + DeliveTaskDO deliveTaskDO = deliveTaskAssembler.toDO(deliveTaskDTO); + startPage(); + List list = deliveTaskApplicationService.queryListApp(deliveTaskDO); + return getDataTableApi(list); + } + + /** + * 获取下发任务详细信息 + */ + @ApiOperation("获取下发任务") + @GetMapping(value = "/getInfo/{deliverTaskId}") + public AjaxResult getInfo(@PathVariable("deliverTaskId") Long deliverTaskId) + { + return AjaxResult.success(deliveTaskApplicationService.getInfo(deliverTaskId)); + } + + + /** + * 工作台查询 + */ + @ApiOperation("工作台查询") + @GetMapping(value = "/workbenchQuery") + public AjaxResult workbenchQuery() + { + return AjaxResult.success(deliveTaskApplicationService.workbenchQuery()); + } + + + + /** + * 任务下发接收操作 + */ + @ApiOperation("任务下发接收操作") + @GetMapping(value = "/receive") + public AjaxResult receive(@RequestParam("deliverTaskId") Long deliverTaskId) + { + return AjaxResult.success(deliveTaskApplicationService.receive(deliverTaskId)); + } + /** + * 任务下发拒绝操作 + */ + @ApiOperation("任务下发拒绝操作") + @GetMapping(value = "/refuse") + public AjaxResult refuse(@RequestParam("deliverTaskId") Long deliverTaskId) + { + return AjaxResult.success(deliveTaskApplicationService.refuse(deliverTaskId)); + } + + /** + * 查询列表表头数量 + */ + @ApiOperation("查询列表表头数量") + @GetMapping("/querySum") + public AjaxResult querySum(DeliveTaskDTO deliveTaskDTO) + { + //转换实体 + DeliveTaskDO deliveTaskDO = deliveTaskAssembler.toDO(deliveTaskDTO); + return AjaxResult.success(deliveTaskApplicationService.querySum(deliveTaskDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/investigationManage/InvestigationManageAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/investigationManage/InvestigationManageAppApi.java new file mode 100644 index 000000000..f9fba2ca3 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/investigationManage/InvestigationManageAppApi.java @@ -0,0 +1,103 @@ +package com.mhd.wms.interfaces.facadeApp.investigationManage; + +import com.mhd.common.core.utils.bean.BeanUtils; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.investigationManage.InvestigationManageApplicationService; +import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO; +import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO; +import com.mhd.wms.interfaces.assember.investigationManage.InvestigationManageAssembler; +import com.mhd.wms.interfaces.dto.investigationManage.InvestigationManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 盘点管理Api + * + * @author gen + * @date 2024-07-10 + */ +@RestController +@RequestMapping("/investigationManageAppApi") +public class InvestigationManageAppApi extends BaseController { + @Autowired + private InvestigationManageApplicationService investigationManageApplicationService; + + @Resource + private InvestigationManageAssembler investigationManageAssembler; + + /** + * 分页查询盘点管理列表 + */ + @ApiOperation("查询盘点管理列表") + @GetMapping("/list") + public TableDataInfoApi list(InvestigationManageDTO investigationManageDTO) { + //转换实体 + InvestigationManageDO investigationManageDO = new InvestigationManageDO(); + BeanUtils.copyProperties(investigationManageDTO, investigationManageDO); + startPage(); + investigationManageDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = investigationManageApplicationService.queryList(investigationManageDO); + return getDataTableApi(list); + } + + /** + * 按库位盘点 获取盘点单详细信息 + */ + @ApiOperation("按库位盘点 获取盘点单详细信息") + @GetMapping(value = "/getInfoByStorageLocation") + public AjaxResult getInfoByStorageLocation(Long investigationManageId) + { + return AjaxResult.success(investigationManageApplicationService.getInfoByStorageLocation(investigationManageId)); + } + + /** + * 按库位盘点 + */ + @ApiOperation("按库位盘点") + @PostMapping("/investigationByStorageLocation") + public AjaxResult investigationByStorageLocation(@RequestBody InvestigationManageDTO investigationManageDTO) + { + //转换实体 + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDOInvestigationByStorageLocation(investigationManageDTO); + //拆成最小颗粒 + return AjaxResult.success(investigationManageApplicationService.investigationPickingByMaterial(investigationManageDO)); + } + + /** + * 按物料盘点 获取盘点单详细信息 + */ + @ApiOperation("按物料盘点 获取盘点单详细信息") + @GetMapping(value = "/getInfoByMaterial") + public AjaxResult getInfoByMaterial(Long investigationManageId) + { + return AjaxResult.success(investigationManageApplicationService.getInfoByMaterial(investigationManageId)); + } + + /** + * 按物料盘点 + */ + @ApiOperation("按物料盘点") + @PostMapping("/investigationPickingByMaterial") + public AjaxResult investigationPickingByMaterial(@RequestBody InvestigationManageDTO investigationManageDTO) + { + //转换实体 + InvestigationManageDO investigationManageDO = investigationManageAssembler.toDOInvestigationPickingByMaterial(investigationManageDTO); + //拆成最小颗粒 + return AjaxResult.success(investigationManageApplicationService.investigationPickingByMaterial(investigationManageDO)); + } + + @ApiOperation("完成盘点") + @PostMapping(value = "/finishInvestigation") + public AjaxResult finishInvestigation(@RequestBody InvestigationManageDTO investigationManageDTO){ + return AjaxResult.success(investigationManageApplicationService.finishInvestigation(investigationManageDTO.getInvestigationManageId())); + } + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/materialInventory/MaterialInventoryAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/materialInventory/MaterialInventoryAppApi.java new file mode 100644 index 000000000..3956047c6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/materialInventory/MaterialInventoryAppApi.java @@ -0,0 +1,49 @@ +package com.mhd.wms.interfaces.facadeApp.materialInventory; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.wms.application.service.materialInventory.MaterialInventoryApplicationService; +import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO; +import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO; +import com.mhd.wms.interfaces.assember.materialInventory.MaterialInventoryAssembler; +import com.mhd.wms.interfaces.dto.materialInventory.MaterialInventoryQueryListDTO; +import io.swagger.annotations.ApiOperation; +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.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 库存查询 + * + * @author gen + * @date 2024-07-10 + */ +@RestController +@RequestMapping("/materialInventoryAppApi") +public class MaterialInventoryAppApi extends BaseController { + @Autowired + private MaterialInventoryApplicationService materialInventoryApplicationService; + + @Resource + private MaterialInventoryAssembler materialInventoryAssembler; + + /** + * 分页库存查询列表 + */ + @ApiOperation("库存查询列表") + @GetMapping("/appList") + public TableDataInfoApi appList(MaterialInventoryQueryListDTO materialInventoryQueryListDTO) { + //转换实体 + MaterialInventoryQueryListDO materialInventoryQueryListDO = materialInventoryAssembler.toDOByQueryList(materialInventoryQueryListDTO); + startPage(); + List list = materialInventoryApplicationService.materialQueryList(materialInventoryQueryListDO); + return getDataTableApi(list); + } + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/shiftManage/ShiftManageAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/shiftManage/ShiftManageAppApi.java new file mode 100644 index 000000000..2ef3031c5 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/shiftManage/ShiftManageAppApi.java @@ -0,0 +1,89 @@ +package com.mhd.wms.interfaces.facadeApp.shiftManage; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.shiftManage.ShiftManageApplicationService; +import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO; +import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO; +import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO; +import com.mhd.wms.interfaces.assember.shiftManage.ShiftManageAssembler; +import com.mhd.wms.interfaces.dto.shiftManage.ShiftManageDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 移位管理Api + * + * @author gen + * @date 2024-07-02 + */ +@RestController +@RequestMapping("/shiftManageAppApi") +public class ShiftManageAppApi extends BaseController { + @Autowired + private ShiftManageApplicationService shiftManageApplicationService; + + @Resource + private ShiftManageAssembler shiftManageAssembler; + + /** + * 按单移位列表 + */ + @ApiOperation("下拉分页查询移位管理列表") + @GetMapping("/appList") + public TableDataInfoApi appList(ShiftManageDTO shiftManageDTO) { + //转换实体 + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + startPage(); + shiftManageDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = shiftManageApplicationService.queryList(shiftManageDO); + return getDataTableApi(list); + } + + + /** + * 下拉分页查询移位管理列表 + */ + @ApiOperation("移位详情") + @GetMapping("/getInfoByApp") + public AjaxResult getInfoByApp(Long shiftManageId) { + ShiftManagePO shiftManagePO = shiftManageApplicationService.getInfoByApp(shiftManageId); + return AjaxResult.success(shiftManagePO); + } + + /** + * 物料移位 + */ + @ApiOperation("物料移位") + @PostMapping("/appMoveFromShiftmanage") + public AjaxResult appMoveFromShiftManage(@RequestBody ShiftManageDTO shiftManageDTO){ + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + return AjaxResult.success(shiftManageApplicationService.appMoveFromShiftManage(shiftManageDO)); + } + + + @ApiOperation("完成移位") + @PostMapping("/finishShift") + public AjaxResult finishShift(@RequestBody ShiftManageDTO shiftManageDTO){ + ShiftManageDO shiftManageDO = shiftManageAssembler.toDO(shiftManageDTO); + return AjaxResult.success(shiftManageApplicationService.finishShift(shiftManageDO)); + } + + /** + * 容器移位 + */ + @ApiOperation("容器移位") + @PostMapping("/appMoveContainShift") + public AjaxResult appMoveContainShift(@RequestBody List containerShiftDOList){ + return AjaxResult.success(shiftManageApplicationService.appMoveContainShift(containerShiftDOList)); + } + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java new file mode 100644 index 000000000..64beb5a22 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutOrder/StockOutOrderAppApi.java @@ -0,0 +1,80 @@ +package com.mhd.wms.interfaces.facadeApp.stockOutOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService; +import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO; +import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO; +import com.mhd.wms.interfaces.assember.stockOutOrder.StockOutOrderAssembler; +import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 出库单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/stockOutOrderAppApi") +public class StockOutOrderAppApi extends BaseController { + @Autowired + private StockOutOrderApplicationService stockOutOrderApplicationService; + + @Resource + private StockOutOrderAssembler stockOutOrderAssembler; + + /** + * 分页查询出库单列表 + */ + @ApiOperation("查询出库单列表") + @GetMapping("/list") + public TableDataInfoApi list(StockOutOrderDTO stockOutOrderDTO) { + //转换实体 + StockOutOrderDO stockOutOrderDO = stockOutOrderAssembler.toDO(stockOutOrderDTO); + startPage(); + stockOutOrderDO.setCheckOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = stockOutOrderApplicationService.queryList(stockOutOrderDO); + return getDataTableApi(list); + } + + /** + * 获取出库单复核详细信息 + */ + @ApiOperation("获取出库单复核详细信息") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(Long outOrderId) { + return AjaxResult.success(stockOutOrderApplicationService.getInfoByApp(outOrderId)); + } + + + /** + * PDA复核 + */ + @ApiOperation("PDA复核") + @PostMapping("/check") + public AjaxResult check(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.checkByApp(stockOutOrderDO)); + } + + + /** + * 完成复核 + */ + @ApiOperation("完成复核") + @PostMapping("/completeCheck") + public AjaxResult checkConfirm(@RequestBody StockOutOrderDTO stockOutOrderDTO) { + StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class); + return toAjax(stockOutOrderApplicationService.checkConfirm(stockOutOrderDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java new file mode 100644 index 000000000..9e9eb0985 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockOutTaskOrder/stockOutTaskOrderAppApi.java @@ -0,0 +1,113 @@ +package com.mhd.wms.interfaces.facadeApp.stockOutTaskOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.stockOutTaskOrder.StockOutTaskOrderApplicationService; +import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO; +import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO; +import com.mhd.wms.interfaces.assember.stockOutTaskOrder.StockOutTaskOrderAssembler; +import com.mhd.wms.interfaces.dto.stockOutTaskOrder.StockOutTaskOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 拣货作业单Api + * + * @author gen + * @date 2024-05-28 + */ +@RestController +@RequestMapping("/stockOutTaskOrderAppApi") +public class stockOutTaskOrderAppApi extends BaseController { + @Autowired + private StockOutTaskOrderApplicationService stockOutTaskOrderApplicationService; + + @Resource + private StockOutTaskOrderAssembler stockOutTaskOrderAssembler; + + /** + * 分页查询拣货作业单列表 + */ + @ApiOperation("查询拣货作业单列表") + @GetMapping("/list") + public TableDataInfoApi list(StockOutTaskOrderDTO stockOutTaskOrderDTO) + { + //转换实体 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDO(stockOutTaskOrderDTO); + startPage(); + stockOutTaskOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = stockOutTaskOrderApplicationService.queryList(stockOutTaskOrderDO); + return getDataTableApi(list); + } + + /** + * 按库位拣货 获取拣货作业单详细信息 + */ + @ApiOperation("按库位拣货 获取拣货作业单详细信息") + @GetMapping(value = "/getInfoByStorageLocation") + public AjaxResult getInfoByStorageLocation(Long outTaskOrderId) + { + return AjaxResult.success(stockOutTaskOrderApplicationService.getInfoByStorageLocation(outTaskOrderId)); + } + + /** + * 按库位拣货 + */ + @ApiOperation("按库位拣货") + @PostMapping("/pickingByStorageLocation") + public AjaxResult pickingByStorageLocation(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) + { + //转换实体 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByStorageLocation(stockOutTaskOrderDTO); + //拆成最小颗粒 + return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO)); + } + + /** + * 按物料拣货 获取拣货作业单详细信息 + */ + @ApiOperation("按物料拣货 获取拣货作业单详细信息") + @GetMapping(value = "/getInfoByMaterial") + public AjaxResult getInfoByMaterial(Long outTaskOrderId) + { + return AjaxResult.success(stockOutTaskOrderApplicationService.getInfoByMaterial(outTaskOrderId)); + } + + /** + * 按物料拣货 + */ + @ApiOperation("按物料拣货") + @PostMapping("/pickingByMaterial") + public AjaxResult pickingByMaterial(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) + { + //转换实体 + StockOutTaskOrderDO stockOutTaskOrderDO = stockOutTaskOrderAssembler.toDOPickingByMaterial(stockOutTaskOrderDTO); + //拆成最小颗粒 + return AjaxResult.success(stockOutTaskOrderApplicationService.pickingByMaterial(stockOutTaskOrderDO)); + } + + /** + * 完成拣货 + */ + @ApiOperation("完成拣货") + @PostMapping("/completePicking") + public AjaxResult completePicking(@RequestBody StockOutTaskOrderDTO stockOutTaskOrderDTO) { + return toAjax(stockOutTaskOrderApplicationService.completePicking(stockOutTaskOrderDTO.getOutTaskOrderId())); + } + + + + + + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java new file mode 100644 index 000000000..de3cbc38b --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockReceiptOrder/StockReceiptOrderAppApi.java @@ -0,0 +1,93 @@ +package com.mhd.wms.interfaces.facadeApp.stockReceiptOrder; + +import cn.hutool.json.JSONUtil; +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService; +import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO; +import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO; +import com.mhd.wms.interfaces.assember.stockReceiptOrder.StockReceiptOrderAssembler; +import com.mhd.wms.interfaces.dto.stockReceiptOrder.StockReceiptOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 收货单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockReceiptOrderAppApi") +public class StockReceiptOrderAppApi extends BaseController { + @Autowired + private StockReceiptOrderApplicationService stockReceiptOrderApplicationService; + + @Resource + private StockReceiptOrderAssembler stockReceiptOrderAssembler; + + /** + * 分页查询收货单列表 + */ + @ApiOperation("查询收货单列表") + @GetMapping("/list") + public TableDataInfoApi list(StockReceiptOrderDTO stockReceiptOrderDTO) { + //转换实体 + StockReceiptOrderDO stockReceiptOrderDO = stockReceiptOrderAssembler.toDO(stockReceiptOrderDTO); + startPage(); + stockReceiptOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = stockReceiptOrderApplicationService.queryList(stockReceiptOrderDO); + return getDataTableApi(list); + } + + /** + * 获取收货单详细信息 + */ + @ApiOperation("获取收货单") + @GetMapping(value = "/getInfoByApp") + public AjaxResult getInfoByApp(Long receiptOrderId) { + return AjaxResult.success(stockReceiptOrderApplicationService.getInfoByApp(receiptOrderId)); + } + + /** + * 收货 + */ + @ApiOperation("收货") + @PostMapping("/receivingGoods") + public AjaxResult receivingGoods(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDTO), StockReceiptOrderDO.class); + return toAjax(stockReceiptOrderApplicationService.receivingGoodsByApp(stockReceiptOrderDO)); + } + + /** + * 完成收货 + */ + @ApiOperation("完成收货") + @PostMapping("/completeReceipt") + public AjaxResult completeReceipt(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + return toAjax(stockReceiptOrderApplicationService.completeReceipt(stockReceiptOrderDTO.getReceiptOrderId())); + } + + @ApiOperation("生成上架单") + @PostMapping("/genStockShelfOrder") + public AjaxResult genStockShelfOrder(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + return toAjax(stockReceiptOrderApplicationService.genStockShelfOrder(stockReceiptOrderDTO.getReceiptOrderId())); + } + + /** + * 无单收货 + */ + @ApiOperation("无单收货") + @PostMapping("/noOrderReceipt") + public AjaxResult noOrderReceipt(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) { + StockReceiptOrderDO stockReceiptOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockReceiptOrderDTO), StockReceiptOrderDO.class); + return toAjax(stockReceiptOrderApplicationService.noOrderReceipt(stockReceiptOrderDO)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockShelfOrder/StockShelfOrderAppApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockShelfOrder/StockShelfOrderAppApi.java new file mode 100644 index 000000000..00773c1e1 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/stockShelfOrder/StockShelfOrderAppApi.java @@ -0,0 +1,79 @@ +package com.mhd.wms.interfaces.facadeApp.stockShelfOrder; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.common.core.web.page.TableDataInfoApi; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService; +import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; +import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; +import com.mhd.wms.interfaces.assember.stockShelfOrder.StockShelfOrderAssembler; +import com.mhd.wms.interfaces.dto.stockShelfOrder.StockShelfOrderDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 上架单Api + * + * @author gen + * @date 2024-05-21 + */ +@RestController +@RequestMapping("/stockShelfOrderAppApi") +public class StockShelfOrderAppApi extends BaseController { + @Autowired + private StockShelfOrderApplicationService stockShelfOrderApplicationService; + + @Resource + private StockShelfOrderAssembler stockShelfOrderAssembler; + + /** + * 分页查询上架单列表 + */ + @ApiOperation("查询上架单列表") + @GetMapping("/list") + public TableDataInfoApi list(StockShelfOrderDTO stockShelfOrderDTO) + { + //转换实体 + StockShelfOrderDO stockShelfOrderDO = stockShelfOrderAssembler.toDO(stockShelfOrderDTO); + startPage(); + stockShelfOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserPo().getUserId()); + List list = stockShelfOrderApplicationService.queryList(stockShelfOrderDO); + return getDataTableApi(list); + } + + /** + * 获取上架单详细信息 + */ + @ApiOperation("获取上架单") + @GetMapping(value = "/getInfo") + public AjaxResult getInfo(Long shelfOrderId) + { + return AjaxResult.success(stockShelfOrderApplicationService.getInfoByApp(shelfOrderId)); + } + + + @ApiOperation("上架") + @PostMapping("/upShelf") + public AjaxResult upShelf(@RequestBody StockShelfOrderDTO stockShelfOrderDTO) { + StockShelfOrderDO stockReceiptOrderDO = stockShelfOrderAssembler.toDOByEdit(stockShelfOrderDTO); + return toAjax(stockShelfOrderApplicationService.upShelfByApp(stockReceiptOrderDO)); + } + + + + @ApiOperation("完成上架") + @PostMapping("/completeUpShelf") + public AjaxResult completeUpShelf(@RequestBody StockShelfOrderDTO stockShelfOrderDTO) { + return toAjax(stockShelfOrderApplicationService.completeUpShelf(stockShelfOrderDTO.getShelfOrderId())); + } + + + + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/userCommonSettings/UserCommonSettingsApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/userCommonSettings/UserCommonSettingsApi.java new file mode 100644 index 000000000..2d9714c0f --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApp/userCommonSettings/UserCommonSettingsApi.java @@ -0,0 +1,84 @@ +package com.mhd.wms.interfaces.facadeApp.userCommonSettings; + +import com.mhd.common.core.web.controller.BaseController; +import com.mhd.common.core.web.domain.AjaxResult; +import com.mhd.wms.application.service.userCommonSettings.UserCommonSettingsApplicationService; +import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO; +import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO; +import com.mhd.wms.interfaces.assember.userCommonSettings.UserCommonSettingsAssembler; +import com.mhd.wms.interfaces.dto.userCommonSettings.UserCommonSettingsDTO; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户常用设置关联Api + * + * @author gen + * @date 2024-07-29 + */ +@RestController +@RequestMapping("/userCommonSettingsApi") +public class UserCommonSettingsApi extends BaseController { + @Autowired + private UserCommonSettingsApplicationService userCommonSettingsApplicationService; + + @Resource + private UserCommonSettingsAssembler userCommonSettingsAssembler; + + + + /** + * 分页查询用户常用设置关联列表 + */ + @ApiOperation("查询用户常用设置关联列表") + @GetMapping("/list") + public AjaxResult list(UserCommonSettingsDTO userCommonSettingsDTO) + { + //转换实体 + UserCommonSettingsDO userCommonSettingsDO = userCommonSettingsAssembler.toDOByQuery(userCommonSettingsDTO); + userCommonSettingsDO.setIsSettings(1); + List list = userCommonSettingsApplicationService.queryList(userCommonSettingsDO); + return AjaxResult.success(list); + } + + /** + * 编辑用户常用设置关联 + */ + @ApiOperation("编辑用户常用设置关联") + @PostMapping("/edit") + public AjaxResult edit(@RequestBody UserCommonSettingsDTO userCommonSettingsDTO) + { + //转换实体 + UserCommonSettingsDO userCommonSettingsDO = userCommonSettingsAssembler.toDO(userCommonSettingsDTO); + if(userCommonSettingsDTO.getUserCommonSettingsId() != null){ + return toAjax(userCommonSettingsApplicationService.update(userCommonSettingsDO)); + }else { + return toAjax(userCommonSettingsApplicationService.insert(userCommonSettingsDO)); + } + } + + /** + * 批量删除用户常用设置关联 + */ + @ApiOperation("批量删除用户常用设置关联") + @DeleteMapping("/deleteByIds/{userCommonSettingsIds}") + public AjaxResult delete(@PathVariable Long[] userCommonSettingsIds) + { + return toAjax(userCommonSettingsApplicationService.delete(userCommonSettingsIds)); + } + + /** + * 获取用户常用设置关联详细信息 + */ + @ApiOperation("获取用户常用设置关联") + @GetMapping(value = "/getInfo/{userCommonSettingsId}") + public AjaxResult getInfo(@PathVariable("userCommonSettingsId") Long userCommonSettingsId) + { + return AjaxResult.success(userCommonSettingsApplicationService.getInfo(userCommonSettingsId)); + } + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/util/FillableEntity.java b/mhd_wms/src/main/java/com/mhd/wms/util/FillableEntity.java new file mode 100644 index 000000000..13f977478 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/util/FillableEntity.java @@ -0,0 +1,16 @@ +package com.mhd.wms.util; + +import java.util.Date; + +public interface FillableEntity { + void setOrganizationId(Long organizationId); + void setTopOrganizationId(Long topOrganizationId); + void setOrganizationName(String organizationName); + void setCreateBy(Long createBy); + void setCreateByName(String createByName); + void setCreateTime(Date createTime); + void setUpdateBy(Long updateBy); + void setUpdateByName(String updateByName); + void setUpdateTime(Date updateTime); +} + diff --git a/mhd_wms/src/main/java/com/mhd/wms/util/UtilloginUserAssemble.java b/mhd_wms/src/main/java/com/mhd/wms/util/UtilloginUserAssemble.java new file mode 100644 index 000000000..06e494d5a --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/util/UtilloginUserAssemble.java @@ -0,0 +1,30 @@ +package com.mhd.wms.util; +import com.mhd.common.core.domain.po.UserPo; +import com.mhd.system.api.model.LoginUser; + +import java.util.Date; + + +/** + * @Description: 封装通用对象赋值当前登陆信息 + * @Version: 1.0 + * @Date: 2023/8/1 16:01 + * @Author: liyc + */ +public class UtilloginUserAssemble { + + // 假设SecurityUtils类已正确实现且无安全漏洞 + public void fillCommonProperties(T entity, LoginUser loginUser) { + UserPo userPo = loginUser.getUserPo(); + entity.setOrganizationId(userPo.getOrganizationId()); + entity.setTopOrganizationId(userPo.getTopOrganizationId()); + entity.setOrganizationName(userPo.getOrganizationName()); + entity.setCreateBy(loginUser.getUserid()); + entity.setCreateByName(loginUser.getUsername()); + entity.setCreateTime(new Date()); + entity.setUpdateBy(loginUser.getUserid()); + entity.setUpdateByName(loginUser.getUsername()); + entity.setUpdateTime(new Date()); + } + +} diff --git a/mhd_wms/src/main/resources/banner.txt b/mhd_wms/src/main/resources/banner.txt new file mode 100644 index 000000000..e17db019d --- /dev/null +++ b/mhd_wms/src/main/resources/banner.txt @@ -0,0 +1,8 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} + _ _ + | | | | + _ __ ___ | |__ __| |________ ___ __ ___ ___ + | '_ ` _ \| '_ \ / _` |______\ \ /\ / / '_ ` _ \/ __| + | | | | | | | | | (_| | \ V V /| | | | | \__ \ + |_| |_| |_|_| |_|\__,_| \_/\_/ |_| |_| |_|___/ diff --git a/mhd_wms/src/main/resources/bootstrap.yml b/mhd_wms/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..9a099ecf8 --- /dev/null +++ b/mhd_wms/src/main/resources/bootstrap.yml @@ -0,0 +1,45 @@ +# Tomcat +server: + port: 8016 + +# Spring +spring: + application: + # 应用名称 + name: mhd-wms-service + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + #server-addr: 127.0.0.1:8848 + # 演示环境 +# server-addr: 47.92.229.169:8848 + # 测试开发环境 +# server-addr: 192.168.10.18:8848 + # Saas环境 +# server-addr: 8.130.64.92:8848 + # 大运通泰生产环境 +# server-addr: 39.107.137.158:8848 + # 线上测试环境 + server-addr: 116.204.23.92:8848 + config: + # 配置中心地址 + #server-addr: 127.0.0.1:8848 + # 演示环境 +# server-addr: 47.92.229.169:8848 + # 测试开发环境 +# server-addr: 192.168.10.18:8848 + # Saas环境 +# server-addr: 8.130.64.92:8848 + # 大运通泰生产环境 +# server-addr: 39.107.137.158:8848 + # 线上测试环境 + server-addr: 116.204.23.92:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/mhd_wms/src/main/resources/logback.xml b/mhd_wms/src/main/resources/logback.xml new file mode 100644 index 000000000..449e77292 --- /dev/null +++ b/mhd_wms/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml new file mode 100644 index 000000000..ab40e2b22 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/OutMaterialDetail/OutMaterialDetailMapper.xml @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit, + a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND((a.quantity - a.check_quantity), 2) AS wait_check_quantity, + a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage, + a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.level, a.parent_unique_id, a.allow_modify, + a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name, + a.remark, a.create_time, a.create_by,gen_picking_order, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.out_order_number = #{outOrderNumber} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.quantity = #{quantity} + + + and a.allocation_quantity = #{allocationQuantity} + + + and a.picking_quantity = #{pickingQuantity} + + + and a.check_quantity = #{checkQuantity} + + + and a.pack_id = #{packId} + + + and a.pack_code = #{packCode} + + + and a.pack_name like concat('%', #{packName}, '%') + + + and a.pack_detail_id = #{packDetailId} + + + and a.unit_code = #{unitCode} + + + and a.unit_name like concat('%', #{unitName}, '%') + + + and a.material_warehouse_control_id = #{materialWarehouseControlId} + + + and a.serial_number_manage = #{serialNumberManage} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.storage_section_id = #{storageSectionId} + + + and a.storage_code = #{storageCode} + + + and a.storage_name like concat('%', #{storageName}, '%') + + + and a.storage_location_id = #{storageLocationId} + + + and a.storage_location_code = #{storageLocationCode} + + + and a.storage_location_name like concat('%', #{storageLocationName}, '%') + + + and a.level = #{level} + + + and a.gen_picking_order = #{genPickingOrder} + + + and a.parent_unique_id = #{parentUniqueId} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.out_order_number in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.over_stock_status = #{overStockStatus} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_base_info_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and b.out_order_number = #{outOrderNumber} + + + and b.warehouse_id = #{warehouseId} + + + and b.shipper_id = #{shipperId} + + + and b.shipper_id in + + #{item} + + + + and date_format(b.expect_time,'%y%m%d') >= date_format(#{outOrderExpectStartTime},'%y%m%d') + + + and date_format(b.expect_time,'%y%m%d') <= date_format(#{outOrderExpectEndTime},'%y%m%d') + + + and b.order_type_code = #{outOrderTypeCode} + + + + and b.status = #{outStatus} + + + and b.del_flag = #{delFlag} + and b.del_flag = 1 + + + + + + + + + UPDATE out_material_detail + + allocation_quantity = CASE material_detail_id + + WHEN #{item.materialDetailId} THEN allocation_quantity + #{item.allocationQuantity} + + END, + update_by = #{item.updateBy}, + update_by_name = #{item.updateByName}, + update_time = now() + + WHERE material_detail_id IN + + #{item.materialDetailId} + + + + + UPDATE out_material_detail + + picking_quantity = CASE material_detail_id + + WHEN #{item.materialDetailId} THEN picking_quantity + #{item.pickingQuantity} + + END, + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = now() + + WHERE material_detail_id IN + + #{item.materialDetailId} + + + + + UPDATE out_material_detail + + picking_quantity = CASE unique_id + + WHEN #{item.uniqueId} THEN picking_quantity + #{item.pickingQuantity} + + END, + + + WHEN #{item.uniqueId} THEN picking_quantity + #{item.pickingQuantity} + + + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = now() + + WHERE unique_id IN + + #{item.uniqueId} + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/commonSettings/CommonSettingsMapper.xml b/mhd_wms/src/main/resources/mapper/commonSettings/CommonSettingsMapper.xml new file mode 100644 index 000000000..f83ec3653 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/commonSettings/CommonSettingsMapper.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select common_settings_id, parent_id, name, route, level, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, organization_id, organization_name, top_organization_id from common_settings + + + + + + and parent_id = #{parentId} + + + and name like concat('%', #{name}, '%') + + + and route = #{route} + + + and level = #{level} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/containerUsageRecord/ContainerUsageRecordMapper.xml b/mhd_wms/src/main/resources/mapper/containerUsageRecord/ContainerUsageRecordMapper.xml new file mode 100644 index 000000000..3c370a2e4 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/containerUsageRecord/ContainerUsageRecordMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, container_id, organization_id, organization_name, top_organization_id, container_code, container_type, container_type_name, container_volume, use_type, node, material_base_info_id, material_code, material_name, bar_code, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from container_usage_record + + + + + + and container_id = #{containerId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and container_volume = #{containerVolume} + + + and use_type = #{useType} + + + and node = #{node} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/deliveTask/DeliveTaskMapper.xml b/mhd_wms/src/main/resources/mapper/deliveTask/DeliveTaskMapper.xml new file mode 100644 index 000000000..263f35a5e --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/deliveTask/DeliveTaskMapper.xml @@ -0,0 +1,276 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select deliver_task_id, task_number, tracking_number, organization_id, organization_name, top_organization_id, warehouse_id, warehouse_code, warehouse_name, task_type, task_status, task_distribution, task_distribution_time, task_distribution_id, task_distribution_name, operators_by, operators_name, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag, reassign_time, reassign_by_id, reassign_by_name from delive_task + + + + + del_flag = 1 + + + and task_number = #{taskNumber} + + + and tracking_number = #{trackingNumber} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and task_type = #{taskType} + + + and task_status = #{taskStatus} + + + and task_distribution = #{taskDistribution} + + + and task_distribution_time = #{taskDistributionTime} + + + and task_distribution_id = #{taskDistributionId} + + + and task_distribution_name like concat('%', #{taskDistributionName}, '%') + + + and operators_by = #{operatorsBy} + + + and (operators_by = '' + OR operators_by IS NULL) + + + + and operators_name like concat('%', #{operatorsName}, '%') + + + and reassign_time = #{reassignTime} + + + and reassign_by_id = #{reassignById} + + + and reassign_by_name like concat('%', #{reassignByName}, '%') + + + + + + + + and task_number = #{taskNumber} + + + and tracking_number = #{trackingNumber} + + + and top_organization_id = #{topOrganizationId} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and task_type = #{taskType} + + + and task_status = #{taskStatus} + + + and task_distribution = #{taskDistribution} + + + and task_distribution_time = #{taskDistributionTime} + + + and task_distribution_id = #{taskDistributionId} + + + and task_distribution_name like concat('%', #{taskDistributionName}, '%') + + + and reassign_time = #{reassignTime} + + + and reassign_by_id = #{reassignById} + + + and reassign_by_name like concat('%', #{reassignByName}, '%') + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml b/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml new file mode 100644 index 000000000..72d36e5de --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/differentManage/DifferentManageMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select different_manage_id, organization_id, organization_name, top_organization_id, different_number, investigation_number, investigation_status, investigation_range, investigation_type, investigation_method, investigation_frequency, investigation_man_by, investigation_man_name, operators_by, operators_name, warehouse_id, warehouse_code, warehouse_name, nullify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name,posted_flag,re_counted_flag, del_flag from different_manage + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and different_number = #{differentNumber} + + + and investigation_number = #{investigationNumber} + + + and investigation_status = #{investigationStatus} + + + and investigation_range = #{investigationRange} + + + and investigation_type = #{investigationType} + + + and investigation_method = #{investigationMethod} + + + and investigation_frequency = #{investigationFrequency} + + + and investigation_man_by = #{investigationManBy} + + + and investigation_man_name like concat('%', #{investigationManName}, '%') + + + and operators_by = #{operatorsBy} + + + and operators_name like concat('%', #{operatorsName}, '%') + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and nullify = #{nullify} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and posted_flag = #{postedFlag} + + + and re_counted_flag = #{reCountedFlag} + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml new file mode 100644 index 000000000..fb1141cb0 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/handoverTaskOrder/HandoverTaskOrderMapper.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.handover_task_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.serial_number, a.task_number, a.status, a.platform_id, + a.platform_code, a.platform_name, a.platform_use_time_id, a.platform_use_start_time, a.platform_use_end_time, a.platform_use_status, + a.order_type_code, a.order_type_name, a.expect_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, + a.shipper_name, a.order_number, a.picking_order_number, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, + a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.handover_task_order_id = #{handoverTaskOrderId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.serial_number = #{serialNumber} + + + and a.task_number = #{taskNumber} + + + and a.status = #{status} + + + and a.platform_id = #{platformId} + + + and a.platform_code = #{platformCode} + + + and a.platform_name like concat('%', #{platformName}, '%') + + + and a.platform_use_time_id = #{platformUseTimeId} + + + and a.platform_use_start_time = #{platformUseStartTime} + + + and a.platform_use_end_time = #{platformUseEndTime} + + + and a.platform_use_status = #{platformUseStatus} + + + and a.order_type_code = #{orderTypeCode} + + + and a.order_type_name like concat('%', #{orderTypeName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_number = #{orderNumber} + + + and a.picking_order_number = #{pickingOrderNumber} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml new file mode 100644 index 000000000..07553eb42 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetail/InMaterialDetailMapper.xml @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.in_order_number, a.material_base_info_id, + a.material_code, a.material_name, a.bar_code, a.quantity, a.receipt_quantity, a.shelves_quantity, + a.receipt_status, a.shelves_status, a.pack_id, a.pack_code, a.pack_name, + a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage, a.quality_inspection_manage, + a.quality_inspection_stage, a.quality_inspection_rule, a.quality_inspection_ratio, a.quality_inspection_term, a.quality_inspection_results, a.allow_overcharge, + a.overcharge_ratio, a.batch_number, a.material_status_code, a.material_status_name, a.distribute_rule_id, a.distribute_rule_code, + a.distribute_rule_name, a.container_id, a.container_code, a.container_type, a.container_type_name, + a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, + a.level, a.parent_unique_id, a.remark, a.create_time, a.create_by,a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, a.over_stock_id, a.over_stock_status, a.over_stock_type + ,CASE + WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0 + ELSE (a.quantity - a.receipt_quantity) + END AS wait_receipt_quantity, + CASE + WHEN (a.receipt_quantity - a.shelves_quantity) < 0 THEN 0 + ELSE (a.receipt_quantity - a.shelves_quantity) + END AS wait_shelves_quantity + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.in_order_number = #{inOrderNumber} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.quantity = #{quantity} + + + and a.receipt_quantity = #{receiptQuantity} + + + and a.shelves_quantity = #{shelvesQuantity} + + + and a.pack_id = #{packId} + + + and a.pack_code = #{packCode} + + + and a.pack_name like concat('%', #{packName}, '%') + + + and a.pack_detail_id = #{packDetailId} + + + and a.unit_code = #{unitCode} + + + and a.unit_name like concat('%', #{unitName}, '%') + + + and a.material_warehouse_control_id = #{materialWarehouseControlId} + + + and a.serial_number_manage = #{serialNumberManage} + + + and a.quality_inspection_manage = #{qualityInspectionManage} + + + and a.quality_inspection_stage = #{qualityInspectionStage} + + + and a.quality_inspection_rule = #{qualityInspectionRule} + + + and a.quality_inspection_term = #{qualityInspectionTerm} + + + and a.quality_inspection_results = #{qualityInspectionResults} + + + and a.allow_overcharge = #{allowOvercharge} + + + and a.overcharge_ratio = #{overchargeRatio} + + + and a.batch_number = #{batchNumber} + + + and a.material_status_code = #{materialStatusCode} + + + and a.material_status_name like concat('%', #{materialStatusName}, '%') + + + and a.distribute_rule_id = #{distributeRuleId} + + + and a.distribute_rule_code = #{distributeRuleCode} + + + and a.distribute_rule_name like concat('%', #{distributeRuleName}, '%') + + + and a.container_id = #{containerId} + + + and a.container_code = #{containerCode} + + + and a.container_type = #{containerType} + + + and a.container_type_name like concat('%', #{containerTypeName}, '%') + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.in_order_number in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.over_stock_status = #{overStockStatus} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_base_info_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and b.out_order_number = #{outOrderNumber} + + + and b.warehouse_id = #{warehouseId} + + + and b.shipper_id = #{shipperId} + + + and b.shipper_id in + + #{item} + + + + and date_format(b.expect_time,'%y%m%d') >= date_format(#{inOrderExpectStartTime},'%y%m%d') + + + and date_format(b.expect_time,'%y%m%d') <= date_format(#{inOrderExpectEndTime},'%y%m%d') + + + and b.order_type_code = #{outOrderTypeCode} + + + + and b.status = #{inStatus} + + + and b.del_flag = #{delFlag} + and b.del_flag = 1 + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberMapper.xml b/mhd_wms/src/main/resources/mapper/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberMapper.xml new file mode 100644 index 000000000..8484e78c0 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + a.material_detail_serial_number_id, a.organization_id, a.organization_name, a.top_organization_id, a.order_number,a.material_detail_unique_id, + a.serial_number, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.material_detail_unique_id = #{materialDetailUniqueId} + + + and a.order_number = #{orderNumber} + + + and a.serial_number = #{serialNumber} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.order_number in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml b/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml new file mode 100644 index 000000000..2bcd253e1 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inOrderAbnormal/InOrderAbnormalMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.in_order_abnormal_id, a.organization_id, a.organization_name, a.top_organization_id, a.abnormal_number, a.in_order_number, + a.receipt_order_number,a.shelf_order_number, a.type, a.quantity, a.actual_quantity, a.allow_actual_quantity, a.abnormal_actual_quantity, a.abnormal_type, a.abnormal_reason, + a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.in_order_abnormal_id = #{inOrderAbnormalId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.abnormal_number = #{abnormalNumber} + + + and a.in_order_number = #{inOrderNumber} + + + and a.receipt_order_number = #{receiptOrderNumber} + + + and a.shelf_order_number = #{shelfOrderNumber} + + + and a.quantity = #{quantity} + + + and a.actual_quantity = #{actualQuantity} + + + and a.abnormal_type = #{abnormalType} + + + and a.abnormal_reason = #{abnormalReason} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryAdjustmentRecord/InventoryAdjustmentRecordMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryAdjustmentRecord/InventoryAdjustmentRecordMapper.xml new file mode 100644 index 000000000..1f1a1ee7f --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryAdjustmentRecord/InventoryAdjustmentRecordMapper.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select inventory_adjustment_id, organization_id, organization_name, top_organization_id, material_inventory_id, material_base_info_id, material_code, material_name, bar_code, shipper_id, shipper_name, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, adjust_type, adjust_direction, adjust_before_status_code, adjust_before_status_name, adjust_after_status_code, adjust_after_status_name, inventory_before_quantity, allocation_before_quantity, freeze_before_quantity, inventory_after_quantity, allocation_after_quantity, freeze_after_quantity, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from inventory_adjustment_record + where del_flag = 1 + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_inventory_id = #{materialInventoryId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and shipper_id = #{shipperId} + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and adjust_type = #{adjustType} + + + and adjust_direction = #{adjustDirection} + + + and adjust_before_status_code = #{adjustBeforeStatusCode} + + + and adjust_before_status_name = #{adjustBeforeStatusName} + + + and adjust_after_status_code = #{adjustAfterStatusCode} + + + and adjust_after_status_name = #{adjustAfterStatusName} + + + and inventory_before_quantity = #{inventoryBeforeQuantity} + + + and allocation_before_quantity = #{allocationBeforeQuantity} + + + and freeze_before_quantity = #{freezeBeforeQuantity} + + + and inventory_after_quantity = #{inventoryAfterQuantity} + + + and allocation_after_quantity = #{allocationAfterQuantity} + + + and freeze_after_quantity = #{freezeAfterQuantity} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryAllocationRule/InventoryAllocationRuleMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryAllocationRule/InventoryAllocationRuleMapper.xml new file mode 100644 index 000000000..dc831231c --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryAllocationRule/InventoryAllocationRuleMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, rule_num, rule_name, enabled, remark from inventory_allocation_rule + where del_flag = 1 + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and rule_num = #{ruleNum} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and enabled = #{enabled} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailMapper.xml new file mode 100644 index 000000000..285247349 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, inventory_allocation_rule_id, location_kind_id, location_kind, location_type_id, location_type, mixing_slg_id, mixing_slg, material_status_id, material_status, seq_num from inventory_allocation_rule_detail + where del_flag = 1 + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and inventory_allocation_rule_id = #{inventoryAllocationRuleId} + + + and location_kind_id = #{locationKindId} + + + and location_kind = #{locationKind} + + + and location_type_id = #{locationTypeId} + + + and location_type = #{locationType} + + + and mixing_slg_id = #{mixingSlgId} + + + and mixing_slg = #{mixingSlg} + + + and material_status_id = #{materialStatusId} + + + and material_status = #{materialStatus} + + + and seq_num = #{seqNum} + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryStandingDetail/InventoryStandingDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryStandingDetail/InventoryStandingDetailMapper.xml new file mode 100644 index 000000000..d2633a5b4 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryStandingDetail/InventoryStandingDetailMapper.xml @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select inventory_standing_detail_id, material_name, material_code, material_bar_code, tracking_number, warehouse_id, warehouse_code, warehouse_name, node_status, material_quantity, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from inventory_standing_detail + where del_flag = 1 + + + + + and material_name like concat('%', #{materialName}, '%') + + + and material_code = #{materialCode} + + + and material_bar_code = #{materialBarCode} + + + and tracking_number = #{trackingNumber} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and node_status = #{nodeStatus} + + + and material_quantity = #{materialQuantity} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml new file mode 100644 index 000000000..a8445e41c --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryStandingReport/InventoryStandingReportMapper.xml @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select inventory_standing_id, material_name, material_code, bar_code, shipper_id, shipper_name, warehouse_id, warehouse_code, warehouse_name, node_status, material_quantity, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from inventory_standing_report + where del_flag = 1 + + + + SELECT + material_base_info_id, + bar_code, + material_code, + material_name, + shipper_id, + shipper_name, + warehouse_id, + warehouse_code, + warehouse_name, + organization_id, + top_organization_id, + node_status, + node_name, + material_quantity + FROM + ( + ( + SELECT + rmd.material_base_info_id, + rmd.bar_code, + rmd.material_code, + rmd.material_name, + sio1.shipper_id, + sio1.shipper_name, + sio1.warehouse_id, + sio1.warehouse_code, + sio1.warehouse_name, + sio1.organization_id, + sio1.top_organization_id, + 1 AS node_status, + "收货" AS node_name, + SUM( rmd.quantity ) AS material_quantity + FROM + receipt_material_detail rmd + LEFT JOIN stock_receipt_order sro1 ON sro1.receipt_order_number = rmd.receipt_order_number + LEFT JOIN stock_in_order sio1 ON sro1.in_order_number = sio1.in_order_number + WHERE + rmd.receipt_status IN ( 1, 2 ) + GROUP BY + rmd.material_base_info_id, + sio1.shipper_id, + sio1.warehouse_id + ) UNION ALL + ( + SELECT + smd.material_base_info_id, + smd.bar_code, + smd.material_code, + smd.material_name, + sio2.shipper_id, + sio2.shipper_name, + sio2.warehouse_id, + sio2.warehouse_code, + sio2.warehouse_name, + sio2.organization_id, + sio2.top_organization_id, + 2 AS node_status, + "上架" AS node_name, + SUM( smd.quantity ) AS material_quantity + FROM + shelf_material_detail smd + LEFT JOIN stock_shelf_order sso ON sso.shelf_order_number = smd.shelf_order_number + LEFT JOIN stock_in_order sio2 ON sso.in_order_number = sio2.in_order_number + WHERE + smd.shelves_status IN ( 1, 2 ) + GROUP BY + smd.material_base_info_id, + sio2.shipper_id, + sio2.warehouse_id + ) UNION ALL + ( + SELECT + pmd.material_base_info_id, + pmd.bar_code, + pmd.material_code, + pmd.material_name, + po.shipper_id, + po.shipper_name, + po.warehouse_id, + po.warehouse_code, + po.warehouse_name, + po.organization_id, + po.top_organization_id, + 3 AS node_status, + "拣货" AS node_name, + SUM( pmd.quantity ) AS material_quantity + FROM + picking_material_detail pmd + LEFT JOIN picking_order po ON po.picking_order_number = pmd.picking_order_number + WHERE + po.STATUS IN ( 1, 2 ) + GROUP BY + pmd.material_base_info_id, + po.shipper_id, + po.warehouse_id + ) UNION ALL + ( + SELECT + omd.material_base_info_id, + omd.bar_code, + omd.material_code, + omd.material_name, + soo.shipper_id, + soo.shipper_name, + soo.warehouse_id, + soo.warehouse_code, + soo.warehouse_name, + soo.organization_id, + soo.top_organization_id, + 4 AS node_status, + "复核" AS node_name, + SUM( omd.quantity ) AS material_quantity + FROM + out_material_detail omd + LEFT JOIN stock_out_order soo ON soo.out_order_number = omd.out_order_number + WHERE + soo.STATUS IN ( 7, 8 ) + GROUP BY + omd.material_base_info_id, + soo.shipper_id, + soo.warehouse_id + ) + ) AS a + where 1 = 1 + + + + + and a.organization_id = #{organizationId} + + + and a.top_organization_id = #{topOrganizationId} + + + and material_name like concat('%', #{materialName}, '%') + + + and material_code = #{materialCode} + + + and bar_code = #{barCode} + + + and shipper_id = #{shipperId} + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and node_status = #{nodeStatus} + + + and material_quantity = #{materialQuantity} + + + + + + + + + + + + and rmd.material_code = #{materialCode} + + + and sio.shipper_id = #{shipperId} + + + and sio.warehouse_code = #{warehouseCode} + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryTurnoverRule/InventoryTurnoverRuleMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryTurnoverRule/InventoryTurnoverRuleMapper.xml new file mode 100644 index 000000000..4b7fe9b8a --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryTurnoverRule/InventoryTurnoverRuleMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, rule_num, rule_name, enabled, remark from inventory_turnover_rule + where del_flag = 1 + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and rule_num = #{ruleNum} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and enabled = #{enabled} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailMapper.xml new file mode 100644 index 000000000..f025fec34 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, inventory_turnover_rule_id, batch_attribute_id, batch_attribute, sortord, seq_num from inventory_turnover_rule_detail + where del_flag = 1 + + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and inventory_turnover_rule_id = #{inventoryTurnoverRuleId} + + + and batch_attribute_id = #{batchAttributeId} + + + and batch_attribute = #{batchAttribute} + + + and sortord = #{sortord} + + + and seq_num = #{seqNum} + + + + + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/inventoryWarningAnalyze/InventoryWarningAnalyzeMapper.xml b/mhd_wms/src/main/resources/mapper/inventoryWarningAnalyze/InventoryWarningAnalyzeMapper.xml new file mode 100644 index 000000000..7743c075f --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/inventoryWarningAnalyze/InventoryWarningAnalyzeMapper.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select inventory_warning_analyze_id, organization_id, organization_name, top_organization_id, + material_base_info_id, material_name, material_code, warehouse_id, warehouse_code, warehouse_name, + storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, + storage_location_name, shipper_id, shipper_name, shipper_code, pack_id, pack_code, pack_name, + pack_detail_id, unit_code, unit_name, unit_quantity, inventory_quantity, warning_analyze_number, + warning_analyze_type, warning_standard_quantity, warning_time, remark, create_time, create_by, + create_by_name, update_time, update_by, update_by_name, del_flag, bar_code from inventory_warning_analyze + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_name like concat('%', #{materialName}, '%') + + + and material_code = #{materialCode} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and shipper_id = #{shipperId} + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and shipper_code = #{shipperCode} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_quantity = #{unitQuantity} + + + and inventory_quantity = #{inventoryQuantity} + + + and warning_analyze_number = #{warningAnalyzeNumber} + + + and warning_analyze_type = #{warningAnalyzeType} + + + and warning_standard_quantity = #{warningStandardQuantity} + + + and warning_time = #{warningTime} + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/investigationManage/InvestigationManageMapper.xml b/mhd_wms/src/main/resources/mapper/investigationManage/InvestigationManageMapper.xml new file mode 100644 index 000000000..8e28f8b76 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/investigationManage/InvestigationManageMapper.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select investigation_manage_id, organization_id, organization_name, top_organization_id, investigation_number, old_investigation_number,investigation_status, investigation_range, investigation_type, investigation_method, investigation_frequency, different_number, warehouse_id, warehouse_code, warehouse_name, audit_status, audit_remark, audit_by, audit_by_name, audit_time, task_distribution, task_distribution_time, operators_by, operators_name, nullify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from investigation_manage + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and investigation_number like concat('%',#{investigationNumber},'%') + + and old_investigation_number = concat('%',#{oldInvestigationNumber},'%') + + + and investigation_status = #{investigationStatus} + + + and investigation_range = #{investigationRange} + + + and investigation_type = #{investigationType} + + + and investigation_method = #{investigationMethod} + + + and investigation_frequency = #{investigationFrequency} + + + and different_number = #{differentNumber} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and audit_status = #{auditStatus} + + + and audit_remark = #{auditRemark} + + + and audit_by = #{auditBy} + + + and audit_by_name like concat('%', #{auditByName}, '%') + + + and audit_time = #{auditTime} + + + and task_distribution = #{taskDistribution} + + + and task_distribution_time = #{taskDistributionTime} + + + and operators_by = #{operatorsBy} + + + and operators_name like concat('%', #{operatorsName}, '%') + + + and nullify = #{nullify} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and date_format(create_time,'%Y-%m-%d %H:%i:%s') =]]> #{createStartTime} + + + and date_format(create_time,'%Y-%m-%d %H:%i:%s') #{createEndTime} + + + and remark like concat('%',#{remark},'%') + + + and investigation_manage_id in + + #{item} + + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/investigetionManageDetail/InvestigetionManageDetailMapper.xml b/mhd_wms/src/main/resources/mapper/investigetionManageDetail/InvestigetionManageDetailMapper.xml new file mode 100644 index 000000000..c850a2f8c --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/investigetionManageDetail/InvestigetionManageDetailMapper.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select investigation_manage_detail_id, organization_id, organization_name, top_organization_id, investigation_number, investigation_status, investigation_range, investigation_type, investigation_method, investigation_frequency, different_number, investigation_quantity, different_quantity, material_inventory_id,investigation_result, material_base_info_id, material_code, material_name, bar_code, inventory_quantity, quantity, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, container_id, container_code, container_type, container_type_name, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag, + material_status_code , material_status_name from investigetion_manage_detail + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and investigation_number = #{investigationNumber} + + + and investigation_status = #{investigationStatus} + + + and investigation_range = #{investigationRange} + + + and investigation_type = #{investigationType} + + + and investigation_method = #{investigationMethod} + + + and investigation_frequency = #{investigationFrequency} + + + and different_number = #{differentNumber} + + + and investigation_quantity = #{investigationQuantity} + + + and different_quantity = #{differentQuantity} + + + and investigation_result = #{investigationResult} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and inventory_quantity = #{inventoryQuantity} + + + and quantity = #{quantity} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and remark like concat('%',#{remark},'%') + + + and material_status_code = #{materialStatusCode} + + + and material_status_name like concat('%', #{materialStatusName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + update investigation_manage set investigation_status = 2,audit_status = #{auditStatus} + where investigation_number = #{investigationNumber} + + + update investigetion_manage_detail set investigation_status = 2 + where investigation_number = #{investigationNumber} + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialBarCode/MaterialBarCodeMapper.xml b/mhd_wms/src/main/resources/mapper/materialBarCode/MaterialBarCodeMapper.xml new file mode 100644 index 000000000..cabf81380 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialBarCode/MaterialBarCodeMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_bar_code_id, organization_id, organization_name, top_organization_id, material_base_info_id, bar_code, pack_id, pack_code, pack_name, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_bar_code + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and bar_code = #{barCode} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml new file mode 100644 index 000000000..18c9ba30e --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialBaseInfo/MaterialBaseInfoMapper.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_base_info_id, organization_id, organization_name, top_organization_id, shipper_id, shipper_code, shipper_name, material_code, material_name, bar_code, material_classify_code, material_classify_name, material_type, material_type_name, pack_id, pack_code, pack_name, unit_code, unit_name, brand_id, brand_code, brand_name, shelf_life, weight_limit, volume_limit, material_shape, material_shape_name, material_size, material_length, material_width, material_height, remark, nullify, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag,common from material_base_info + + + + ,b.shipper_id, b.shipper_code, b.shipper_name, b.material_code, b.material_name, b.bar_code, b.material_classify_code, b.material_classify_name, + b.material_type, b.material_type_name, b.common + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and shipper_id = #{shipperId} + + + and shipper_code like concat('%', #{shipperCode}, '%') + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and material_classify_code = #{materialClassifyCode} + + + and material_classify_name like concat('%', #{materialClassifyName}, '%') + + + and material_type = #{materialType} + + + and material_type_name like concat('%', #{materialTypeName}, '%') + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and brand_id = #{brandId} + + + and brand_code = #{brandCode} + + + and brand_name like concat('%', #{brandName}, '%') + + + and shelf_life = #{shelfLife} + + + and weight_limit = #{weightLimit} + + + and volume_limit = #{volumeLimit} + + + and material_shape = #{materialShape} + + + and material_shape_name like concat('%', #{materialShapeName}, '%') + + + and material_size = #{materialSize} + + + and material_length = #{materialLength} + + + and material_width = #{materialWidth} + + + and material_height = #{materialHeight} + + + and nullify = #{nullify} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and ( instr(material_name, #{compoundOrQuery}) > 0 + or + instr(material_code, #{compoundOrQuery}) > 0 + or + instr(bar_code, #{compoundOrQuery}) > 0 + ) + + + + and common = #{common} + and ( + 1 = 1 + or common = 1 ) + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + + and shipper_id = #{shipperId} + + + and shipper_code like concat('%', #{shipperCode}, '%') + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and material_classify_code = #{materialClassifyCode} + + + and material_classify_name like concat('%', #{materialClassifyName}, '%') + + + and material_type = #{materialType} + + + and material_type_name like concat('%', #{materialTypeName}, '%') + + + and (shipper_code like concat('%', #{shipperInfo}, '%') or shipper_name like concat('%', #{shipperInfo}, '%')) + + + and (material_code = #{materialInfo} or material_name like concat('%', #{materialInfo}, '%') or bar_code = #{materialInfo}) + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialCommon/MaterialCommonMapper.xml b/mhd_wms/src/main/resources/mapper/materialCommon/MaterialCommonMapper.xml new file mode 100644 index 000000000..680002fde --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialCommon/MaterialCommonMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_common_id, organization_id, organization_name, top_organization_id, material_base_info_id, temperature_control, min_temperature, max_temperature, warm_layer, warm_layer_name, flash_point, ignition_point, danger_goods, danger_level, danger_level_name, production_time, expiration_time, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_common + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and temperature_control = #{temperatureControl} + + + and min_temperature = #{minTemperature} + + + and max_temperature = #{maxTemperature} + + + and warm_layer = #{warmLayer} + + + and warm_layer_name like concat('%', #{warmLayerName}, '%') + + + and flash_point = #{flashPoint} + + + and ignition_point = #{ignitionPoint} + + + and danger_goods = #{dangerGoods} + + + and danger_level = #{dangerLevel} + + + and danger_level_name like concat('%', #{dangerLevelName}, '%') + + + and production_time = #{productionTime} + + + and expiration_time = #{expirationTime} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialGoodsRule/MaterialGoodsRuleMapper.xml b/mhd_wms/src/main/resources/mapper/materialGoodsRule/MaterialGoodsRuleMapper.xml new file mode 100644 index 000000000..97f31ae2b --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialGoodsRule/MaterialGoodsRuleMapper.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_goods_rule_id, organization_id, organization_name, top_organization_id, material_base_info_id, brand_id, batch_code, batch_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, rule_id, rule_code, rule_name, specify_rule_id, specify_rule_code, specify_rule_name, turnover_rule_id, turnover_rule_code, turnover_rule_name, distribute_rule_id, distribute_rule_code, distribute_rule_name, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_goods_rule + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and brand_id = #{brandId} + + + and batch_code = #{batchCode} + + + and batch_name like concat('%', #{batchName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and rule_id = #{ruleId} + + + and rule_code = #{ruleCode} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and specify_rule_id = #{specifyRuleId} + + + and specify_rule_code = #{specifyRuleCode} + + + and specify_rule_name like concat('%', #{specifyRuleName}, '%') + + + and turnover_rule_id = #{turnoverRuleId} + + + and turnover_rule_code = #{turnoverRuleCode} + + + and turnover_rule_name like concat('%', #{turnoverRuleName}, '%') + + + and distribute_rule_id = #{distributeRuleId} + + + and distribute_rule_code = #{distributeRuleCode} + + + and distribute_rule_name like concat('%', #{distributeRuleName}, '%') + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml new file mode 100644 index 000000000..4e2178332 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialInventory/MaterialInventoryMapper.xml @@ -0,0 +1,601 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.material_inventory_id, a.organization_id, a.organization_name, a.top_organization_id, a.warehouse_id, a.warehouse_code, a.warehouse_name, + a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.material_base_info_id,a.material_detail_id, + a.batch_number,a.material_status_code,a.material_status_name,a.container_id,a.container_code,a.container_type,a.container_type_name,IFNULL(a.freeze_quantity,0) freeze_quantity,a.is_able, + IFNULL(a.inventory_quantity,0) inventory_quantity, IFNULL(a.allocation_quantity,0) allocation_quantity, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, + a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.storage_section_id = #{storageSectionId} + + + and a.storage_code = #{storageCode} + + + and a.storage_name like concat('%', #{storageName}, '%') + + + and a.storage_location_id = #{storageLocationId} + + + and a.storage_location_code = #{storageLocationCode} + + + and a.storage_location_name like concat('%', #{storageLocationName}, '%') + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_detail_id, = #{materialDetailId} + + + and a.batch_number = #{batchNumber} + + + and a.material_status_code like concat('%', #{materialStatusCode}, '%') + + + and a.material_status_name like concat('%', #{materialStatusName}, '%') + + + and a.container_id = #{containerId} + + + and a.container_code like concat('%', #{containerCode}, '%') + + + and a.container_type like concat('%', #{containerType}, '%') + + + and a.container_type_name like concat('%', #{containerTypeName}, '%') + + + and a.inventory_quantity = #{inventoryQuantity} + and a.inventory_quantity != 0 + + + and a.allocation_quantity = #{allocationQuantity} + + + and a.freeze_quantity = #{freezeQuantity} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + and (a.storage_location_code = #{storageInfo} or material_code = #{storageInfo} or material_name like concat('%', #{storageInfo}, '%') or bar_code = #{storageInfo}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + group by b.shipper_id + order by b.shipper_id + + + group by b.material_base_info_id + order by b.material_base_info_id + + + group by a.batch_number + order by b.material_name,a.batch_number + + + group by a.storage_location_id + order by a.storage_location_id + + + group by b.material_base_info_id,a.storage_location_id + order by b.material_name,a.storage_location_id + + + group by a.container_id + order by a.container_type_name,b.material_name,a.storage_location_name + + + group by a.material_inventory_id + order by b.shipper_name,b.material_name,a.storage_location_name,a.batch_number + + + + + + + + UPDATE material_inventory + + + + WHEN #{item.materialInventoryId} THEN inventory_quantity + #{item.inventoryQuantity} + + + + + WHEN #{item.materialInventoryId} THEN allocation_quantity + #{item.inventoryQuantity} + + + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = #{updateTime} + + WHERE material_inventory_id IN + + #{item.materialInventoryId} + + + + + UPDATE material_inventory + + + + WHEN #{item.materialInventoryId} THEN GREATEST(inventory_quantity - #{item.inventoryQuantity}, 0) + + + + + WHEN #{item.materialInventoryId} THEN GREATEST( allocation_quantity - #{item.inventoryQuantity}, 0) + + + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = #{updateTime} + + WHERE material_inventory_id IN + + #{item.materialInventoryId} + + + + + + + UPDATE material_inventory + + allocation_quantity = CASE material_inventory_id + + WHEN #{item.materialInventoryId} THEN GREATEST(allocation_quantity - #{item.inventoryQuantity}, 0) + + END, + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = #{updateTime} + + WHERE material_inventory_id IN + + #{item.materialInventoryId} + + + + update material_inventory + set inventory_quantity = #{inventoryQuantity},allocation_quantity = #{allocationQuantity} + where material_inventory_id = #{materialInventoryId} + + + update material_inventory + set inventory_quantity = #{inventoryQuantity} + where storage_location_id = #{storageLocationId} + and material_baseInfo_id = #{materialBaseInfoId} + and container_id = #{containerId} + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialInventoryWarning/MaterialInventoryWarningMapper.xml b/mhd_wms/src/main/resources/mapper/materialInventoryWarning/MaterialInventoryWarningMapper.xml new file mode 100644 index 000000000..3c9b27fb1 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialInventoryWarning/MaterialInventoryWarningMapper.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_inventory_warning_id, organization_id, organization_name, top_organization_id, material_base_info_id, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, min_temperature, max_temperature, pack_id, pack_code, pack_name, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_inventory_warning + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and min_temperature = #{minTemperature} + + + and max_temperature = #{maxTemperature} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialMoreDetail/MaterialMoreDetailMapper.xml b/mhd_wms/src/main/resources/mapper/materialMoreDetail/MaterialMoreDetailMapper.xml new file mode 100644 index 000000000..e96dde379 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialMoreDetail/MaterialMoreDetailMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.material_more_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.order_number, a.material_detail_unique_id, a.batch_id, a.batch_detail_id, + a.batch_labels, a.input_control, a.attribute_format, a.attribute_option, a.attribute_value, a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.order_number = #{orderNumber} + + + and a.material_detail_unique_id = #{materialDetailUniqueId} + + + and a.batch_id = #{batchId} + + + and a.batch_detail_id = #{batchDetailId} + + + and a.batch_labels = #{batchLabels} + + + and a.input_control = #{inputControl} + + + and a.attribute_format = #{attributeFormat} + + + and a.attribute_option = #{attributeOption} + + + and a.attribute_value = #{attributeValue} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.order_number in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/materialWarehouseControl/MaterialWarehouseControlMapper.xml b/mhd_wms/src/main/resources/mapper/materialWarehouseControl/MaterialWarehouseControlMapper.xml new file mode 100644 index 000000000..1b638cef2 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/materialWarehouseControl/MaterialWarehouseControlMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_warehouse_control_id, organization_id, organization_name, top_organization_id, material_base_info_id, temperature_control, cycle_type, in_validity_period, out_validity_period, allow_overcharge, overcharge_ratio, classify, serial_number_manage, quality_inspection_manage, quality_inspection_stage, quality_inspection_rule, quality_inspection_term, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from material_warehouse_control + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and temperature_control = #{temperatureControl} + + + and cycle_type = #{cycleType} + + + and in_validity_period = #{inValidityPeriod} + + + and out_validity_period = #{outValidityPeriod} + + + and allow_overcharge = #{allowOvercharge} + + + and overcharge_ratio = #{overchargeRatio} + + + and classify = #{classify} + + + and serial_number_manage = #{serialNumberManage} + + + and quality_inspection_manage = #{qualityInspectionManage} + + + and quality_inspection_stage = #{qualityInspectionStage} + + + and quality_inspection_rule = #{qualityInspectionRule} + + + and quality_inspection_term = #{qualityInspectionTerm} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/mobilizeManage/MobilizeManageMapper.xml b/mhd_wms/src/main/resources/mapper/mobilizeManage/MobilizeManageMapper.xml new file mode 100644 index 000000000..319dd9e19 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/mobilizeManage/MobilizeManageMapper.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select mobilize_manage_id, organization_id, organization_name, top_organization_id, mobilize_number, mobilize_code, mobilize_status, mobilize_material_quantity, material_type_quantity, in_warehouse_id, in_warehouse_code, in_warehouse_name, audit_status, audit_remark, audit_by, audit_by_name, audit_time, task_distribution, task_distribution_time, operators_by, operators_name, nullify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag, out_warehouse_id, out_warehouse_code, out_warehouse_name from mobilize_manage + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and mobilize_code = #{mobilizeCode} + + + and mobilize_status = #{mobilizeStatus} + + + and mobilize_number = #{mobilizeNumber} + + + and material_type_quantity = #{materialTypeQuantity} + + + and mobilize_material_quantity = #{mobilizeMaterialQuantity} + + + and in_warehouse_id = #{inWarehouseId} + + + and in_warehouse_code = #{inWarehouseCode} + + + and in_warehouse_name like concat('%', #{inWarehouseName}, '%') + + + and out_warehouse_id = #{outWarehouseId} + + + and out_warehouse_code = #{outWarehouseCode} + + + and out_warehouse_name like concat('%', #{outWarehouseName}, '%') + + + and audit_status = #{auditStatus} + + + and audit_remark = #{auditRemark} + + + and audit_by = #{auditBy} + + + and audit_by_name like concat('%', #{auditByName}, '%') + + + and audit_time = #{auditTime} + + + and task_distribution = #{taskDistribution} + + + and task_distribution_time = #{taskDistributionTime} + + + and operators_by = #{operatorsBy} + + + and operators_name like concat('%', #{operatorsName}, '%') + + + and nullify = #{nullify} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + update mobilize_manage set material_type_quantity = #{materialTypeQuantity},mobilize_material_quantity = #{mobilizeMaterialQuantity} + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/mobilizeManageDetail/MobilizeManageDetailMapper.xml b/mhd_wms/src/main/resources/mapper/mobilizeManageDetail/MobilizeManageDetailMapper.xml new file mode 100644 index 000000000..cf53de76a --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/mobilizeManageDetail/MobilizeManageDetailMapper.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.mobilize_material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.mobilize_code, a.mobilize_status, + a.mobilize_number, a.material_base_info_id, a.material_code, a.material_name, a.bar_code, a.inventory_quantity, a.quantity, a.warehouse_id, + a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, + a.storage_location_name, a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.unit_number, a.material_warehouse_control_id, + a.serial_number_manage, a.container_id, a.container_code, a.container_type, a.container_type_name, a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + and a.del_flag = 1 + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.mobilize_code = #{mobilizeCode} + + + and a.mobilize_status = #{mobilizeStatus} + + + and a.mobilize_number = #{mobilizeNumber} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.inventory_quantity = #{inventoryQuantity} + + + and a.quantity = #{quantity} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.storage_section_id = #{storageSectionId} + + + and a.storage_code = #{storageCode} + + + and a.storage_name like concat('%', #{storageName}, '%') + + + and a.storage_location_id = #{storageLocationId} + + + and a.storage_location_code = #{storageLocationCode} + + + and a.storage_location_name like concat('%', #{storageLocationName}, '%') + + + and a.pack_id = #{packId} + + + and a.pack_code = #{packCode} + + + and a.pack_name like concat('%', #{packName}, '%') + + + and a.pack_detail_id = #{packDetailId} + + + and a.unit_code = #{unitCode} + + + and a.unit_name like concat('%', #{unitName}, '%') + + + and a.unit_number = #{unitNumber} + + + and a.material_warehouse_control_id = #{materialWarehouseControlId} + + + and a.serial_number_manage = #{serialNumberManage} + + + and a.container_id = #{containerId} + + + and a.container_code = #{containerCode} + + + and a.container_type = #{containerType} + + + and a.container_type_name like concat('%', #{containerTypeName}, '%') + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/noticeMaterialDetail/NoticeMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/noticeMaterialDetail/NoticeMaterialDetailMapper.xml new file mode 100644 index 000000000..a6a43bf1f --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/noticeMaterialDetail/NoticeMaterialDetailMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select notice_material_detail_id, organization_id, organization_name, top_organization_id, unique_id, notice_number, material_base_info_id, material_code, material_name, bar_code, quantity, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, quality_inspection_manage, quality_inspection_stage, quality_inspection_rule, quality_inspection_ratio, quality_inspection_term, quality_inspection_results, allow_overcharge, overcharge_ratio, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from notice_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and notice_number = #{noticeNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and quality_inspection_manage = #{qualityInspectionManage} + + + and quality_inspection_stage = #{qualityInspectionStage} + + + and quality_inspection_rule = #{qualityInspectionRule} + + + and quality_inspection_ratio = #{qualityInspectionRatio} + + + and quality_inspection_term = #{qualityInspectionTerm} + + + and quality_inspection_results = #{qualityInspectionResults} + + + and allow_overcharge = #{allowOvercharge} + + + and overcharge_ratio = #{overchargeRatio} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberMapper.xml b/mhd_wms/src/main/resources/mapper/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberMapper.xml new file mode 100644 index 000000000..58e251862 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberMapper.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + a.out_material_detail_serial_number_id, a.organization_id, a.organization_name, a.top_organization_id, a.material_detail_unique_id, a.type, a.line_number, a.serial_number, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.material_detail_unique_id = #{materialDetailUniqueId} + + + and a.type = #{type} + + + + and a.serial_number = #{serialNumber} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml new file mode 100644 index 000000000..9f200dcc3 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/outOrderAbnormal/OutOrderAbnormalMapper.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.out_order_abnormal_id, a.organization_id, a.organization_name, a.top_organization_id, a.abnormal_number, a.out_order_number, a.picking_order_number, a.out_task_order_number, a.type, a.quantity, a.actual_quantity, a.abnormal_actual_quantity, a.abnormal_type, a.abnormal_reason, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.abnormal_number = #{abnormalNumber} + + + and a.out_order_number = #{outOrderNumber} + + + and a.picking_order_number = #{pickingOrderNumber} + + + and a.out_task_order_number = #{outTaskOrderNumber} + + + and a.type = #{type} + + + and a.quantity = #{quantity} + + + and a.actual_quantity = #{actualQuantity} + + + and a.abnormal_actual_quantity = #{abnormalActualQuantity} + + + and a.abnormal_type = #{abnormalType} + + + and a.abnormal_reason = #{abnormalReason} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and b.warehouse_id = #{warehouseId} + + + and b.shipper_id = #{shipperId} + + + and a.order_type_code = #{orderTypeCode} + + + and b.del_flag = #{delFlag} + and b.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/overStock/OverStockMapper.xml b/mhd_wms/src/main/resources/mapper/overStock/OverStockMapper.xml new file mode 100644 index 000000000..f452ec163 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/overStock/OverStockMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select over_stock_id, organization_id, organization_name, top_organization_id, shipper_id, shipper_code, shipper_name, material_code, material_name, type, status, in_order_number, in_order_line, out_order_number, out_order_line, over_stock_number, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from over_stock + where del_flag = 1 + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and shipper_id = #{shipperId} + + + and shipper_code = #{shipperCode} + + + and shipper_name like concat('%', #{shipperName}, '%') + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and type = #{type} + + + and status = #{status} + + + and in_order_number = #{inOrderNumber} + + + and in_order_line = #{inOrderLine} + + + and out_order_number = #{outOrderNumber} + + + and out_order_line = #{outOrderLine} + + + and over_stock_number = #{overStockNumber} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml new file mode 100644 index 000000000..c1890356b --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/pickingMaterialDetail/PickingMaterialDetailMapper.xml @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, + a.picking_order_number, a.material_base_info_id, a.material_code, a.material_name, a.bar_code, a.weight_limit, + a.volume_limit, a.quantity, a.picking_quantity, a.pack_id, a.pack_code, a.pack_name, + a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage, + a.material_inventory_id, a.batch_number, a.container_id, a.container_code, a.container_type, a.container_type_name, a.material_status_code, a.material_status_name, + a.warehouse_id, a.warehouse_code, a.warehouse_name, a.storage_section_id, a.storage_code, a.storage_name, + a.storage_location_id, a.storage_location_code, a.storage_location_name, a.remark, + a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.unique_id = #{uniqueId} + + + and a.picking_order_number = #{pickingOrderNumber} + + + and a.material_base_info_id = #{materialBaseInfoId} + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.weight_limit = #{weightLimit} + + + and a.volume_limit = #{volumeLimit} + + + and a.quantity = #{quantity} + + + and a.picking_quantity = #{pickingQuantity} + + + and a.pack_id = #{packId} + + + and a.pack_code = #{packCode} + + + and a.pack_name like concat('%', #{packName}, '%') + + + and a.pack_detail_id = #{packDetailId} + + + and a.unit_code = #{unitCode} + + + and a.unit_name like concat('%', #{unitName}, '%') + + + and a.material_warehouse_control_id = #{materialWarehouseControlId} + + + and a.serial_number_manage = #{serialNumberManage} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.storage_section_id = #{storageSectionId} + + + and a.storage_code = #{storageCode} + + + and a.storage_name like concat('%', #{storageName}, '%') + + + and a.storage_location_id = #{storageLocationId} + + + and a.storage_location_code = #{storageLocationCode} + + + and a.storage_location_name like concat('%', #{storageLocationName}, '%') + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + + UPDATE picking_material_detail + + + + WHEN #{item.uniqueId} THEN picking_quantity + #{item.pickingQuantity} + + + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = #{updateTime} + + WHERE + unique_id IN + + #{item.uniqueId} + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml new file mode 100644 index 000000000..215772da7 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/pickingOrder/PickingOrderMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.picking_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.order_number, a.picking_order_number, + a.status, a.type, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_name, a.quantity, a.weight_limit, a.volume_limit, a.material_quantity, + a.picking_quantity, a.picking_material_quantity, a.abnormal, a.task_distribution, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, + a.update_by, a.update_by_name, a.del_flag + + + + + and a.picking_order_id = #{pickingOrderId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.order_number = #{orderNumber} + + + and a.picking_order_number = #{pickingOrderNumber} + + + and a.status = #{status} + + + and a.type = #{type} + + + and a.quantity = #{quantity} + + + and a.picking_quantity = #{pickingQuantity} + + + and a.abnormal = #{abnormal} + + + and a.task_distribution = #{taskDistribution} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.picking_order_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + + + + + + + + + + UPDATE picking_order + + picking_quantity = picking_quantity + #{pickingQuantity}, + picking_material_quantity = picking_material_quantity + #{pickingMaterialQuantity}, + status = #{status}, + update_by = #{updateBy}, + update_by_name = #{updateByName}, + update_time = #{updateTime} + + WHERE + picking_order_number = #{pickingOrderNumber} + AND del_flag = 1 + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/putawayRule/PutawayRuleMapper.xml b/mhd_wms/src/main/resources/mapper/putawayRule/PutawayRuleMapper.xml new file mode 100644 index 000000000..f716bdecf --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/putawayRule/PutawayRuleMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, rule_num, rule_name, enabled, remark from putaway_rule + where del_flag = 1 + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and rule_num = #{ruleNum} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and enabled = #{enabled} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/putawayRuleDetail/PutawayRuleDetailMapper.xml b/mhd_wms/src/main/resources/mapper/putawayRuleDetail/PutawayRuleDetailMapper.xml new file mode 100644 index 000000000..793d94d8a --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/putawayRuleDetail/PutawayRuleDetailMapper.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, putaway_rule_id, main_rule_id, main_rule, seq_num, storage_space_limit, storage_space_limit_type_id, storage_space_limit_type, usable_location_type, location_type_id, location_type, usable_location_kind, location_kind_id, location_kind from putaway_rule_detail + + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and putaway_rule_id = #{putawayRuleId} + + + and main_rule_id = #{mainRuleId} + + + and main_rule = #{mainRule} + + + and seq_num = #{seqNum} + + + and storage_space_limit = #{storageSpaceLimit} + + + and storage_space_limit_type_id = #{storageSpaceLimitTypeId} + + + and storage_space_limit_type = #{storageSpaceLimitType} + + + and usable_location_type = #{usableLocationType} + + + and location_type_id = #{locationTypeId} + + + and location_type = #{locationType} + + + and usable_location_kind = #{usableLocationKind} + + + and location_kind_id = #{locationKindId} + + + and location_kind = #{locationKind} + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/qcRule/QcRuleMapper.xml b/mhd_wms/src/main/resources/mapper/qcRule/QcRuleMapper.xml new file mode 100644 index 000000000..348a2dafc --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/qcRule/QcRuleMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, rule_num, rule_name, enabled, remark from qc_rule + where del_flag = 1 + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and rule_num = #{ruleNum} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and enabled = #{enabled} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/qcRuleDetail/QcRuleDetailMapper.xml b/mhd_wms/src/main/resources/mapper/qcRuleDetail/QcRuleDetailMapper.xml new file mode 100644 index 000000000..c0351e1c9 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/qcRuleDetail/QcRuleDetailMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, qc_rule_id, qc_min_range, qc_max_range, num_type_id, num_type, num_ratio from qc_rule_detail + where del_flag = 1 + + + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and qc_rule_id = #{qcRuleId} + + + and qc_min_range = #{qcMinRange} + + + and qc_max_range = #{qcMaxRange} + + + and num_type_id = #{numTypeId} + + + and num_type = #{numType} + + + and num_ratio = #{numRatio} + + + + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/qualityInspection/QualityInspectionMapper.xml b/mhd_wms/src/main/resources/mapper/qualityInspection/QualityInspectionMapper.xml new file mode 100644 index 000000000..f1e51ef8c --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/qualityInspection/QualityInspectionMapper.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.quality_inspection_id, a.organization_id, a.organization_name, a.top_organization_id, a.quality_inspection_number, a.in_order_number, a.material_detail_id, + a.inspection_quantity, a.abnormal_quantity, a.quality_inspection_results, a.abnormal_reason, a.quality_inspection_by, a.quality_inspection_name, + a.quality_inspection_time, a.quality_inspection_url, a.handle_status, a.handle_opinion, a.handle_by, a.handle_by_name, a.handle_time, a.material_status_code, + a.material_status_name, a.abnormal_material_status_code, a.abnormal_material_status_name, a.warehousing, a.abnormal_handle_url, a.remark, a.create_time, + a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.quality_inspection_number = #{qualityInspectionNumber} + + + and a.material_detail_id = #{materialDetailId} + + + and a.inspection_quantity = #{inspectionQuantity} + + + and a.abnormal_quantity = #{abnormalQuantity} + + + and a.quality_inspection_results = #{qualityInspectionResults} + + + and a.abnormal_reason = #{abnormalReason} + + + and a.quality_inspection_by = #{qualityInspectionBy} + + + and a.quality_inspection_name like concat('%', #{qualityInspectionName}, '%') + + + and a.quality_inspection_time = #{qualityInspectionTime} + + + and a.quality_inspection_url = #{qualityInspectionUrl} + + + and a.handle_status = #{handleStatus} + + + and a.handle_opinion = #{handleOpinion} + + + and a.handle_by = #{handleBy} + + + and a.handle_by_name like concat('%', #{handleByName}, '%') + + + and a.handle_time = #{handleTime} + + + and a.material_status_code = #{materialStatusCode} + + + and a.material_status_name like concat('%', #{materialStatusName}, '%') + + + and a.abnormal_material_status_code = #{abnormalMaterialStatusCode} + + + and a.abnormal_material_status_name like concat('%', #{abnormalMaterialStatusName}, '%') + + + and a.warehousing = #{warehousing} + + + and a.abnormal_handle_url = #{abnormalHandleUrl} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + ,b.in_order_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_name + + + + + and b.in_order_number = #{inOrderNumber} + + + and b.warehouse_id = #{warehouseId} + + + and b.warehouse_code = #{warehouseCode} + + + and b.warehouse_name like concat('%', #{warehouseName}, '%') + + + and b.shipper_id = #{shipperId} + + + and b.shipper_name like concat('%', #{shipperName}, '%') + + + + + , c.material_base_info_id, c.material_code, c.material_name, c.quantity, c.receipt_quantity, c.quality_inspection_manage, + c.quality_inspection_stage, c.quality_inspection_rule, c.quality_inspection_ratio, c.quality_inspection_term + + + + + and c.order_number = #{orderNumber} + + + and c.material_base_info_id = #{materialBaseInfoId} + + + and c.material_code = #{materialCode} + + + and c.material_name like concat('%', #{materialName}, '%') + + + and c.quantity = #{quantity} + + + and c.receipt_quantity = #{receiptQuantity} + + + and c.shelves_quantity = #{shelvesQuantity} + + + and c.quality_inspection_manage = #{qualityInspectionManage} + + + and c.quality_inspection_stage = #{qualityInspectionStage} + + + and c.quality_inspection_rule = #{qualityInspectionRule} + + + and c.quality_inspection_term = #{qualityInspectionTerm} + + + and c.quality_inspection_ratio = #{qualityInspectionRatio} + + + and c.quality_inspection_results = #{qualityInspectionResults} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml new file mode 100644 index 000000000..d81785a84 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/receiptMaterialDetail/ReceiptMaterialDetailMapper.xml @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, receipt_order_number, material_base_info_id, material_code, material_name, bar_code, quantity, already_receipt_quantity, receipt_quantity, receipt_status, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, quality_inspection_manage, quality_inspection_stage, quality_inspection_rule, quality_inspection_ratio, quality_inspection_term, quality_inspection_results, allow_overcharge, overcharge_ratio, batch_number, material_status_code, material_status_name, distribute_rule_id, distribute_rule_code, distribute_rule_name, container_id, container_code, container_type, container_type_name, level, parent_unique_id, in_unique_id, allow_modify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, gen_stock_shelf, del_flag from receipt_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and receipt_order_number = #{receiptOrderNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and receipt_quantity = #{receiptQuantity} + + + and receipt_status = #{receiptStatus} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and quality_inspection_manage = #{qualityInspectionManage} + + + and quality_inspection_stage = #{qualityInspectionStage} + + + and quality_inspection_rule = #{qualityInspectionRule} + + + and quality_inspection_ratio = #{qualityInspectionRatio} + + + and quality_inspection_term = #{qualityInspectionTerm} + + + and quality_inspection_results = #{qualityInspectionResults} + + + and allow_overcharge = #{allowOvercharge} + + + and overcharge_ratio = #{overchargeRatio} + + + and batch_number = #{batchNumber} + + + and material_status_code = #{materialStatusCode} + + + and material_status_name like concat('%', #{materialStatusName}, '%') + + + and distribute_rule_id = #{distributeRuleId} + + + and distribute_rule_code = #{distributeRuleCode} + + + and distribute_rule_name like concat('%', #{distributeRuleName}, '%') + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and level = #{level} + + + and parent_unique_id = #{parentUniqueId} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and gen_stock_shelf = #{genStockShelf} + + + and ( instr(material_name, #{compoundOrQuery}) > 0 + or + instr(material_code, #{compoundOrQuery}) > 0 + or + instr(bar_code, #{compoundOrQuery}) > 0 + ) + + + and receipt_order_number in + + #{item} + + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/replenishmentNotice/ReplenishmentNoticeMapper.xml b/mhd_wms/src/main/resources/mapper/replenishmentNotice/ReplenishmentNoticeMapper.xml new file mode 100644 index 000000000..ee3babddd --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/replenishmentNotice/ReplenishmentNoticeMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.replenishment_notice_id, a.organization_id, a.organization_name, a.top_organization_id, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.out_order_number, a.shipper_id, a.shipper_name, a.material_code, a.material_name, a.bar_code, a.quantity, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.out_order_number = #{outOrderNumber} + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.material_code = #{materialCode} + + + and a.material_name like concat('%', #{materialName}, '%') + + + and a.bar_code = #{barCode} + + + and a.quantity = #{quantity} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/serialNumber/SerialNumberMapper.xml b/mhd_wms/src/main/resources/mapper/serialNumber/SerialNumberMapper.xml new file mode 100644 index 000000000..0b2dbdb53 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/serialNumber/SerialNumberMapper.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select serial_number_id, shelf_order_id, organization_id, organization_name, top_organization_id, serial_number, in_order_number, material_base_info_id, material_code, material_name, bar_code, warehouse_id, warehouse_code, warehouse_name, storage_section_id, + storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, batch_number, container_id, container_code, container_type, container_type_name, status, + create_time, create_by, create_by_name, update_time, update_by, update_by_name, material_detail_id, del_flag from serial_number + where del_flag = 1 + + + + + and shelf_order_id = #{shelfOrderId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and serial_number like concat('%', #{serialNumber}, '%') + + + and in_order_number = #{inOrderNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_detail_id = #{materialDetailId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and batch_number = #{batchNumber} + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and status = #{status} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml new file mode 100644 index 000000000..8a6cc465b --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/shelfMaterialDetail/ShelfMaterialDetailMapper.xml @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, shelf_order_number, material_base_info_id, material_code, material_name, bar_code, quantity, already_shelves_quantity, shelves_quantity, shelves_status, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, quality_inspection_manage, quality_inspection_stage, quality_inspection_rule, quality_inspection_ratio, quality_inspection_term, quality_inspection_results, allow_overcharge, overcharge_ratio, batch_number, material_status_code, material_status_name, distribute_rule_id, distribute_rule_code, distribute_rule_name, container_id, container_code, container_type, container_type_name, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, level, parent_unique_id, in_unique_id, receipt_unique_id, allow_modify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from shelf_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and shelf_order_number = #{shelfOrderNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and shelves_quantity = #{shelvesQuantity} + + + and already_shelves_quantity = #{alreadyShelvesQuantity} + + + and shelves_status = #{shelvesStatus} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and quality_inspection_manage = #{qualityInspectionManage} + + + and quality_inspection_stage = #{qualityInspectionStage} + + + and quality_inspection_rule = #{qualityInspectionRule} + + + and quality_inspection_ratio = #{qualityInspectionRatio} + + + and quality_inspection_term = #{qualityInspectionTerm} + + + and quality_inspection_results = #{qualityInspectionResults} + + + and allow_overcharge = #{allowOvercharge} + + + and overcharge_ratio = #{overchargeRatio} + + + and batch_number = #{batchNumber} + + + and material_status_code = #{materialStatusCode} + + + and material_status_name like concat('%', #{materialStatusName}, '%') + + + and distribute_rule_id = #{distributeRuleId} + + + and distribute_rule_code = #{distributeRuleCode} + + + and distribute_rule_name like concat('%', #{distributeRuleName}, '%') + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and level = #{level} + + + and parent_unique_id = #{parentUniqueId} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/shiftManage/ShiftManageMapper.xml b/mhd_wms/src/main/resources/mapper/shiftManage/ShiftManageMapper.xml new file mode 100644 index 000000000..fac77cd7f --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/shiftManage/ShiftManageMapper.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select shift_manage_id, organization_id, organization_name, top_organization_id, warehouse_id, warehouse_code, warehouse_name, shift_number, quantity, shift_quantity, material_type_quantity, shift_material_quantity, shift_status, audit_status, audit_remark, audit_by, audit_by_name, audit_time, task_distribution, task_distribution_time, operators_by, operators_name, nullify, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from shift_manage + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and shift_number like concat('%',#{shiftNumber},'%') + + + and quantity = #{quantity} + + + and shift_quantity = #{shiftQuantity} + + + and material_type_quantity = #{materialTypeQuantity} + + + and shift_material_quantity = #{shiftMaterialQuantity} + + + and shift_status = #{shiftStatus} + + + and shift_status < #{ltShiftStatus} + + + and shift_status > #{gtShiftStatus} + + + and audit_status = #{auditStatus} + + + and audit_remark = #{auditRemark} + + + and audit_by = #{auditBy} + + + and audit_by_name like concat('%', #{auditByName}, '%') + + + and audit_time = #{auditTime} + + + and task_distribution = #{taskDistribution} + + + and task_distribution_time = #{taskDistributionTime} + + + and operators_by = #{operatorsBy} + + + and operators_name like concat('%', #{operatorsName}, '%') + + + and nullify = #{nullify} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and date_format(create_time,'%Y-%m-%d %H:%i:%s') =]]> #{createStartTime} + + + and date_format(create_time,'%Y-%m-%d %H:%i:%s') #{createEndTime} + + + and remark like concat('%',#{remark},'%') + + + and shift_manage_id in + + #{item} + + + + + + + + + + update shift_manage + set material_type_quantity = #{materialTypeQuantity},shift_material_quantity = #{shiftMaterialQuantity},shift_quantity=#{shiftQuantity} + where shift_number = #{shiftNumber} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/shiftMaterialDetail/ShiftMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/shiftMaterialDetail/ShiftMaterialDetailMapper.xml new file mode 100644 index 000000000..9574734ab --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/shiftMaterialDetail/ShiftMaterialDetailMapper.xml @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select shift_io_detail_id, organization_id, organization_name, top_organization_id, unique_id, material_inventory_id, material_base_info_id, material_code, material_name, bar_code, shift_number, shift_status, inventory_quantity, quantity, already_shift_quantity, shift_quantity, batch_number,shift_type,old_warehouse_id, old_warehouse_code, old_warehouse_name, old_storage_section_id, old_storage_code, old_storage_name, old_storage_location_id, old_storage_location_code, old_storage_location_name, new_warehouse_id, new_warehouse_code, new_warehouse_name, new_storage_section_id, new_storage_code, new_storage_name, new_storage_location_id, new_storage_location_code, new_storage_location_name, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, container_id, container_code, container_type, container_type_name, level, parent_unique_id, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag,batch_number,material_status_code,material_status_name from shift_material_detail + + + + + and del_flag = 1 + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and shift_number like concat('%',#{shiftNumber},'%') + + + and shift_status = #{shiftStatus} + + + and inventory_quantity = #{inventoryQuantity} + + + and quantity = #{quantity} + + + and shift_quantity = #{shiftQuantity} + + + and old_warehouse_id = #{oldWarehouseId} + + + and old_warehouse_code = #{oldWarehouseCode} + + + and old_warehouse_name like concat('%', #{oldWarehouseName}, '%') + + + and old_storage_section_id = #{oldStorageSectionId} + + + and old_storage_code = #{oldStorageCode} + + + and old_storage_name like concat('%', #{oldStorageName}, '%') + + + and old_storage_location_id = #{oldStorageLocationId} + + + and old_storage_location_code = #{oldStorageLocationCode} + + + and old_storage_location_name like concat('%', #{oldStorageLocationName}, '%') + + + and new_warehouse_id = #{newWarehouseId} + + + and new_warehouse_code = #{newWarehouseCode} + + + and new_warehouse_name like concat('%', #{newWarehouseName}, '%') + + + and new_storage_section_id = #{newStorageSectionId} + + + and new_storage_code = #{newStorageCode} + + + and new_storage_name like concat('%', #{newStorageName}, '%') + + + and new_storage_location_id = #{newStorageLocationId} + + + and new_storage_location_code = #{newStorageLocationCode} + + + and new_storage_location_name like concat('%', #{newStorageLocationName}, '%') + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and level = #{level} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and remark like concat('%',#{remark},'%') + + + + + + update shift_material_detail + set shift_quantity = #{shiftQuantity},shift_status = #{shiftStatus} + where shift_io_detail_id = #{shiftIoDetailId} + + + + + + + + + + + + + + + + + + update shift_material_detail set shift_status = 2 + where shift_number = #{shiftNumber} + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/sowingDistributionDetails/SowingDistributionDetailsMapper.xml b/mhd_wms/src/main/resources/mapper/sowingDistributionDetails/SowingDistributionDetailsMapper.xml new file mode 100644 index 000000000..54b28e2bd --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/sowingDistributionDetails/SowingDistributionDetailsMapper.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select sowing_distribution_details_id, organization_id, organization_name, top_organization_id, warehouse_id, warehouse_code, warehouse_name, order_number, type, material_detail_id, material_code, material_name, bar_code, quantity, inventory_quantity, allocation_quantity, picking_quantity, sowing_wall_code, sowing_wall_number, sowing_quantity, status, sowing_time, sowing_by, sowing_by_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, serial_number_manage, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from sowing_distribution_details + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and order_number = #{orderNumber} + + + and type = #{type} + + + and material_detail_id = #{materialDetailId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and inventory_quantity = #{inventoryQuantity} + + + and allocation_quantity = #{allocationQuantity} + + + and picking_quantity = #{pickingQuantity} + + + and sowing_wall_code = #{sowingWallCode} + + + and sowing_wall_number = #{sowingWallNumber} + + + and sowing_quantity = #{sowingQuantity} + + + and status = #{status} + + + and sowing_time = #{sowingTime} + + + and sowing_by = #{sowingBy} + + + and sowing_by_name like concat('%', #{sowingByName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and serial_number_manage = #{serialNumberManage} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/sowingWall/SowingWallMapper.xml b/mhd_wms/src/main/resources/mapper/sowingWall/SowingWallMapper.xml new file mode 100644 index 000000000..3c6b83d9b --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/sowingWall/SowingWallMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + select sowing_wall_id, organization_id, organization_name, top_organization_id, sowing_wall_code, layer_num, column_number, opening_up, nullify, sowing_wall_desc, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from sowing_wall + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and sowing_wall_code = #{sowingWallCode} + + + and layer_num = #{layerNum} + + + and column_number = #{columnNumber} + + + and opening_up = #{openingUp} + + + and sowing_wall_desc = #{sowingWallDesc} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml new file mode 100644 index 000000000..f42e5aec3 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.in_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.notice_number, a.in_order_number, a.status, + a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code, + a.shipper_name, a.order_type_code, a.order_type_name, a.supplier_id, a.supplier_code, a.supplier_name, a.expect_time, a.supply_chain_number, + a.priority_level_code, a.priority_level_name, a.direct_warehouse, a.annex_url, a.material_quantity, a.quantity, a.weight_limit, a.volume_limit, a.cancel_order, a.cancel_remark, a.cancel_by, + a.cancel_by_name, a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.remark, a.create_time, a.create_by, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag, over_stock_id, over_stock_status, over_stock_type + + + + ,b.notice_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_code, b.shipper_name, + b.order_type_code, b.order_type_name, b.supplier_id, b.supplier_code, b.supplier_name, b.expect_time, b.supply_chain_number, b.priority_level_code, + b.priority_level_name, b.direct_warehouse, b.annex_url, b.material_quantity, b.quantity + + + + + + and b.notice_number = #{noticeNumber} + + + and b.in_order_number = #{inOrderNumber} + + + and b.warehouse_id = #{warehouseId} + + + and b.warehouse_code = #{warehouseCode} + + + and b.warehouse_name like concat('%', #{warehouseName}, '%') + + + and b.shipper_id = #{shipperId} + + + and b.shipper_name like concat('%', #{shipperName}, '%') + + + and b.order_type_code = #{orderTypeCode} + + + and b.order_type_name like concat('%', #{orderTypeName}, '%') + + + and b.supplier_id = #{supplierId} + + + and b.supplier_name like concat('%', #{supplierName}, '%') + + + and b.expect_time = #{expectTime} + + + and b.supply_chain_number = #{supplyChainNumber} + + + and b.priority_level_code = #{priorityLevelCode} + + + and b.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and b.direct_warehouse = #{directWarehouse} + + + and b.annex_url = #{annexUrl} + + + and b.quantity = #{quantity} + + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.notice_number = #{noticeNumber} + + + and a.in_order_number = #{inOrderNumber} + + + and a.status = #{status} + + + and a.status < #{status} + + + and a.status > #{status} + + + and a.audit_status = #{auditStatus} + + + and a.audit_status < #{ltAuditStatus} + + + and a.audit_status > #{gtAuditStatus} + + + and a.audit_remark = #{auditRemark} + + + and a.audit_by = #{auditBy} + + + and a.audit_by_name like concat('%', #{auditByName}, '%') + + + and a.audit_time = #{auditTime} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and a.order_type_name like concat('%', #{orderTypeName}, '%') + + + and a.supplier_id = #{supplierId} + + + and a.supplier_name like concat('%', #{supplierName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.supply_chain_number = #{supplyChainNumber} + + + and a.priority_level_code = #{priorityLevelCode} + + + and a.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and a.direct_warehouse = #{directWarehouse} + + + and a.annex_url = #{annexUrl} + + + and a.quantity = #{quantity} + + + and a.cancel_order = #{cancelOrder} + + + and a.cancel_remark = #{cancelRemark} + + + and a.cancel_by = #{cancelBy} + + + and a.cancel_by_name like concat('%', #{cancelByName}, '%') + + + and a.cancel_time = #{cancelTime} + + + and a.close_order = #{closeOrder} + + + and a.close_remark = #{closeRemark} + + + and a.close_by = #{closeBy} + + + and a.close_by_name like concat('%', #{closeByName}, '%') + + + and a.close_time = #{closeTime} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.in_order_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml new file mode 100644 index 000000000..f91a15f0e --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockInTaskOrder/StockInTaskOrderMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.in_task_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.serial_number, a.type, a.task_number, a.warehouse_id, a.warehouse_code, + a.warehouse_name, a.shipper_id, a.shipper_name, a.in_order_number, a.receipt_order_number, a.shelf_order_number, a.actual_quantity, a.operators_by, + a.operators_name, a.operators_end_time, a.remark, a.create_time, a.create_by, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.serial_number = #{serialNumber} + + + and a.type = #{type} + + + and a.task_number = #{taskNumber} + + + and a.actual_quantity = #{actualQuantity} + + + and a.operators_by = #{operatorsBy} + + + and a.operators_name like concat('%', #{operatorsName}, '%') + + + and a.operators_end_time = #{operatorsEndTime} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockOutOrder/StockOutOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockOutOrder/StockOutOrderMapper.xml new file mode 100644 index 000000000..d22386b3e --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockOutOrder/StockOutOrderMapper.xml @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.out_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.receipt_notice_id, a.notice_number, a.out_order_number, a.status, + a.audit_status, a.audit_remark, a.audit_by, a.audit_by_name, a.audit_time, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code, + a.shipper_name, a.order_type_code, a.order_type_name, a.customer_id, a.customer_code, a.customer_name, a.expect_time, a.supply_chain_number, a.priority_level_code, + a.priority_level_name, a.direct_warehouse, a.review, a.annex_url, a.material_quantity, a.quantity, a.weight_limit, a.volume_limit, a.check_quantity, a.cancel_order, a.cancel_remark, a.cancel_by, a.cancel_by_name, + a.cancel_time, a.close_order, a.close_remark, a.close_by, a.close_by_name, a.close_time, a.check_status, + a.check_task_distribution, a.check_task_distribution_time, a.check_operators_by, a.check_operators_name, a.mobilize_code, + a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag, over_stock_id, over_stock_status, over_stock_type + + + + + ,b.notice_number, b.out_order_number, b.warehouse_id, b.warehouse_code, b.warehouse_name, b.shipper_id, b.shipper_code, + b.shipper_name, b.order_type_code, b.order_type_name, b.customer_id, b.customer_name, b.expect_time, b.supply_chain_number, b.priority_level_code, + b.priority_level_name, b.direct_warehouse, b.review, b.annex_url, b.quantity + + + + + and a.out_order_id = #{outOrderId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.notice_number = #{noticeNumber} + + + and a.out_order_number = #{outOrderNumber} + + + + + + + and a.status IN (3, 4, 5, 6, 7, 8) + + + and a.status = #{status} + + + + + + and a.status > #{gtStatus} + + + and a.status < #{ltStatus} + + + and a.audit_status = #{auditStatus} + + + and a.audit_remark = #{auditRemark} + + + and a.audit_by = #{auditBy} + + + and a.audit_by_name like concat('%', #{auditByName}, '%') + + + and a.audit_time = #{auditTime} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and a.order_type_name like concat('%', #{orderTypeName}, '%') + + + and a.customer_id = #{customerId} + + + and a.customer_name like concat('%', #{customerName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.supply_chain_number = #{supplyChainNumber} + + + and a.priority_level_code = #{priorityLevelCode} + + + and a.priority_level_name like concat('%', #{priorityLevelName}, '%') + + + and a.direct_warehouse = #{directWarehouse} + + + and a.review = #{review} + + + and a.annex_url = #{annexUrl} + + + and a.quantity = #{quantity} + + + and a.cancel_order = #{cancelOrder} + + + and a.cancel_remark = #{cancelRemark} + + + and a.cancel_by = #{cancelBy} + + + and a.cancel_by_name like concat('%', #{cancelByName}, '%') + + + and a.cancel_time = #{cancelTime} + + + and a.close_order = #{closeOrder} + + + and a.close_remark = #{closeRemark} + + + and a.close_by = #{closeBy} + + + and a.close_by_name like concat('%', #{closeByName}, '%') + + + and a.close_time = #{closeTime} + + + and a.check_status = #{checkStatus} + + + and a.check_status > #{gtCheckStatus} + + + and a.check_status < #{ltCheckStatus} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.check_operators_by = #{checkOperatorsBy} + + + and a.out_order_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockOutTaskOrder/StockOutTaskOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockOutTaskOrder/StockOutTaskOrderMapper.xml new file mode 100644 index 000000000..6a52b9462 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockOutTaskOrder/StockOutTaskOrderMapper.xml @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.out_task_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.serial_number, a.task_number, a.status, a.type, a.warehouse_id, + a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_name, a.order_number, a.picking_order_number, a.quantity, a.material_quantity, a.picking_quantity, a.picking_material_quantity, a.collection_location, + a.abnormal, a.operators_by, a.operators_name, a.operators_end_time, a.storage_section_id, a.storage_code, a.storage_name, a.storage_location_id, a.storage_location_code, a.storage_location_name, a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.serial_number = #{serialNumber} + + + and a.task_number = #{taskNumber} + + + and a.status = #{status} + + + and a.status < #{ltStatus} + + + and a.status > #{gtStatus} + + + and a.type = #{type} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_number = #{orderNumber} + + + and a.picking_order_number = #{pickingOrderNumber} + + + and a.abnormal = #{abnormal} + + + and a.operators_by = #{operatorsBy} + + + and a.operators_name like concat('%', #{operatorsName}, '%') + + + and a.operators_end_time = #{operatorsEndTime} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockReceiptNotice/NoticeOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockReceiptNotice/NoticeOrderMapper.xml new file mode 100644 index 000000000..13d219b78 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockReceiptNotice/NoticeOrderMapper.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.notice_id, a.organization_id, a.organization_name, a.top_organization_id, a.customer_order_number, a.type, a.status, a.notice_number, + a.order_number, a.warehouse_id, a.warehouse_code, a.warehouse_name, a.shipper_id, a.shipper_code, a.shipper_name, a.order_type_code, a.order_type_name, + a.supplier_id, a.supplier_code, a.supplier_name, a.customer_id, a.customer_code, a.customer_name, a.expect_time, a.supply_chain_number, a.nullify, a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.customer_order_number = #{customerOrderNumber} + + + and a.type = #{type} + + + and a.status = #{status} + + + and a.notice_number = #{noticeNumber} + + + and a.order_number = #{orderNumber} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and a.order_type_name like concat('%', #{orderTypeName}, '%') + + + and a.supplier_id = #{supplierId} + + + and a.supplier_name like concat('%', #{supplierName}, '%') + + + and a.expect_time = #{expectTime} + + + and a.supply_chain_number = #{supplyChainNumber} + + + and a.nullify = #{nullify} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml new file mode 100644 index 000000000..70cb024b7 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockReceiptOrder/StockReceiptOrderMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.receipt_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.in_order_number, a.receipt_order_number, + a.status, a.platform_id, a.platform_code, a.platform_name, a.platform_use_time_id, a.platform_use_start_time, a.platform_use_end_time, + a.platform_use_status, a.quantity, a.receipt_quantity, a.receipt_material_quantity, a.material_quantity, a.abnormal, a.task_distribution, a.task_distribution_time, + a.operators_by, a.operators_name, a.remark, a.create_time, a.create_by, a.create_by_name, + a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.receipt_order_id = #{receiptOrderId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.in_order_number = #{inOrderNumber} + + + and a.receipt_order_number like concat('%', #{receiptOrderNumber}, '%') + + + and a.status = #{status} + + + and a.status < #{ltStatus} + + + and a.status > #{gtStatus} + + + and a.platform_id = #{platformId} + + + and a.platform_code = #{platformCode} + + + and a.platform_name like concat('%', #{platformName}, '%') + + + and a.platform_use_time_id = #{platformUseTimeId} + + + and a.platform_use_start_time = #{platformUseStartTime} + + + and a.platform_use_end_time = #{platformUseEndTime} + + + and a.platform_use_status = #{platformUseStatus} + + + and a.receipt_quantity = #{receiptQuantity} + + + and a.abnormal = #{abnormal} + + + and a.task_distribution = #{taskDistribution} + + + and a.operators_by = #{operatorsBy} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.receipt_order_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml new file mode 100644 index 000000000..15dc61202 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/stockShelfOrder/StockShelfOrderMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.shelf_order_id, a.organization_id, a.organization_name, a.top_organization_id, + a.in_order_number, a.receipt_order_number,a.receipt_task_number, a.shelf_order_number,a.status, a.receipt_quantity, a.shelves_quantity, a.material_quantity, + a.shelves_material_quantity, a.abnormal,a.task_distribution, a.task_distribution_time, a.operators_by, a.remark, a.create_time, a.create_by, + a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag + + + + + and a.shelf_order_id = #{shelfOrderId} + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.in_order_number = #{inOrderNumber} + + + and a.receipt_order_number = #{receiptOrderNumber} + + + and a.receipt_task_number = #{receiptTaskNumber} + + + and a.shelf_order_number = #{shelfOrderNumber} + + + and a.status = #{status} + + + and a.status < #{ltStatus} + + + and a.status > #{gtStatus} + + + and a.shelves_quantity = #{shelvesQuantity} + + + and a.abnormal = #{abnormal} + + + and a.task_distribution = #{taskDistribution} + + + and a.operators_by = #{operatorsBy} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.shelf_order_id in + + #{item} + + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + + and c.receipt_order_number = #{receiptOrderNumber} + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/taskHandoverMaterialDetail/TaskHandoverMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/taskHandoverMaterialDetail/TaskHandoverMaterialDetailMapper.xml new file mode 100644 index 000000000..7d1f53e43 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/taskHandoverMaterialDetail/TaskHandoverMaterialDetailMapper.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, task_number, material_base_info_id, material_code, material_name, bar_code, weight_limit, volume_limit, quantity, picking_quantity, check_quantity, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from task_handover_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and task_number = #{taskNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and weight_limit = #{weightLimit} + + + and volume_limit = #{volumeLimit} + + + and quantity = #{quantity} + + + and picking_quantity = #{pickingQuantity} + + + and check_quantity = #{checkQuantity} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/taskPickingMaterialDetail/TaskPickingMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/taskPickingMaterialDetail/TaskPickingMaterialDetailMapper.xml new file mode 100644 index 000000000..8b81cad95 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/taskPickingMaterialDetail/TaskPickingMaterialDetailMapper.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, task_number, material_base_info_id, material_code, material_name, bar_code, weight_limit, volume_limit, + quantity, picking_quantity, ROUND((quantity - picking_quantity), 2) AS wait_picking_quantity, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, + serial_number_manage, material_inventory_id, batch_number, container_id, container_code, container_type, container_type_name, material_status_code, material_status_name, + warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, picking_unique_id, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag + from task_picking_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and task_number = #{taskNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and weight_limit = #{weightLimit} + + + and volume_limit = #{volumeLimit} + + + and quantity = #{quantity} + + + and picking_quantity = #{pickingQuantity} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/taskReceiptMaterialDetail/TaskReceiptMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/taskReceiptMaterialDetail/TaskReceiptMaterialDetailMapper.xml new file mode 100644 index 000000000..3bda326d2 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/taskReceiptMaterialDetail/TaskReceiptMaterialDetailMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, task_number, material_base_info_id, + material_code, material_name, bar_code, quantity, receipt_quantity, receipt_status, pack_id, pack_code, pack_name, pack_detail_id, unit_code, + unit_name, unit_number, material_warehouse_control_id, serial_number_manage, quality_inspection_manage, quality_inspection_stage, + quality_inspection_rule, quality_inspection_ratio, quality_inspection_term, quality_inspection_results, allow_overcharge, overcharge_ratio, + batch_number, material_status_code, material_status_name, distribute_rule_id, distribute_rule_code, distribute_rule_name, container_id, + container_code, container_type, container_type_name, level, parent_unique_id, remark, create_time, create_by, create_by_name, update_time, + update_by, update_by_name, del_flag + from task_receipt_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and task_number = #{taskNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and receipt_quantity = #{receiptQuantity} + + + and receipt_status = #{receiptStatus} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and quality_inspection_manage = #{qualityInspectionManage} + + + and quality_inspection_stage = #{qualityInspectionStage} + + + and quality_inspection_rule = #{qualityInspectionRule} + + + and quality_inspection_ratio = #{qualityInspectionRatio} + + + and quality_inspection_term = #{qualityInspectionTerm} + + + and quality_inspection_results = #{qualityInspectionResults} + + + and allow_overcharge = #{allowOvercharge} + + + and overcharge_ratio = #{overchargeRatio} + + + and batch_number = #{batchNumber} + + + and material_status_code = #{materialStatusCode} + + + and material_status_name like concat('%', #{materialStatusName}, '%') + + + and distribute_rule_id = #{distributeRuleId} + + + and distribute_rule_code = #{distributeRuleCode} + + + and distribute_rule_name like concat('%', #{distributeRuleName}, '%') + + + and container_id = #{containerId} + + + and container_code = #{containerCode} + + + and container_type = #{containerType} + + + and container_type_name like concat('%', #{containerTypeName}, '%') + + + and level = #{level} + + + and parent_unique_id = #{parentUniqueId} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/taskShelfMaterialDetail/TaskShelfMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/taskShelfMaterialDetail/TaskShelfMaterialDetailMapper.xml new file mode 100644 index 000000000..8a8463da2 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/taskShelfMaterialDetail/TaskShelfMaterialDetailMapper.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, task_number, material_base_info_id, material_code, material_name, bar_code, quantity, shelves_quantity, shelves_status, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, batch_number, material_status_code, material_status_name, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, level, parent_unique_id, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from task_shelf_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and task_number = #{taskNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and quantity = #{quantity} + + + and shelves_quantity = #{shelvesQuantity} + + + and shelves_status = #{shelvesStatus} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and batch_number = #{batchNumber} + + + and material_status_code = #{materialStatusCode} + + + and material_status_name like concat('%', #{materialStatusName}, '%') + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and level = #{level} + + + and parent_unique_id = #{parentUniqueId} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/userCommonSettings/UserCommonSettingsMapper.xml b/mhd_wms/src/main/resources/mapper/userCommonSettings/UserCommonSettingsMapper.xml new file mode 100644 index 000000000..42cdee97f --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/userCommonSettings/UserCommonSettingsMapper.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select user_common_settings_id, user_id, common_settings_id, name, route, is_settings, create_time, create_by, create_by_name, update_time, update_by, update_by_name, organization_id, organization_name, top_organization_id + from user_common_settings + + + + + del_flag=1 + + and user_id = #{userId} + + + and common_settings_id = #{commonSettingsId} + + + and name like concat('%', #{name}, '%') + + + and route = #{route} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and is_settings = #{isSettings} + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/waveMaterialDetail/WaveMaterialDetailMapper.xml b/mhd_wms/src/main/resources/mapper/waveMaterialDetail/WaveMaterialDetailMapper.xml new file mode 100644 index 000000000..3804aeeaa --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/waveMaterialDetail/WaveMaterialDetailMapper.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select material_detail_id, organization_id, organization_name, top_organization_id, unique_id, wave_order_number, material_base_info_id, material_code, material_name, bar_code, weight_limit, volume_limit, quantity, inventory_quantity, allocation_quantity, already_gen_picking_quantity, picking_quantity, check_quantity, pack_id, pack_code, pack_name, pack_detail_id, unit_code, unit_name, unit_number, material_warehouse_control_id, serial_number_manage, warehouse_id, warehouse_code, warehouse_name, storage_section_id, storage_code, storage_name, storage_location_id, storage_location_code, storage_location_name, level, parent_unique_id, remark, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from wave_material_detail + + + + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and unique_id = #{uniqueId} + + + and wave_order_number = #{waveOrderNumber} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and bar_code = #{barCode} + + + and weight_limit = #{weightLimit} + + + and volume_limit = #{volumeLimit} + + + and quantity = #{quantity} + + + and inventory_quantity = #{inventoryQuantity} + + + and allocation_quantity = #{allocationQuantity} + + + and already_gen_picking_quantity = #{alreadyGenPickingQuantity} + + + and picking_quantity = #{pickingQuantity} + + + and check_quantity = #{checkQuantity} + + + and pack_id = #{packId} + + + and pack_code = #{packCode} + + + and pack_name like concat('%', #{packName}, '%') + + + and pack_detail_id = #{packDetailId} + + + and unit_code = #{unitCode} + + + and unit_name like concat('%', #{unitName}, '%') + + + and unit_number = #{unitNumber} + + + and material_warehouse_control_id = #{materialWarehouseControlId} + + + and serial_number_manage = #{serialNumberManage} + + + and warehouse_id = #{warehouseId} + + + and warehouse_code = #{warehouseCode} + + + and warehouse_name like concat('%', #{warehouseName}, '%') + + + and storage_section_id = #{storageSectionId} + + + and storage_code = #{storageCode} + + + and storage_name like concat('%', #{storageName}, '%') + + + and storage_location_id = #{storageLocationId} + + + and storage_location_code = #{storageLocationCode} + + + and storage_location_name like concat('%', #{storageLocationName}, '%') + + + and level = #{level} + + + and parent_unique_id = #{parentUniqueId} + + + and create_by_name like concat('%', #{createByName}, '%') + + + and update_by_name like concat('%', #{updateByName}, '%') + + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/waveOrder/WaveOrderMapper.xml b/mhd_wms/src/main/resources/mapper/waveOrder/WaveOrderMapper.xml new file mode 100644 index 000000000..fbd6334d5 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/waveOrder/WaveOrderMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.wave_order_id, a.organization_id, a.organization_name, a.top_organization_id, a.wave_order_number, a.status, a.wave_order_type_code, + a.wave_order_type_name, a.out_order_quantity, a.material_category_quantity, a.quantity, a.weight_limit, a.volume_limit, a.allocation_quantity, + a.picking_quantity, a.check_quantity, a.out_quantity, a.warehouse_id, a.warehouse_code, + a.warehouse_name, a.shipper_id, a.shipper_name, a.order_type_code, a.order_type_name, a.customer_id, a.customer_name, a.cancel_order, + a.cancel_remark, a.cancel_by, a.cancel_by_name, a.cancel_time, a.remark, a.create_time, a.create_by, a.create_by_name, a.update_time, + a.update_by, a.update_by_name, a.del_flag + + + + ,b.out_order_quantity, b.material_category_quantity, b.quantity, b.allocation_quantity, + b.picking_quantity, b.check_quantity, b.out_quantity + + + + + and a.organization_id = #{organizationId} + + + and a.organization_name like concat('%', #{organizationName}, '%') + + + and a.top_organization_id = #{topOrganizationId} + + + and a.wave_order_number = #{waveOrderNumber} + + + and a.status = #{status} + + + and a.wave_order_type_code = #{waveOrderTypeCode} + + + and a.wave_order_type_name like concat('%', #{waveOrderTypeName}, '%') + + + and a.out_order_quantity = #{outOrderQuantity} + + + and a.material_category_quantity = #{materialCategoryQuantity} + + + and a.quantity = #{quantity} + + + and a.allocation_quantity = #{allocationQuantity} + + + and a.picking_quantity = #{pickingQuantity} + + + and a.check_quantity = #{checkQuantity} + + + and a.out_quantity = #{outQuantity} + + + and a.warehouse_id = #{warehouseId} + + + and a.warehouse_code = #{warehouseCode} + + + and a.warehouse_name like concat('%', #{warehouseName}, '%') + + + and a.shipper_id = #{shipperId} + + + and a.shipper_name like concat('%', #{shipperName}, '%') + + + and a.order_type_code = #{orderTypeCode} + + + and a.order_type_name like concat('%', #{orderTypeName}, '%') + + + and a.customer_id = #{customerId} + + + and a.customer_name like concat('%', #{customerName}, '%') + + + and a.cancel_order = #{cancelOrder} + + + and a.cancel_remark = #{cancelRemark} + + + and a.cancel_by = #{cancelBy} + + + and a.cancel_by_name like concat('%', #{cancelByName}, '%') + + + and a.cancel_time = #{cancelTime} + + + and a.create_by_name like concat('%', #{createByName}, '%') + + + and a.update_by_name like concat('%', #{updateByName}, '%') + + + and a.del_flag = #{delFlag} + and a.del_flag = 1 + + + + + \ No newline at end of file diff --git a/mhd_wms/src/main/resources/mapper/waveRule/WaveRuleMapper.xml b/mhd_wms/src/main/resources/mapper/waveRule/WaveRuleMapper.xml new file mode 100644 index 000000000..dbf22f0d0 --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/waveRule/WaveRuleMapper.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, create_by, create_by_name, create_time, update_by, update_by_name, update_time, del_flag, top_organization_id, organization_id, organization_name, rule_num, rule_name, enabled, wave_number, order_num_max, order_num_min, material_type_max, material_type_min, material_num_max, material_num_min, is_more_shipper, is_cross_depot, remark from wave_rule + where del_flag = 1 + + + + + + and top_organization_id = #{topOrganizationId} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and rule_num = #{ruleNum} + + + and rule_name like concat('%', #{ruleName}, '%') + + + and enabled = #{enabled} + + + and wave_number = #{waveNumber} + + + and order_num_max = #{orderNumMax} + + + and order_num_min = #{orderNumMin} + + + and material_type_max = #{materialTypeMax} + + + and material_type_min = #{materialTypeMin} + + + and material_num_max = #{materialNumMax} + + + and material_num_min = #{materialNumMin} + + + and is_more_shipper = #{isMoreShipper} + + + and is_cross_depot = #{isCrossDepot} + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7cf7f5336..2c9656a70 100644 --- a/pom.xml +++ b/pom.xml @@ -300,6 +300,8 @@ mhd_finance mhd_thrid_party mhd_oms + untitled + mhd_wms pom