From 92bc6dca274eb45dc330f63b5a3f90a01458e157 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期二, 27 五月 2025 14:48:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml | 5 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java | 118 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml | 42 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java | 65 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java | 347 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java | 52 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java | 50 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java | 57 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java | 14 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodeUtils.java | 121 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java | 6 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java | 103 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java | 96 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java | 20 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java | 29 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java | 154 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml | 24 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java | 209 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java | 176 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentTransferService.java | 49 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java | 23 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java | 160 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java | 53 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java | 18 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java | 150 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java | 38 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java | 19 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java | 21 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundDetailMapper.java | 27 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java | 22 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java | 350 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundOrder.java | 116 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java | 38 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java | 37 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java | 9 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java | 2 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundDetailMapper.xml | 84 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentTransferMapper.xml | 7 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java | 35 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java | 87 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java | 39 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java | 74 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentTransferMapper.java | 18 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java | 41 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java | 159 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java | 30 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java | 36 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java | 87 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java | 22 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml | 221 + lxzn-module-system/lxzn-system-start/src/main/resources/db/tms_2025/tms-init-20250522.sql | 1240 +++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundDetailServiceImpl.java | 55 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java | 286 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java | 179 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java | 137 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java | 327 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java | 175 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferQuery.java | 23 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsConfigProperty.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java | 21 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundDetailService.java | 20 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java | 3 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java | 2 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml | 79 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java | 13 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java | 3 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java | 15 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java | 237 + db/数据库产品化设计.pdma.json | 202 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java | 8 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java | 12 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml | 5 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml | 10 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java | 266 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java | 25 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java | 126 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java | 31 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java | 12 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundDetailController.java | 174 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java | 41 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml | 26 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java | 14 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java | 109 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java | 23 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java | 132 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java | 20 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java | 232 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java | 174 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java | 78 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml | 91 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedger.java | 14 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundOrderMapper.xml | 5 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java | 152 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java | 87 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java | 19 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundOrderMapper.java | 17 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java | 14 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java | 346 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java | 166 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java | 19 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java | 42 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/InboundOrderFlowDto.java | 12 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java | 97 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java | 14 112 files changed, 8,946 insertions(+), 459 deletions(-) diff --git "a/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" "b/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" index 33ebfa6..9c54df4 100644 --- "a/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" +++ "b/db/\346\225\260\346\215\256\345\272\223\344\272\247\345\223\201\345\214\226\350\256\276\350\256\241.pdma.json" @@ -4,7 +4,7 @@ "avatar": "", "version": "4.9.2", "createdTime": "2025-3-10 16:38:19", - "updatedTime": "2025-5-22 15:02:23", + "updatedTime": "2025-5-26 14:55:20", "dbConns": [], "profile": { "default": { @@ -12848,6 +12848,150 @@ "extProps": {}, "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", "id": "167FF00A-3AB4-4A25-A0FA-922481A35D9F" + }, + { + "defKey": "approval_deal_type", + "defName": "瀹℃牳绫诲瀷", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792", + "id": "5AE732AE-B9E0-47C0-A565-FA1EBC7940D3" + }, + { + "defKey": "approval_comment", + "defName": "瀹℃牳鎰忚", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", + "id": "295D3DAE-28E0-4DCE-A0A0-839F87F534F4" + }, + { + "defKey": "unseal_report_user", + "defName": "鍚皝鐢宠浜�", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6", + "id": "FAE53488-7B2A-4F16-8CBF-DB9B774DF33F" + }, + { + "defKey": "unseal_reason", + "defName": "鍚皝鍘熷洜", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", + "id": "4DDCB07F-1FEC-4A22-84BD-A45D7C7925B2" + }, + { + "defKey": "unseal_approval_user", + "defName": "鍚皝瀹℃牳浜�", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "54611CCC-CA4B-42E1-9F32-4944C85B85A6", + "id": "68C346D8-EA2A-4E46-A4B5-16787C79ECBA" + }, + { + "defKey": "unseal_approval_time", + "defName": "鍚皝瀹℃牳鏃堕棿", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "89D69E81-EA34-42EE-9FA2-93B8BD27E098", + "extProps": {}, + "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC", + "id": "51A953E1-6435-413B-AADF-8D695130618D" + }, + { + "defKey": "unseal_approval_deal_type", + "defName": "鍚皝瀹℃牳绫诲瀷", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792", + "id": "A171B3A4-A12B-4A45-B064-BA63BD77B8EF" + }, + { + "defKey": "unseal_approval_comment", + "defName": "鍚皝瀹℃牳鎰忚", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64", + "extProps": {}, + "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", + "id": "DF17CC8C-26B1-4627-A980-C1E13C787A02" } ], "correlations": [], @@ -13329,6 +13473,62 @@ "extProps": {}, "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", "id": "66B3E2F7-B450-4D20-B3B2-5F6E80F99110" + }, + { + "defKey": "approval_deal_type", + "defName": "瀹℃牳绫诲瀷", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "3F991F63-D842-4D0B-86BD-4CAEB0F1D33D", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" + }, + { + "defKey": "approval_comment", + "defName": "瀹℃牳鎰忚", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573", + "refDict": "", + "extProps": {}, + "notes": {}, + "attr1": "", + "attr2": "", + "attr3": "", + "attr4": "", + "attr5": "", + "attr6": "", + "attr7": "", + "attr8": "", + "attr9": "", + "id": "A885F9EB-FAAE-4D76-ACF5-8E6CBCBA02DD", + "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64" } ], "correlations": [], diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java index 3175021..7686edc 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/aspect/EquipmentHistoryLogAspect.java @@ -7,10 +7,7 @@ import org.aspectj.lang.annotation.*; import org.aspectj.lang.reflect.MethodSignature; import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; -import org.jeecg.modules.eam.constant.EquipmentOperationTagEnum; -import org.jeecg.modules.eam.constant.InspectionStatus; -import org.jeecg.modules.eam.constant.ReportRepairEnum; -import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum; +import org.jeecg.modules.eam.constant.*; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.service.IEamEquipmentHistoryLogService; import org.springframework.beans.factory.annotation.Autowired; @@ -139,6 +136,16 @@ case UNSEALED: break; case TRANSFERRED: + if (result instanceof EamEquipmentTransfer) { + EamEquipmentTransfer order = (EamEquipmentTransfer) result; + if (EquipmentTransferStatusEnum.COMPLETE.name().equals(order.getTransferStatus())) { + log.setEquipmentId(order.getEquipmentId()); + log.setBusinessId(order.getId()); + log.setOperator(order.getReportUser()); + log.setDescription(order.getTransferReason()); + log.setCreateTime(order.getTransferTime()); + } + } break; case SCRAPPED: break; diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java index f097367..f66bac7 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/BusinessCodeConst.java @@ -23,6 +23,8 @@ String LEAN_OUT_CODE_RULE = "EquipmentLeanOutCodeRule"; //璁惧灏佸瓨鍚皝 String SEAL_UP_CODE_RULE = "EquipmentSealUpCodeRule"; + //璁惧璋冩嫧缂栫爜瑙勫垯 + String TRANSFER_CODE_RULE = "EquipmentTransferCodeRule"; /** * 澶囦欢璇疯喘鍗曠姸鎬� 1:宸插垱寤� 2:宸叉彁浜� 3:宸查�氳繃 4:宸查┏鍥� 5:宸插畬鎴� */ diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java index 7685601..e86451c 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentSealUpStatusEnum.java @@ -8,6 +8,7 @@ WAIT_SUBMIT, //寰呮彁浜� WAIT_CHECK, //寰呭鏍� SEALED, //宸插皝瀛� + WAIT_UNSEALING_AUDIT, //寰呭惎灏佸鏍� COMPLETE, //宸插畬鎴� ; diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java new file mode 100644 index 0000000..f061fb2 --- /dev/null +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/EquipmentTransferStatusEnum.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.eam.constant; + +/** + * @author cuikaidong + * @date 2025/5/26 + */ +public enum EquipmentTransferStatusEnum { + WAIT_SUBMIT, //寰呮彁浜� + WAIT_CHECK, //寰呭鏍� + COMPLETE, //宸插畬鎴� + ; + + public static EquipmentTransferStatusEnum getInstance(String code) { + EquipmentTransferStatusEnum[] values = EquipmentTransferStatusEnum.values(); + for (EquipmentTransferStatusEnum value : values) { + if (value.name().equals(code)) { + return value; + } + } + return null; + } +} diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java new file mode 100644 index 0000000..8fc1465 --- /dev/null +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java @@ -0,0 +1,152 @@ +package org.jeecg.modules.eam.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 璁惧褰掑睘鍙樺姩 + * @Author: jeecg-boot + * @Date: 2025-05-13 + * @Version: V1.0 + */ +@Data +@TableName("eam_equipment_transfer") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "eam_equipment_transfer瀵硅薄", description = "璁惧褰掑睘鍙樺姩") +public class EamEquipmentTransfer implements Serializable { + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /** + * 鍒涘缓浜� + */ + @Excel(name = "鍒涘缓浜�", width = 15) + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /** + * 鏇存柊浜� + */ + @Excel(name = "鏇存柊浜�", width = 15) + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ + @Excel(name = "鍒犻櫎鏍囪", width = 15) + @ApiModelProperty(value = "鍒犻櫎鏍囪") + private Integer delFlag; + /** + * 鍗曟嵁鍙� + */ + @Excel(name = "鍗曟嵁鍙�", width = 15) + @ApiModelProperty(value = "鍗曟嵁鍙�") + private String code; + /** + * 璁惧ID + */ + @Excel(name = "璁惧ID", width = 15) + @ApiModelProperty(value = "璁惧ID") + private String equipmentId; + /** + * 璋冨嚭閮ㄩ棬 + */ + @Excel(name = "璋冨嚭閮ㄩ棬", width = 15) + @ApiModelProperty(value = "璋冨嚭閮ㄩ棬") + @Dict(dicCode = "mdc_production, production_name, id") + private String oldDepartId; + /** + * 璋冨叆閮ㄩ棬 + */ + @Excel(name = "璋冨叆閮ㄩ棬", width = 15) + @ApiModelProperty(value = "璋冨叆閮ㄩ棬") + @Dict(dicCode = "mdc_production, production_name, id") + private String newDepartId; + /** + * 鐢宠浜� + */ + @Excel(name = "鐢宠浜�", width = 15) + @ApiModelProperty(value = "鐢宠浜�") + @Dict(dicCode = "sys_user, realname, username") + private String reportUser; + /** + * 鍙樺姩鍘熷洜 + */ + @Excel(name = "鍙樺姩鍘熷洜", width = 15) + @ApiModelProperty(value = "鍙樺姩鍘熷洜") + private String transferReason; + /** + * 鍙樺姩鐘舵�� + */ + @Excel(name = "鍙樺姩鐘舵��", width = 15) + @ApiModelProperty(value = "鍙樺姩鐘舵��") + @Dict(dicCode = "equipment_transfer_status") + private String transferStatus; + /** + * 鍙樺姩鏃ユ湡 + */ + @ApiModelProperty(value = "鍙樺姩鏃ユ湡") + private Date transferTime; + /** + * 瀹℃牳浜� + */ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + @Dict(dicCode = "sys_user, realname, username") + private String approvalUser; + /** + * 瀹℃牳绫诲瀷 + */ + @ApiModelProperty(value = "瀹℃牳绫诲瀷") + @Dict(dicCode = "approved_rejected") + private String approvalDealType; + /** + * 瀹℃牳鎰忚 + */ + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalComment; + /** + * 瀹℃牳鏃堕棿 + */ + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + private Date approvalTime; + /** + * 澶囨敞 + */ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + + //鍒楄〃灞曠ず + @TableField(exist = false) + private String equipmentCode; + @TableField(exist = false) + private String equipmentName; + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java index 06784e5..d9a1ad8 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentLeanOutController.java @@ -194,7 +194,7 @@ } /** - * 缂栬緫 + * 瀹℃壒 * * @param request * @return diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java index f4ecc06..8775cfb 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentSealUpController.java @@ -18,6 +18,7 @@ import org.jeecg.modules.eam.constant.EquipmentSealUpStatusEnum; import org.jeecg.modules.eam.entity.EamEquipmentSealUp; import org.jeecg.modules.eam.request.EamEquipmentSealUpQuery; +import org.jeecg.modules.eam.request.EamEquipmentSealUpRequest; import org.jeecg.modules.eam.service.IEamEquipmentSealUpService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; @@ -175,13 +176,30 @@ } /** + * 鍚皝 + * + * @param id + * @return + */ + @AutoLog(value = "璁惧鍚皝-鍚皝") + @ApiOperation(value = "璁惧鍚皝-鍚皝", notes = "璁惧鍚皝-鍚皝") + @GetMapping(value = "/unseal") + public Result<?> unseal(@RequestParam(name = "id", required = true) String id) { + boolean b = eamEquipmentSealUpService.unseal(id); + if (!b) { + return Result.error("鎿嶄綔澶辫触锛�"); + } + return Result.OK("鎿嶄綔鎴愬姛!"); + } + + /** * 鎻愪氦 * * @param id * @return */ - @AutoLog(value = "璁惧灏佸瓨鍚皝-鎻愪氦") - @ApiOperation(value = "璁惧灏佸瓨鍚皝-鎻愪氦", notes = "璁惧灏佸瓨鍚皝-鎻愪氦") + @AutoLog(value = "璁惧灏佸瓨-鎻愪氦") + @ApiOperation(value = "璁惧灏佸瓨-鎻愪氦", notes = "璁惧灏佸瓨-鎻愪氦") @GetMapping(value = "/submit") public Result<?> submit(@RequestParam(name = "id", required = true) String id) { boolean b = eamEquipmentSealUpService.submit(id); @@ -190,4 +208,24 @@ } return Result.OK("鎿嶄綔鎴愬姛!"); } + + /** + * 瀹℃壒娴� + * + * @param request + * @return + */ + @AutoLog(value = "鍚皝灏佸瓨-瀹℃壒娴�") + @ApiOperation(value = "鍚皝灏佸瓨-瀹℃壒娴�", notes = "鍚皝灏佸瓨-瀹℃壒娴�") + @RequestMapping(value = "/approval", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> approval(@RequestBody EamEquipmentSealUpRequest request) { + if (request == null) { + return Result.error("娣诲姞鐨勫璞′笉鑳戒负绌猴紒"); + } + EamEquipmentSealUp entity = eamEquipmentSealUpService.approval(request); + if (entity == null) { + return Result.error("鎿嶄綔澶辫触锛�"); + } + return Result.OK("鎿嶄綔鎴愬姛!"); + } } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java index 4be8d17..f45c9b8 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentTransferController.java @@ -1,167 +1,217 @@ package org.jeecg.modules.eam.controller; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.jeecg.common.api.vo.Result; -import org.jeecg.common.system.query.QueryGenerator; -import org.jeecg.common.aspect.annotation.AutoLog; -import org.jeecg.common.util.oConvertUtils; -import org.jeecg.modules.eam.entity.EamEquipmentTransfer; -import org.jeecg.modules.eam.service.IEamEquipmentTransferService; -import java.util.Date; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.Feature; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecgframework.poi.excel.ExcelImportUtil; -import org.jeecgframework.poi.excel.def.NormalExcelConstants; -import org.jeecgframework.poi.excel.entity.ExportParams; -import org.jeecgframework.poi.excel.entity.ImportParams; -import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; -import org.springframework.web.servlet.ModelAndView; -import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.util.TranslateDictTextUtils; +import org.jeecg.modules.eam.constant.BusinessCodeConst; +import org.jeecg.modules.eam.constant.EquipmentTransferStatusEnum; +import org.jeecg.modules.eam.entity.EamEquipmentTransfer; +import org.jeecg.modules.eam.request.EamEquipmentTransferQuery; +import org.jeecg.modules.eam.request.EamEquipmentTransferRequest; +import org.jeecg.modules.eam.service.IEamEquipmentTransferService; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; - /** +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; + +/** * @Description: 璁惧褰掑睘鍙樺姩 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Slf4j -@Api(tags="璁惧褰掑睘鍙樺姩") +@Api(tags = "璁惧褰掑睘鍙樺姩") @RestController @RequestMapping("/eam/eamEquipmentTransfer") public class EamEquipmentTransferController extends JeecgController<EamEquipmentTransfer, IEamEquipmentTransferService> { - @Autowired - private IEamEquipmentTransferService eamEquipmentTransferService; - - /** - * 鍒嗛〉鍒楄〃鏌ヨ - * - * @param eamEquipmentTransfer - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ", notes="璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ") - @GetMapping(value = "/list") - public Result<?> queryPageList(EamEquipmentTransfer eamEquipmentTransfer, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - QueryWrapper<EamEquipmentTransfer> queryWrapper = QueryGenerator.initQueryWrapper(eamEquipmentTransfer, req.getParameterMap()); - Page<EamEquipmentTransfer> page = new Page<EamEquipmentTransfer>(pageNo, pageSize); - IPage<EamEquipmentTransfer> pageList = eamEquipmentTransferService.page(page, queryWrapper); - return Result.OK(pageList); - } - - /** - * 娣诲姞 - * - * @param eamEquipmentTransfer - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-娣诲姞") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-娣诲姞", notes="璁惧褰掑睘鍙樺姩-娣诲姞") - @PostMapping(value = "/add") - public Result<?> add(@RequestBody EamEquipmentTransfer eamEquipmentTransfer) { - eamEquipmentTransferService.save(eamEquipmentTransfer); - return Result.OK("娣诲姞鎴愬姛锛�"); - } - - /** - * 缂栬緫 - * - * @param eamEquipmentTransfer - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-缂栬緫") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-缂栬緫", notes="璁惧褰掑睘鍙樺姩-缂栬緫") - @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<?> edit(@RequestBody EamEquipmentTransfer eamEquipmentTransfer) { - eamEquipmentTransferService.updateById(eamEquipmentTransfer); - return Result.OK("缂栬緫鎴愬姛!"); - } - - /** - * 閫氳繃id鍒犻櫎 - * - * @param id - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎", notes="璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎") - @DeleteMapping(value = "/delete") - public Result<?> delete(@RequestParam(name="id",required=true) String id) { - eamEquipmentTransferService.removeById(id); - return Result.OK("鍒犻櫎鎴愬姛!"); - } - - /** - * 鎵归噺鍒犻櫎 - * - * @param ids - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎", notes="璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎") - @DeleteMapping(value = "/deleteBatch") - public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.eamEquipmentTransferService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); - } - - /** - * 閫氳繃id鏌ヨ - * - * @param id - * @return - */ - @AutoLog(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ") - @ApiOperation(value="璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ", notes="璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ") - @GetMapping(value = "/queryById") - public Result<?> queryById(@RequestParam(name="id",required=true) String id) { - EamEquipmentTransfer eamEquipmentTransfer = eamEquipmentTransferService.getById(id); - return Result.OK(eamEquipmentTransfer); - } + @Autowired + private IEamEquipmentTransferService eamEquipmentTransferService; + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + @Autowired + private ObjectMapper objectMapper; + @Autowired + private TranslateDictTextUtils translateDictTextUtils; - /** - * 瀵煎嚭excel - * - * @param request - * @param eamEquipmentTransfer - */ - @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, EamEquipmentTransfer eamEquipmentTransfer) { - return super.exportXls(request, eamEquipmentTransfer, EamEquipmentTransfer.class, "璁惧褰掑睘鍙樺姩"); - } + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param query + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ", notes = "璁惧褰掑睘鍙樺姩-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(EamEquipmentTransferQuery query, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Page<EamEquipmentTransfer> page = new Page<EamEquipmentTransfer>(pageNo, pageSize); + IPage<EamEquipmentTransfer> pageList = eamEquipmentTransferService.queryPageList(page, query); + return Result.OK(pageList); + } - /** - * 閫氳繃excel瀵煎叆鏁版嵁 - * - * @param request - * @param response - * @return - */ - @RequestMapping(value = "/importExcel", method = RequestMethod.POST) - public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, EamEquipmentTransfer.class); - } + /** + * 娣诲姞 + * + * @param request + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-娣诲姞") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-娣诲姞", notes = "璁惧褰掑睘鍙樺姩-娣诲姞") + @PostMapping(value = "/add") + public Result<?> add(@RequestBody EamEquipmentTransfer request) { + if (request == null) { + return Result.error("娣诲姞鐨勫璞′笉鑳戒负绌猴紒"); + } + request.setCode(businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TRANSFER_CODE_RULE)); + request.setTransferStatus(EquipmentTransferStatusEnum.WAIT_SUBMIT.name()); + request.setDelFlag(CommonConstant.DEL_FLAG_0); + boolean b = eamEquipmentTransferService.addTransfer(request); + if (!b) { + return Result.error("娣诲姞澶辫触锛�"); + } + return Result.OK("娣诲姞鎴愬姛锛�"); + } + /** + * 缂栬緫 + * + * @param request + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-缂栬緫") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-缂栬緫", notes = "璁惧褰掑睘鍙樺姩-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> edit(@RequestBody EamEquipmentTransfer request) { + if (request == null) { + return Result.error("缂栬緫鐨勫璞′笉鑳戒负绌猴紒"); + } + boolean b = eamEquipmentTransferService.editTransfer(request); + if (!b) { + return Result.error("缂栬緫澶辫触锛�"); + } + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎", notes = "璁惧褰掑睘鍙樺姩-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<?> delete(@RequestParam(name = "id", required = true) String id) { + EamEquipmentTransfer entity = eamEquipmentTransferService.getById(id); + if (entity != null) { + entity.setDelFlag(CommonConstant.DEL_FLAG_1); + eamEquipmentTransferService.updateById(entity); + } + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎", notes = "璁惧褰掑睘鍙樺姩-鎵归噺鍒犻櫎") + @DeleteMapping(value = "/deleteBatch") + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.eamEquipmentTransferService.removeByIds(Arrays.asList(ids.split(","))); + List<String> list = Arrays.asList(ids.split(",")); + list.forEach(id -> { + EamEquipmentTransfer entity = eamEquipmentTransferService.getById(id); + if (entity != null) { + entity.setDelFlag(CommonConstant.DEL_FLAG_1); + eamEquipmentTransferService.updateById(entity); + } + }); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ", notes = "璁惧褰掑睘鍙樺姩-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { + EamEquipmentTransfer equipmentTransfer = eamEquipmentTransferService.getById(id); + if (equipmentTransfer == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + try { + String json = objectMapper.writeValueAsString(equipmentTransfer); + JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); + translateDictTextUtils.translateField("reportUser", equipmentTransfer.getReportUser(), item, "sys_user,realname,username"); + translateDictTextUtils.translateField("newDepartId", equipmentTransfer.getNewDepartId(), item, "mdc_production,production_name,id"); + translateDictTextUtils.translateField("oldDepartId", equipmentTransfer.getOldDepartId(), item, "mdc_production,production_name,id"); + return Result.OK(item); + } catch (JsonProcessingException e) { + return Result.error("鏁版嵁杞瘧澶辫触锛�"); + } + } + + /** + * 鎻愪氦 + * + * @param id + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-鎻愪氦") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-鎻愪氦", notes = "璁惧褰掑睘鍙樺姩-鎻愪氦") + @GetMapping(value = "/submit") + public Result<?> submit(@RequestParam(name = "id", required = true) String id) { + boolean b = eamEquipmentTransferService.submit(id); + if (!b) { + return Result.error("鎿嶄綔澶辫触锛�"); + } + return Result.OK("鎿嶄綔鎴愬姛!"); + } + + /** + * 瀹℃壒娴� + * + * @param request + * @return + */ + @AutoLog(value = "璁惧褰掑睘鍙樺姩-瀹℃壒娴�") + @ApiOperation(value = "璁惧褰掑睘鍙樺姩-瀹℃壒娴�", notes = "璁惧褰掑睘鍙樺姩-瀹℃壒娴�") + @RequestMapping(value = "/approval", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> approval(@RequestBody EamEquipmentTransferRequest request) { + if (request == null) { + return Result.error("娣诲姞鐨勫璞′笉鑳戒负绌猴紒"); + } + EamEquipmentTransfer entity = eamEquipmentTransferService.approval(request); + if (entity == null) { + return Result.error("鎿嶄綔澶辫触锛�"); + } + return Result.OK("鎿嶄綔鎴愬姛!"); + } } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java index 5c78c33..9f91cce 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentSealUp.java @@ -16,91 +16,173 @@ import java.io.Serializable; import java.util.Date; + /** * @Description: 璁惧灏佸瓨鍚皝 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Data @TableName("eam_equipment_seal_up") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="eam_equipment_seal_up瀵硅薄", description="璁惧灏佸瓨鍚皝") +@ApiModel(value = "eam_equipment_seal_up瀵硅薄", description = "璁惧灏佸瓨鍚皝") public class EamEquipmentSealUp implements Serializable { - - /**涓婚敭*/ - @TableId(type = IdType.ASSIGN_ID) - @ApiModelProperty(value = "涓婚敭") - private String id; - /**鍒涘缓浜�*/ - @Excel(name = "鍒涘缓浜�", width = 15) - @ApiModelProperty(value = "鍒涘缓浜�") - private String createBy; - /**鍒涘缓鏃堕棿*/ - @ApiModelProperty(value = "鍒涘缓鏃堕棿") - private Date createTime; - /**鏇存柊浜�*/ - @Excel(name = "鏇存柊浜�", width = 15) - @ApiModelProperty(value = "鏇存柊浜�") - private String updateBy; - /**鏇存柊鏃堕棿*/ - @ApiModelProperty(value = "鏇存柊鏃堕棿") - private Date updateTime; - /**鍒犻櫎鏍囪*/ - @Excel(name = "鍒犻櫎鏍囪", width = 15) - @ApiModelProperty(value = "鍒犻櫎鏍囪") - private Integer delFlag; - /**璁惧ID*/ - @Excel(name = "璁惧ID", width = 15) - @ApiModelProperty(value = "璁惧ID") - private String equipmentId; - /**鍗曟嵁鍙�*/ - @Excel(name = "鍗曟嵁鍙�", width = 15) - @ApiModelProperty(value = "鍗曟嵁鍙�") - private String code; - /**鐢宠浜�*/ - @Excel(name = "鐢宠浜�", width = 15) - @ApiModelProperty(value = "鐢宠浜�") - @Dict(dicCode = "sys_user, realname, username") - private String reportUser; - /**灏佸瓨寮�濮嬫椂闂�*/ - @ApiModelProperty(value = "灏佸瓨寮�濮嬫椂闂�") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date sealStartTime; - /**灏佸瓨缁撴潫鏃堕棿*/ - @ApiModelProperty(value = "灏佸瓨缁撴潫鏃堕棿") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date sealEndTime; - /**灏佸瓨鍘熷洜*/ - @Excel(name = "灏佸瓨鍘熷洜", width = 15) - @ApiModelProperty(value = "灏佸瓨鍘熷洜") - private String sealUpReason; - /**灏佸瓨鐘舵��*/ - @Excel(name = "灏佸瓨鐘舵��", width = 15) - @ApiModelProperty(value = "灏佸瓨鐘舵��") - @Dict(dicCode = "equipment_seal_up_status") - private String sealStatus; - /**瀹℃牳浜�*/ - @Excel(name = "瀹℃牳浜�", width = 15) - @ApiModelProperty(value = "瀹℃牳浜�") - private String approvalUser; - /**瀹℃牳鏃堕棿*/ - @ApiModelProperty(value = "瀹℃牳鏃堕棿") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date approvalTime; - /**澶囨敞*/ - @Excel(name = "澶囨敞", width = 15) - @ApiModelProperty(value = "澶囨敞") - private String remark; - //鍒楄〃灞曠ず - @TableField(exist = false) - private String equipmentCode; - @TableField(exist = false) - private String equipmentName; + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /** + * 鍒涘缓浜� + */ + @Excel(name = "鍒涘缓浜�", width = 15) + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /** + * 鏇存柊浜� + */ + @Excel(name = "鏇存柊浜�", width = 15) + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ + @Excel(name = "鍒犻櫎鏍囪", width = 15) + @ApiModelProperty(value = "鍒犻櫎鏍囪") + private Integer delFlag; + /** + * 璁惧ID + */ + @Excel(name = "璁惧ID", width = 15) + @ApiModelProperty(value = "璁惧ID") + private String equipmentId; + /** + * 鍗曟嵁鍙� + */ + @Excel(name = "鍗曟嵁鍙�", width = 15) + @ApiModelProperty(value = "鍗曟嵁鍙�") + private String code; + /** + * 鐢宠浜� + */ + @Excel(name = "鐢宠浜�", width = 15) + @ApiModelProperty(value = "鐢宠浜�") + @Dict(dicCode = "sys_user, realname, username") + private String reportUser; + /** + * 灏佸瓨寮�濮嬫椂闂� + */ + @ApiModelProperty(value = "灏佸瓨寮�濮嬫椂闂�") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date sealStartTime; + /** + * 灏佸瓨缁撴潫鏃堕棿 + */ + @ApiModelProperty(value = "灏佸瓨缁撴潫鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date sealEndTime; + /** + * 灏佸瓨鍘熷洜 + */ + @Excel(name = "灏佸瓨鍘熷洜", width = 15) + @ApiModelProperty(value = "灏佸瓨鍘熷洜") + private String sealUpReason; + /** + * 灏佸瓨鐘舵�� + */ + @Excel(name = "灏佸瓨鐘舵��", width = 15) + @ApiModelProperty(value = "灏佸瓨鐘舵��") + @Dict(dicCode = "equipment_seal_up_status") + private String sealStatus; + /** + * 瀹℃牳浜� + */ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + private String approvalUser; + /** + * 瀹℃牳鏃堕棿 + */ + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + /** + * 澶囨敞 + */ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /** + * 瀹℃牳绫诲瀷 + */ + @Excel(name = "瀹℃牳绫诲瀷", width = 15) + @ApiModelProperty(value = "瀹℃牳绫诲瀷") + private String approvalDealType; + /** + * 瀹℃牳鎰忚 + */ + @Excel(name = "瀹℃牳鎰忚", width = 15) + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalComment; + /** + * 鍚皝鐢宠浜� + */ + @Excel(name = "鍚皝鐢宠浜�", width = 15) + @ApiModelProperty(value = "鍚皝鐢宠浜�") + private String unsealReportUser; + /** + * 鍚皝鍘熷洜 + */ + @Excel(name = "鍚皝鍘熷洜", width = 15) + @ApiModelProperty(value = "鍚皝鍘熷洜") + private String unsealReason; + /** + * 鍚皝瀹℃牳浜� + */ + @Excel(name = "鍚皝瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "鍚皝瀹℃牳浜�") + private String unsealApprovalUser; + /** + * 鍚皝瀹℃牳鏃堕棿 + */ + @Excel(name = "鍚皝瀹℃牳鏃堕棿", width = 15) + @ApiModelProperty(value = "鍚皝瀹℃牳鏃堕棿") + private Date unsealApprovalTime; + /** + * 鍚皝瀹℃牳绫诲瀷 + */ + @Excel(name = "鍚皝瀹℃牳绫诲瀷", width = 15) + @ApiModelProperty(value = "鍚皝瀹℃牳绫诲瀷") + private String unsealApprovalDealType; + /** + * 鍚皝瀹℃牳鎰忚 + */ + @Excel(name = "鍚皝瀹℃牳鎰忚", width = 15) + @ApiModelProperty(value = "鍚皝瀹℃牳鎰忚") + private String unsealApprovalComment; + + + //鍒楄〃灞曠ず + @TableField(exist = false) + private String equipmentCode; + @TableField(exist = false) + private String equipmentName; } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java index 1415cf9..8fc1465 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentTransfer.java @@ -1,6 +1,7 @@ package org.jeecg.modules.eam.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -8,85 +9,144 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; import org.jeecgframework.poi.excel.annotation.Excel; import java.io.Serializable; import java.util.Date; + /** * @Description: 璁惧褰掑睘鍙樺姩 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Data @TableName("eam_equipment_transfer") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) -@ApiModel(value="eam_equipment_transfer瀵硅薄", description="璁惧褰掑睘鍙樺姩") +@ApiModel(value = "eam_equipment_transfer瀵硅薄", description = "璁惧褰掑睘鍙樺姩") public class EamEquipmentTransfer implements Serializable { - - /**涓婚敭*/ - @TableId(type = IdType.ASSIGN_ID) + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "涓婚敭") - private String id; - /**鍒涘缓浜�*/ - @Excel(name = "鍒涘缓浜�", width = 15) + private String id; + /** + * 鍒涘缓浜� + */ + @Excel(name = "鍒涘缓浜�", width = 15) @ApiModelProperty(value = "鍒涘缓浜�") - private String createBy; - /**鍒涘缓鏃堕棿*/ + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ @ApiModelProperty(value = "鍒涘缓鏃堕棿") - private Date createTime; - /**鏇存柊浜�*/ - @Excel(name = "鏇存柊浜�", width = 15) + private Date createTime; + /** + * 鏇存柊浜� + */ + @Excel(name = "鏇存柊浜�", width = 15) @ApiModelProperty(value = "鏇存柊浜�") - private String updateBy; - /**鏇存柊鏃堕棿*/ + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ @ApiModelProperty(value = "鏇存柊鏃堕棿") - private Date updateTime; - /**鍒犻櫎鏍囪*/ - @Excel(name = "鍒犻櫎鏍囪", width = 15) + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ + @Excel(name = "鍒犻櫎鏍囪", width = 15) @ApiModelProperty(value = "鍒犻櫎鏍囪") - private Integer delFlag; - /**鍗曟嵁鍙�*/ - @Excel(name = "鍗曟嵁鍙�", width = 15) + private Integer delFlag; + /** + * 鍗曟嵁鍙� + */ + @Excel(name = "鍗曟嵁鍙�", width = 15) @ApiModelProperty(value = "鍗曟嵁鍙�") - private String code; - /**璁惧ID*/ - @Excel(name = "璁惧ID", width = 15) + private String code; + /** + * 璁惧ID + */ + @Excel(name = "璁惧ID", width = 15) @ApiModelProperty(value = "璁惧ID") - private String equipmentId; - /**璋冨嚭閮ㄩ棬*/ - @Excel(name = "璋冨嚭閮ㄩ棬", width = 15) + private String equipmentId; + /** + * 璋冨嚭閮ㄩ棬 + */ + @Excel(name = "璋冨嚭閮ㄩ棬", width = 15) @ApiModelProperty(value = "璋冨嚭閮ㄩ棬") - private String oldDepartId; - /**璋冨叆閮ㄩ棬*/ - @Excel(name = "璋冨叆閮ㄩ棬", width = 15) + @Dict(dicCode = "mdc_production, production_name, id") + private String oldDepartId; + /** + * 璋冨叆閮ㄩ棬 + */ + @Excel(name = "璋冨叆閮ㄩ棬", width = 15) @ApiModelProperty(value = "璋冨叆閮ㄩ棬") - private String newDepartId; - /**鐢宠浜�*/ - @Excel(name = "鐢宠浜�", width = 15) + @Dict(dicCode = "mdc_production, production_name, id") + private String newDepartId; + /** + * 鐢宠浜� + */ + @Excel(name = "鐢宠浜�", width = 15) @ApiModelProperty(value = "鐢宠浜�") - private String reportUser; - /**鍙樺姩鍘熷洜*/ - @Excel(name = "鍙樺姩鍘熷洜", width = 15) + @Dict(dicCode = "sys_user, realname, username") + private String reportUser; + /** + * 鍙樺姩鍘熷洜 + */ + @Excel(name = "鍙樺姩鍘熷洜", width = 15) @ApiModelProperty(value = "鍙樺姩鍘熷洜") - private String transferReason; - /**鍙樺姩鐘舵��*/ - @Excel(name = "鍙樺姩鐘舵��", width = 15) + private String transferReason; + /** + * 鍙樺姩鐘舵�� + */ + @Excel(name = "鍙樺姩鐘舵��", width = 15) @ApiModelProperty(value = "鍙樺姩鐘舵��") - private String transferStatus; - /**鍙樺姩鏃ユ湡*/ + @Dict(dicCode = "equipment_transfer_status") + private String transferStatus; + /** + * 鍙樺姩鏃ユ湡 + */ @ApiModelProperty(value = "鍙樺姩鏃ユ湡") - private Date transferTime; - /**瀹℃牳浜�*/ - @Excel(name = "瀹℃牳浜�", width = 15) + private Date transferTime; + /** + * 瀹℃牳浜� + */ + @Excel(name = "瀹℃牳浜�", width = 15) @ApiModelProperty(value = "瀹℃牳浜�") - private String approvalUser; - /**瀹℃牳鏃堕棿*/ + @Dict(dicCode = "sys_user, realname, username") + private String approvalUser; + /** + * 瀹℃牳绫诲瀷 + */ + @ApiModelProperty(value = "瀹℃牳绫诲瀷") + @Dict(dicCode = "approved_rejected") + private String approvalDealType; + /** + * 瀹℃牳鎰忚 + */ + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalComment; + /** + * 瀹℃牳鏃堕棿 + */ @ApiModelProperty(value = "瀹℃牳鏃堕棿") - private Date approvalTime; - /**澶囨敞*/ - @Excel(name = "澶囨敞", width = 15) + private Date approvalTime; + /** + * 澶囨敞 + */ + @Excel(name = "澶囨敞", width = 15) @ApiModelProperty(value = "澶囨敞") - private String remark; + private String remark; + + //鍒楄〃灞曠ず + @TableField(exist = false) + private String equipmentCode; + @TableField(exist = false) + private String equipmentName; + } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentTransferMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentTransferMapper.java index 81cf478..a009088 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentTransferMapper.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamEquipmentTransferMapper.java @@ -1,17 +1,27 @@ package org.jeecg.modules.eam.mapper; -import java.util.List; - +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamEquipmentTransfer; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 璁惧褰掑睘鍙樺姩 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ public interface EamEquipmentTransferMapper extends BaseMapper<EamEquipmentTransfer> { + /** + * 鍒嗛〉鏌ヨ + * + * @param page + * @param queryWrapper + * @return + */ + IPage<EamEquipmentTransfer> queryPageList(Page<EamEquipmentTransfer> page, @Param(Constants.WRAPPER) QueryWrapper<EamEquipmentTransfer> queryWrapper); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentTransferMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentTransferMapper.xml index 7262154..5777d9c 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentTransferMapper.xml +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentTransferMapper.xml @@ -2,4 +2,11 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.eam.mapper.EamEquipmentTransferMapper"> + <select id="queryPageList" resultType="org.jeecg.modules.eam.entity.EamEquipmentTransfer"> + select wmo.*, e.equipment_code, e.equipment_name + from eam_equipment_transfer wmo + inner join eam_equipment e + on wmo.equipment_id = e.id + ${ew.customSqlSegment} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java index 33700de..f24336a 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentSealUpRequest.java @@ -1,17 +1,12 @@ package org.jeecg.modules.eam.request; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; -import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; @@ -20,67 +15,146 @@ /** * @Description: 璁惧灏佸瓨鍚皝 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class EamEquipmentSealUpRequest extends FlowTaskVo implements Serializable { - - /**涓婚敭*/ + + /** + * 涓婚敭 + */ @ApiModelProperty(value = "涓婚敭") - private String id; - /**鍒涘缓浜�*/ + private String id; + /** + * 鍒涘缓浜� + */ @ApiModelProperty(value = "鍒涘缓浜�") - private String createBy; - /**鍒涘缓鏃堕棿*/ + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ @ApiModelProperty(value = "鍒涘缓鏃堕棿") - private Date createTime; - /**鏇存柊浜�*/ + private Date createTime; + /** + * 鏇存柊浜� + */ @ApiModelProperty(value = "鏇存柊浜�") - private String updateBy; - /**鏇存柊鏃堕棿*/ + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ @ApiModelProperty(value = "鏇存柊鏃堕棿") - private Date updateTime; - /**鍒犻櫎鏍囪*/ + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ @ApiModelProperty(value = "鍒犻櫎鏍囪") - private Integer delFlag; - /**璁惧ID*/ + private Integer delFlag; + /** + * 璁惧ID + */ @ApiModelProperty(value = "璁惧ID") - private String equipmentId; - /**鍗曟嵁鍙�*/ + private String equipmentId; + /** + * 鍗曟嵁鍙� + */ @ApiModelProperty(value = "鍗曟嵁鍙�") - private String code; - /**鐢宠浜�*/ + private String code; + /** + * 鐢宠浜� + */ @ApiModelProperty(value = "鐢宠浜�") - private String reportUser; - /**灏佸瓨寮�濮嬫椂闂�*/ + private String reportUser; + /** + * 灏佸瓨寮�濮嬫椂闂� + */ @ApiModelProperty(value = "灏佸瓨寮�濮嬫椂闂�") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date sealStartTime; - /**灏佸瓨缁撴潫鏃堕棿*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date sealStartTime; + /** + * 灏佸瓨缁撴潫鏃堕棿 + */ @ApiModelProperty(value = "灏佸瓨缁撴潫鏃堕棿") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date sealEndTime; - /**灏佸瓨鍘熷洜*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date sealEndTime; + /** + * 灏佸瓨鍘熷洜 + */ @ApiModelProperty(value = "灏佸瓨鍘熷洜") - private String sealUpReason; - /**灏佸瓨鐘舵��*/ + private String sealUpReason; + /** + * 灏佸瓨鐘舵�� + */ @ApiModelProperty(value = "灏佸瓨鐘舵��") - @Dict(dicCode = "equipment_seal_up_status") - private String sealStatus; - /**瀹℃牳浜�*/ + @Dict(dicCode = "equipment_seal_up_status") + private String sealStatus; + /** + * 瀹℃牳浜� + */ @ApiModelProperty(value = "瀹℃牳浜�") - private String approvalUser; - /**瀹℃牳鏃堕棿*/ + private String approvalUser; + /** + * 瀹℃牳鏃堕棿 + */ @ApiModelProperty(value = "瀹℃牳鏃堕棿") - @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date approvalTime; - /**澶囨敞*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date approvalTime; + /** + * 澶囨敞 + */ @ApiModelProperty(value = "澶囨敞") - private String remark; + private String remark; + + /** + * 瀹℃牳绫诲瀷 + */ + @ApiModelProperty(value = "瀹℃牳绫诲瀷") + @Dict(dicCode = "approved_rejected") + private String approvalDealType; + /** + * 瀹℃牳鎰忚 + */ + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalComment; + /** + * 鍚皝鐢宠浜� + */ + @ApiModelProperty(value = "鍚皝鐢宠浜�") + private String unsealReportUser; + /** + * 鍚皝鍘熷洜 + */ + @ApiModelProperty(value = "鍚皝鍘熷洜") + private String unsealReason; + /** + * 鍚皝瀹℃牳浜� + */ + @ApiModelProperty(value = "鍚皝瀹℃牳浜�") + private String unsealApprovalUser; + /** + * 鍚皝瀹℃牳鏃堕棿 + */ + @ApiModelProperty(value = "鍚皝瀹℃牳鏃堕棿") + private Date unsealApprovalTime; + /** + * 鍚皝瀹℃牳绫诲瀷 + */ + @ApiModelProperty(value = "鍚皝瀹℃牳绫诲瀷") + @Dict(dicCode = "approved_rejected") + private String unsealApprovalDealType; + /** + * 鍚皝瀹℃牳鎰忚 + */ + @ApiModelProperty(value = "鍚皝瀹℃牳鎰忚") + private String unsealApprovalComment; + + //鍒楄〃灞曠ず + private String equipmentCode; + private String equipmentName; } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferQuery.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferQuery.java new file mode 100644 index 0000000..8038f71 --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferQuery.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.eam.request; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class EamEquipmentTransferQuery { + private String code; + private String equipmentId; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date leanDateBegin; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date leanDateEnd; + private String sealStatus; + + private String column; + private String order; +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java new file mode 100644 index 0000000..612227e --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamEquipmentTransferRequest.java @@ -0,0 +1,126 @@ +package org.jeecg.modules.eam.request; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 璁惧褰掑睘鍙樺姩 + * @Author: jeecg-boot + * @Date: 2025-05-13 + * @Version: V1.0 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class EamEquipmentTransferRequest extends FlowTaskVo implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "涓婚敭") + private String id; + /** + * 鍒涘缓浜� + */ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /** + * 鏇存柊浜� + */ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; + /** + * 鍒犻櫎鏍囪 + */ + @ApiModelProperty(value = "鍒犻櫎鏍囪") + private Integer delFlag; + /** + * 鍗曟嵁鍙� + */ + @ApiModelProperty(value = "鍗曟嵁鍙�") + private String code; + /** + * 璁惧ID + */ + @ApiModelProperty(value = "璁惧ID") + private String equipmentId; + /** + * 璋冨嚭閮ㄩ棬 + */ + @ApiModelProperty(value = "璋冨嚭閮ㄩ棬") + private String oldDepartId; + /** + * 璋冨叆閮ㄩ棬 + */ + @ApiModelProperty(value = "璋冨叆閮ㄩ棬") + private String newDepartId; + /** + * 鐢宠浜� + */ + @ApiModelProperty(value = "鐢宠浜�") + private String reportUser; + /** + * 鍙樺姩鍘熷洜 + */ + @ApiModelProperty(value = "鍙樺姩鍘熷洜") + private String transferReason; + /** + * 鍙樺姩鐘舵�� + */ + @ApiModelProperty(value = "鍙樺姩鐘舵��") + private String transferStatus; + /** + * 鍙樺姩鏃ユ湡 + */ + @ApiModelProperty(value = "鍙樺姩鏃ユ湡") + private Date transferTime; + /** + * 瀹℃牳浜� + */ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + private String approvalUser; + /** + * 瀹℃牳鏃堕棿 + */ + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + private Date approvalTime; + /** + * 瀹℃牳绫诲瀷 + */ + @Excel(name = "瀹℃牳绫诲瀷", width = 15) + @ApiModelProperty(value = "瀹℃牳绫诲瀷") + private String approvalDealType; + /** + * 瀹℃牳鎰忚 + */ + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalComment; + /** + * 澶囨敞 + */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + //鍒楄〃灞曠ず + @TableField(exist = false) + private String equipmentCode; + @TableField(exist = false) + private String equipmentName; + +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java index fcf8915..dc0edca 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentSealUpService.java @@ -41,6 +41,14 @@ boolean editSealUp(EamEquipmentSealUp request); /** + * 鍚皝鐢宠 + * + * @param id + * @return + */ + boolean unseal(String id); + + /** * 鎻愪氦鐢宠 * * @param id diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentTransferService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentTransferService.java index 6659b86..beecfed 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentTransferService.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentTransferService.java @@ -1,14 +1,59 @@ package org.jeecg.modules.eam.service; -import org.jeecg.modules.eam.entity.EamEquipmentTransfer; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.eam.entity.EamEquipmentTransfer; +import org.jeecg.modules.eam.request.EamEquipmentTransferQuery; +import org.jeecg.modules.eam.request.EamEquipmentTransferRequest; /** * @Description: 璁惧褰掑睘鍙樺姩 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ public interface IEamEquipmentTransferService extends IService<EamEquipmentTransfer> { + /** + * 鍒嗛〉鏌ヨ + * + * @param page + * @param query + * @return + */ + IPage<EamEquipmentTransfer> queryPageList(Page<EamEquipmentTransfer> page, EamEquipmentTransferQuery query); + + /** + * 娣诲姞灏佸瓨璁板綍 + * + * @param request + * @return + */ + boolean addTransfer(EamEquipmentTransfer request); + + /** + * 鎻愪氦鐢宠 + * + * @param id + * @return + */ + boolean submit(String id); + + /** + * 瀹℃壒娴佺▼鎺у埗 + * + * @param request + * @return + */ + EamEquipmentTransfer approval(EamEquipmentTransferRequest request); + + /** + * 缂栬緫 + * + * @param request + * @return + */ + boolean editTransfer(EamEquipmentTransfer request); + } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java index 494fba5..c36f796 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentLeanOutServiceImpl.java @@ -301,6 +301,9 @@ } else { //璁剧疆entity entity.setLeanStatus(EquipmentLeanOutStatusEnum.COMPLETE.name()); + // 淇敼璁惧鐘舵�� + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); + eamEquipmentService.updateById(equipment); } break; // 褰掕繕 diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java index 90afff0..b02edfc 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentSealUpServiceImpl.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -10,6 +11,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.DataBaseConstant; @@ -18,7 +20,6 @@ import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.eam.constant.AssetStatusEnum; import org.jeecg.modules.eam.constant.BusinessCodeConst; -import org.jeecg.modules.eam.constant.EquipmentLeanOutStatusEnum; import org.jeecg.modules.eam.constant.EquipmentSealUpStatusEnum; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentSealUp; @@ -121,7 +122,6 @@ } else { queryWrapper.orderByDesc("wmo.create_time"); } - return equipmentSealUpMapper.queryPageList(page, queryWrapper); } @@ -174,12 +174,57 @@ @Override @Transactional(rollbackFor = Exception.class) + public boolean unseal(String id) { + EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(id); + if (entity == null) { + throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!EquipmentSealUpStatusEnum.SEALED.name().equals(entity.getSealStatus())) { + throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�"); + } + //妫�鏌ヨ澶� + EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紒"); + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫灏佸瓨璁板綍锛�"); + } + //鍚姩瀹℃壒娴佺▼ + flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧鍚皝", + entity.getId(), "IEamEquipmentSealUpService", "equipment_unseal", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", entity.getId()); + variables.put("organization", "鏂板鍚皝榛樿鍚姩娴佺▼"); + variables.put("comment", "鏂板鍚皝榛樿鍚姩娴佺▼"); + variables.put("proofreading", true); + // 鍒嗛厤缁欒澶囩鐞嗗憳 + List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0004); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰璁惧绠$悊鍛橈紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + variables.put("NextAssignee", usernames); + Result result = flowDefinitionService.startProcessInstanceByKey("equipment_unseal", variables); + if (result != null) { + entity.setSealEndTime(new Date()); + entity.setSealStatus(EquipmentSealUpStatusEnum.WAIT_UNSEALING_AUDIT.name()); + //淇濆瓨宸ュ崟 + equipmentSealUpMapper.updateById(entity); + return result.isSuccess(); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) public boolean submit(String id) { EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(id); if (entity == null) { throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); } - if (!EquipmentLeanOutStatusEnum.WAIT_SUBMIT.name().equals(entity.getSealStatus())) { + if (!EquipmentSealUpStatusEnum.WAIT_SUBMIT.name().equals(entity.getSealStatus())) { throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�"); } //妫�鏌ヨ澶� @@ -234,7 +279,128 @@ @Override @Transactional(rollbackFor = Exception.class) public EamEquipmentSealUp approval(EamEquipmentSealUpRequest request) { - return null; + EamEquipmentSealUp entity = equipmentSealUpMapper.selectById(request.getId()); + if (entity == null) { + throw new JeecgBootException("瀹℃壒鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�"); + } + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒"); + } + request.setApprovalUser(user.getUsername()); + // 鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�"); + } + + boolean userAuthorized = isUserAuthorized(flowMyBusiness, user); + if (!userAuthorized) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�"); + } + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒"); + } + + EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒"); + } + + EquipmentSealUpStatusEnum status = EquipmentSealUpStatusEnum.getInstance(entity.getSealStatus()); + if (status == null) { + return null; + } + //娴佺▼鍙橀噺 + Map<String, Object> values = new HashMap<>(); + switch (status) { + // 瀹℃壒 + case WAIT_CHECK: + //鎵ц瀹屾垚 + values.put("dataId", entity.getId()); + values.put("organization", request.getApprovalComment()); + values.put("comment", request.getApprovalComment()); + values.put("approvalDealType", request.getApprovalDealType()); + request.setComment(request.getApprovalComment()); + entity.setApprovalUser(user.getUsername());// 瀹℃牳浜� + entity.setApprovalComment(request.getApprovalComment());// 瀹℃牳鎰忚 + entity.setApprovalTime(new Date());// 瀹℃牳鏃堕棿 + entity.setApprovalDealType(request.getApprovalDealType()); // 瀹℃壒绫诲瀷 + // 楠岃瘉閫氳繃杩樻槸椹冲洖 + if (request.getApprovalDealType().equals("1")) { + //璁剧疆entity + entity.setSealStatus(EquipmentSealUpStatusEnum.SEALED.name()); + List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getReportUser())); + values.put("NextAssignee", userApprovalList); + } else { + //璁剧疆entity + entity.setSealStatus(EquipmentSealUpStatusEnum.WAIT_SUBMIT.name()); + // 淇敼璁惧鐘舵�� + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); + eamEquipmentService.updateById(equipment); + } + break; + // 宸插皝瀛� + case WAIT_UNSEALING_AUDIT: + values.put("dataId", entity.getId()); + values.put("organization", request.getUnsealApprovalComment()); + values.put("comment", request.getUnsealApprovalComment()); + request.setComment(request.getUnsealApprovalComment()); + // 楠岃瘉閫氳繃杩樻槸椹冲洖 + if (request.getUnsealApprovalDealType().equals("1")) { + //璁剧疆entity + entity.setSealStatus(EquipmentSealUpStatusEnum.COMPLETE.name()); + // 淇敼璁惧鐘舵�� + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); + } else { + //璁剧疆entity + entity.setSealStatus(EquipmentSealUpStatusEnum.SEALED.name()); + entity.setSealEndTime(null); + } + entity.setUnsealApprovalUser(user.getUsername()); + entity.setUnsealApprovalComment(request.getUnsealApprovalComment()); + entity.setUnsealApprovalTime(new Date()); + // 淇敼璁惧鐘舵�� + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); + eamEquipmentService.updateById(equipment); + break; + } + request.setValues(values); + + // 瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(request); + if (!result.isSuccess()) { + throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�"); + } + //淇濆瓨宸ュ崟 + equipmentSealUpMapper.updateById(entity); + return entity; + } + + /** + * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁姝ゆ潈闄� + * + * @param flowMyBusiness + * @param user + * @return + */ + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; } @Override diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java index 1eb1313..de1b2b1 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentTransferServiceImpl.java @@ -1,19 +1,361 @@ package org.jeecg.modules.eam.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.DataBaseConstant; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; +import org.jeecg.modules.eam.constant.*; +import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentTransfer; import org.jeecg.modules.eam.mapper.EamEquipmentTransferMapper; +import org.jeecg.modules.eam.request.EamEquipmentTransferQuery; +import org.jeecg.modules.eam.request.EamEquipmentTransferRequest; +import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamEquipmentTransferService; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.system.vo.UserSelector; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** * @Description: 璁惧褰掑睘鍙樺姩 * @Author: jeecg-boot - * @Date: 2025-05-13 + * @Date: 2025-05-13 * @Version: V1.0 */ -@Service -public class EamEquipmentTransferServiceImpl extends ServiceImpl<EamEquipmentTransferMapper, EamEquipmentTransfer> implements IEamEquipmentTransferService { +@Service("IEamEquipmentTransferService") +public class EamEquipmentTransferServiceImpl extends ServiceImpl<EamEquipmentTransferMapper, EamEquipmentTransfer> implements IEamEquipmentTransferService, FlowCallBackServiceI { + + @Resource + private EamEquipmentTransferMapper equipmentTransferMapper; + @Autowired + private IEamEquipmentService eamEquipmentService; + @Autowired + private FlowCommonService flowCommonService; + @Autowired + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; + @Autowired + private IFlowTaskService flowTaskService; + + @Autowired + private ISysUserService sysUserService; + + @Override + public IPage<EamEquipmentTransfer> queryPageList(Page<EamEquipmentTransfer> page, EamEquipmentTransferQuery query) { + QueryWrapper<EamEquipmentTransfer> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0); + //鐢ㄦ埛鏁版嵁鏉冮檺 + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + return page; + } + if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) { + //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧 + List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(",")); + queryWrapper.in("e.equipment_code", equipArr); + } else { + //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶� + queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId()); + } + //鎺у埗寰呮彁浜ょ姸鎬佺殑鏁版嵁鍙兘鏈汉鏌ョ湅 + queryWrapper.and(i -> i.ne("wmo.transfer_status", EquipmentTransferStatusEnum.WAIT_SUBMIT).or().eq("wmo.report_user", sysUser.getUsername())); + //鏌ヨ鏉′欢杩囨护 + if (query != null) { + if (StringUtils.isNotBlank(query.getEquipmentId())) { + queryWrapper.eq("wmo.equipment_id", query.getEquipmentId()); + } + if (StringUtils.isNotBlank(query.getCode())) { + queryWrapper.like("wmo.code", query.getCode()); + } + if (StringUtils.isNotBlank(query.getSealStatus())) { + queryWrapper.eq("wmo.transfer_status", query.getSealStatus()); + } + if (query.getLeanDateBegin() != null && query.getLeanDateEnd() != null) { + queryWrapper.between("wmo.lean_start_time", query.getLeanDateBegin(), query.getLeanDateEnd()); + } + //鎺掑簭 + if (StringUtils.isNotBlank(query.getColumn()) && StringUtils.isNotBlank(query.getOrder())) { + String column = query.getColumn(); + if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) { + column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX)); + } + if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(query.getOrder())) { + queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column)); + } else { + queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column)); + } + } else { + queryWrapper.orderByDesc("wmo.create_time"); + } + } else { + queryWrapper.orderByDesc("wmo.create_time"); + } + + return equipmentTransferMapper.queryPageList(page, queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addTransfer(EamEquipmentTransfer request) { + //妫�鏌ヨ澶� + EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紒"); + } + if (!AssetStatusEnum.NORMAL.name().equals(equipment.getAssetStatus())) { + throw new JeecgBootException("姝よ澶囧綋鍓嶈祫浜х姸鎬佷笉鍏佽鍊熷嚭锛�"); + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶娣诲姞鍊熺敤璁板綍锛�"); + } + if (equipment.getOrgId().equals(request.getNewDepartId())) { + throw new JeecgBootException("褰撳墠璁惧灞炰簬姝よ溅闂达紝涓嶉渶瑕佸彉鍔紒"); + } + request.setOldDepartId(equipment.getOrgId()); + request.setReportUser(sysUser.getUsername()); + return equipmentTransferMapper.insert(request) > 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean submit(String id) { + EamEquipmentTransfer entity = equipmentTransferMapper.selectById(id); + if (entity == null) { + throw new JeecgBootException("瑕佹彁浜ょ殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!EquipmentTransferStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) { + throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�"); + } + //妫�鏌ヨ澶� + EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紒"); + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫杞璁板綍锛�"); + } + UpdateWrapper<EamEquipmentTransfer> updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("transfer_status", EquipmentSealUpStatusEnum.WAIT_SUBMIT.name()); + updateWrapper.eq("id", id); + updateWrapper.eq("report_user", sysUser.getUsername()); + boolean success = super.update(updateWrapper); + if (success) { + equipment.setAssetStatus(AssetStatusEnum.DEALT.name()); // 璁惧杞 + eamEquipmentService.updateById(equipment); + } + //鍚姩瀹℃壒娴佺▼ + flowCommonService.initActBusiness("宸ュ崟鍙�:" + entity.getCode() + ";璁惧缂栧彿: " + equipment.getEquipmentCode() + ";杩涜璁惧杞", + entity.getId(), "IEamEquipmentTransferService", "equipment_transfer", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", entity.getId()); + variables.put("organization", entity.getTransferReason()); + variables.put("comment", entity.getTransferReason()); + variables.put("proofreading", true); + // 鍒嗛厤缁欒澶囩鐞嗗憳 + List<UserSelector> userSelectors = sysUserService.selectOperatorList(equipment.getEquipmentCode(), equipment.getOrgId(), BusinessCodeConst.PCR0004); + if (CollectionUtil.isEmpty(userSelectors)) { + throw new JeecgBootException("璁惧鏈垎閰嶇粰璁惧绠$悊鍛橈紝鏃犳硶杩涘叆涓嬬骇瀹℃壒锛�"); + } + List<String> usernames = userSelectors.stream().map(UserSelector::getUsername).collect(Collectors.toList()); + variables.put("NextAssignee", usernames); + Result result = flowDefinitionService.startProcessInstanceByKey("equipment_transfer", variables); + if (result != null) { + entity.setTransferTime(new Date()); + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_CHECK.name()); + //淇濆瓨宸ュ崟 + equipmentTransferMapper.updateById(entity); + return result.isSuccess(); + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + @EquipmentHistoryLog(operationTag = EquipmentOperationTagEnum.TRANSFERRED, businessTable = "eam_equipment_transfer") + public EamEquipmentTransfer approval(EamEquipmentTransferRequest request) { + EamEquipmentTransfer entity = equipmentTransferMapper.selectById(request.getId()); + if (entity == null) { + throw new JeecgBootException("瀹℃壒鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�"); + } + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("鏈幏鍙栧埌鐧诲綍鐢ㄦ埛锛岃閲嶆柊鐧诲綍鍚庡啀璇曪紒"); + } + request.setApprovalUser(user.getUsername()); + // 鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = flowMyBusinessService.getFlowMyBusiness(request.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼瀹炰緥涓嶅瓨鍦紝璇峰埛鏂板悗閲嶈瘯锛�"); + } + + boolean userAuthorized = isUserAuthorized(flowMyBusiness, user); + if (!userAuthorized) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔★紝璇峰埛鏂板悗閲嶈瘯锛�"); + } + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰嗭紒"); + } + + EamEquipment equipment = eamEquipmentService.getById(entity.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紝璇锋鏌ワ紒"); + } + + EquipmentTransferStatusEnum status = EquipmentTransferStatusEnum.getInstance(entity.getTransferStatus()); + if (status == null) { + return null; + } + //娴佺▼鍙橀噺 + Map<String, Object> values = new HashMap<>(); + // 瀹℃壒 + if (status == EquipmentTransferStatusEnum.WAIT_CHECK) {//鎵ц瀹屾垚 + values.put("dataId", entity.getId()); + values.put("organization", request.getApprovalComment()); + values.put("comment", request.getApprovalComment()); + values.put("approvalDealType", request.getApprovalDealType()); + request.setComment(request.getApprovalComment()); + entity.setApprovalUser(user.getUsername());// 瀹℃牳浜� + entity.setApprovalComment(request.getApprovalComment());// 瀹℃牳鎰忚 + entity.setApprovalTime(new Date());// 瀹℃牳鏃堕棿 + entity.setApprovalDealType(request.getApprovalDealType()); // 瀹℃壒绫诲瀷 + // 楠岃瘉閫氳繃杩樻槸椹冲洖 + if (request.getApprovalDealType().equals("1")) { + //璁剧疆entity + entity.setTransferStatus(EquipmentTransferStatusEnum.COMPLETE.name()); + List<String> userApprovalList = new ArrayList<>(Collections.singletonList(entity.getReportUser())); + values.put("NextAssignee", userApprovalList); + // 淇敼璁惧鐘舵�� + equipment.setAssetStatus(AssetStatusEnum.NORMAL.name()); + } else { + //璁剧疆entity + entity.setTransferStatus(EquipmentTransferStatusEnum.WAIT_SUBMIT.name()); + // 淇敼璁惧鐘舵�� + } + entity.setApprovalUser(user.getUsername()); + entity.setApprovalComment(request.getApprovalComment()); + entity.setApprovalTime(new Date()); + eamEquipmentService.updateById(equipment); + } + request.setValues(values); + + // 瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(request); + if (!result.isSuccess()) { + throw new JeecgBootException("瀹℃壒澶辫触锛岃鍒锋柊鏌ョ湅锛�"); + } + //淇濆瓨宸ュ崟 + equipmentTransferMapper.updateById(entity); + return entity; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean editTransfer(EamEquipmentTransfer request) { + EamEquipmentTransfer entity = equipmentTransferMapper.selectById(request.getId()); + if (entity == null) { + throw new JeecgBootException("瑕佺紪杈戠殑鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒"); + } + if (!EquipmentSealUpStatusEnum.WAIT_SUBMIT.name().equals(entity.getTransferStatus())) { + throw new JeecgBootException("褰撳墠鏁版嵁鐘舵�佷笉鍏佽缂栬緫锛�"); + } + //妫�鏌ヨ澶� + EamEquipment equipment = eamEquipmentService.getById(request.getEquipmentId()); + if (equipment == null) { + throw new JeecgBootException("璁惧涓嶅瓨鍦紒"); + } + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser == null) { + throw new JeecgBootException("褰撳墠鐢ㄦ埛鏃犳硶缂栬緫鍊熺敤璁板綍锛�"); + } + UpdateWrapper<EamEquipmentTransfer> updateWrapper = new UpdateWrapper<>(); + updateWrapper.set("equipment_id", request.getEquipmentId()); + updateWrapper.set("remark", request.getRemark()); + updateWrapper.set("transfer_reason", request.getTransferReason()); + updateWrapper.set("old_depart_id", equipment.getOrgId()); + updateWrapper.set("new_depart_id", request.getNewDepartId()); + updateWrapper.eq("id", request.getId()); + updateWrapper.eq("report_user", sysUser.getUsername()); + return super.update(updateWrapper); + } + + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + /** + * 鍒ゆ柇鐢ㄦ埛鏄惁鎷ユ湁姝ゆ潈闄� + * + * @param flowMyBusiness + * @param user + * @return + */ + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } } diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/db/tms_2025/tms-init-20250522.sql b/lxzn-module-system/lxzn-system-start/src/main/resources/db/tms_2025/tms-init-20250522.sql new file mode 100644 index 0000000..47fc1db --- /dev/null +++ b/lxzn-module-system/lxzn-system-start/src/main/resources/db/tms_2025/tms-init-20250522.sql @@ -0,0 +1,1240 @@ +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tools_classify]') AND type in (N'U')) DROP TABLE [dbo].[tools_classify]; +CREATE TABLE [dbo].[tools_classify]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(255), + type_name VARCHAR(128) NOT NULL, + parent_id VARCHAR(32) NOT NULL, + leaf_flag VARCHAR(6), + seq VARCHAR(255), + status VARCHAR(6), + rank INT NOT NULL, + encoding_type VARCHAR(32), + para_type_flag VARCHAR(32) NOT NULL, + remark VARCHAR(128), + tenant_id , + created_by VARCHAR(32), + created_time DATE, + updated_by VARCHAR(32), + updated_time DATE, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被淇℃伅琛�', 'SCHEMA', dbo, 'table', tools_classify, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', tools_classify, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', tools_classify, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '绫诲瀷鍚嶇О', 'SCHEMA', dbo, 'table', tools_classify, 'column', type_name; +EXEC sp_addextendedproperty 'MS_Description', '鐖剁被鍨嬬紪鍙�', 'SCHEMA', dbo, 'table', tools_classify, 'column', parent_id; +EXEC sp_addextendedproperty 'MS_Description', '鍙跺瓙鑺傜偣鏍囪;1鏄�2鍚�', 'SCHEMA', dbo, 'table', tools_classify, 'column', leaf_flag; +EXEC sp_addextendedproperty 'MS_Description', '鏄剧ず搴忓彿', 'SCHEMA', dbo, 'table', tools_classify, 'column', seq; +EXEC sp_addextendedproperty 'MS_Description', '鐘舵��;1.鍚敤锛�2.鍏抽棴', 'SCHEMA', dbo, 'table', tools_classify, 'column', status; +EXEC sp_addextendedproperty 'MS_Description', '灞傜骇', 'SCHEMA', dbo, 'table', tools_classify, 'column', rank; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栫爜鏂瑰紡;1.绯荤粺鐢熸垚锛� +2.鎸夌紪鐮佹嫾鎺ワ紱 +3.鎵嬪伐缂栫爜', 'SCHEMA', dbo, 'table', tools_classify, 'column', encoding_type; +EXEC sp_addextendedproperty 'MS_Description', '瀵瑰簲鍙傛暟妯℃澘琛ㄥ悕绉�', 'SCHEMA', dbo, 'table', tools_classify, 'column', para_type_flag; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', tools_classify, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', tools_classify, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', tools_classify, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', tools_classify, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', tools_classify, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', tools_classify, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[base_tools]') AND type in (N'U')) DROP TABLE [dbo].[base_tools]; +CREATE TABLE [dbo].[base_tools]( + id 32(32) NOT NULL, + classify_id 32(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + tool_level VARCHAR(16), + i_count VARCHAR(255), + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + tool_model VARCHAR(255), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿淇℃伅琛�', 'SCHEMA', dbo, 'table', base_tools, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', base_tools, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', base_tools, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', base_tools, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', base_tools, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿绛夌骇;宸ュ叿绮剧‘绛夌骇鍒嗕负3涓瓑绾э細鍒嗗埆涓篈銆丅銆丆 +A绫�:鐗瑰埆閲嶈锛屽叆搴撶殑宸ュ叿鏄闄勫疄鐗╃紪鐮侊紙渚嬪:Q20120918011-0001) +B绫�:涓�鑸噸瑕侊紝鍏ュ簱鐨勫伐鍏锋槸涓嶉檮瀹炵墿缂栫爜锛堜緥濡�:Q20120918011) +C绫�:涓嶉噸瑕侊紝娌℃湁鐗规畩瑙勫畾锛岃埅瀹囨殏鏃舵病鏈変娇鐢ㄥ満鏅�', 'SCHEMA', dbo, 'table', base_tools, 'column', tool_level; +EXEC sp_addextendedproperty 'MS_Description', '鎶婂彿鏈�澶у��', 'SCHEMA', dbo, 'table', base_tools, 'column', i_count; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呯爜)', 'SCHEMA', dbo, 'table', base_tools, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', base_tools, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', base_tools, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囨敞绾у埆', 'SCHEMA', dbo, 'table', base_tools, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', base_tools, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', base_tools, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', base_tools, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', base_tools, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', base_tools, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', base_tools, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', base_tools, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', base_tools, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_hole_tools]') AND type in (N'U')) DROP TABLE [dbo].[para_hole_tools]; +CREATE TABLE [dbo].[para_hole_tools]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255) NOT NULL, + diameter VARCHAR(128) NOT NULL, + cone_angle VARCHAR(24), + edge_length VARCHAR(24) NOT NULL, + total_length VARCHAR(24) NOT NULL, + tool_material VARCHAR(64) NOT NULL, + part_material VARCHAR(64), + paintcoat_flag VARCHAR(32) NOT NULL, + tool_pattern VARCHAR(64) NOT NULL, + handle_specifications VARCHAR(128) NOT NULL, + cooling_method VARCHAR(64) NOT NULL, + technical_conditions VARCHAR(128) NOT NULL, + conditions_info VARCHAR(128), + brand VARCHAR(64), + types VARCHAR(64), + tolerance_class VARCHAR(64), + flute_form VARCHAR(64), + handle_form VARCHAR(64), + blade_count VARCHAR(24), + small_diameter VARCHAR(16), + chamfer_angle VARCHAR(16), + fitter_part VARCHAR(64), + effective_length VARCHAR(16), + drill_diameter_range VARCHAR(32), + knife_diameter VARCHAR(16), + bore_diameter VARCHAR(16), + connector_type VARCHAR(16), + slot_specification VARCHAR(32), + scope_of_application VARCHAR(32), + latest_boring_diameter VARCHAR(16), + max_boring_diameter VARCHAR(16), + processingmethod VARCHAR(64), + heads_number VARCHAR(16), + adapt_holder VARCHAR(64), + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '11瀛斿姞宸ュ垁鍏穏1', 'SCHEMA', dbo, 'table', para_hole_tools, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿-涓婚敭', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿(鎴栦紒涓氬唴鍘熶唬鐮�)', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙凤紙灞曠ず鏃躲�佸彲浠ュ涓嫾鎺ワ級;灞曠ず鏃躲�佸彲浠ュ涓嫾鎺ユ垚澶氫釜搴撲綅鍙风殑瀛楃涓诧紝杩涜浼垪灞曠ず銆�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鐩村緞', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冮敟瑙�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', cone_angle; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冮暱', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', edge_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋�婚暱', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', total_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋潗鏂�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁娑傚眰', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', paintcoat_flag; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏峰瀷寮�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tool_pattern; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯儴瑙勬牸', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', handle_specifications; +EXEC sp_addextendedproperty 'MS_Description', '鍐峰嵈鏂瑰紡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', cooling_method; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', technical_conditions; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠惰鏄�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', conditions_info; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺墝', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', brand; +EXEC sp_addextendedproperty 'MS_Description', '鍒跺紡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', types; +EXEC sp_addextendedproperty 'MS_Description', '鍏樊绛夌骇', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tolerance_class; +EXEC sp_addextendedproperty 'MS_Description', '鎺掑睉妲藉舰寮�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', flute_form; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯儴褰㈠紡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', handle_form; +EXEC sp_addextendedproperty 'MS_Description', '鍒冩暟', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', blade_count; +EXEC sp_addextendedproperty 'MS_Description', '鏈�灏忕洿寰�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', small_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍊掕瑙掑害', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', chamfer_angle; +EXEC sp_addextendedproperty 'MS_Description', '閫傞厤鍒�鐗�-鍒�澶�-鍒�鏉�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', fitter_part; +EXEC sp_addextendedproperty 'MS_Description', '鏈夋晥鍔犲伐闀垮害', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', effective_length; +EXEC sp_addextendedproperty 'MS_Description', '閽诲ご鐩村緞鑼冨洿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', drill_diameter_range; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗙洿寰�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', knife_diameter; +EXEC sp_addextendedproperty 'MS_Description', '瀛斿緞', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', bore_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鎺ュ彛褰㈠紡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', connector_type; +EXEC sp_addextendedproperty 'MS_Description', '鎺ュ彛妲介暱瑙勬牸', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', slot_specification; +EXEC sp_addextendedproperty 'MS_Description', '閫傜敤鑼冨洿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', scope_of_application; +EXEC sp_addextendedproperty 'MS_Description', '鏈�鏂伴晽瀛旂洿寰�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', latest_boring_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鏈�澶ч晽瀛旂洿寰�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', max_boring_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍔犲伐鏂瑰紡', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', processingmethod; +EXEC sp_addextendedproperty 'MS_Description', '鍒�澶存暟', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', heads_number; +EXEC sp_addextendedproperty 'MS_Description', '閫傞厤鍒�搴�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', adapt_holder; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_hole_tools, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_threading_tool]') AND type in (N'U')) DROP TABLE [dbo].[para_threading_tool]; +CREATE TABLE [dbo].[para_threading_tool]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255) NOT NULL, + thread_code VARCHAR(64) NOT NULL, + pitch VARCHAR(16) NOT NULL, + rotation_direction VARCHAR(16) NOT NULL, + tolerancezone_level VARCHAR(16) NOT NULL, + edge_length VARCHAR(32) NOT NULL, + total_length VARCHAR(32) NOT NULL, + tool_material VARCHAR(64) NOT NULL, + part_material VARCHAR(64), + paintcoat_flag VARCHAR(32) NOT NULL, + external_dimensions VARCHAR(64), + handle_specifications VARCHAR(64) NOT NULL, + technical_conditions VARCHAR(128) NOT NULL, + conditions_info VARCHAR(128), + brand VARCHAR(64), + types VARCHAR(64), + screw_hole_type VARCHAR(16), + cooling_method VARCHAR(64), + thread_standard VARCHAR(32), + flute_solt_type VARCHAR(32), + thread_type VARCHAR(32), + guiding_size VARCHAR(32), + connection_aperture VARCHAR(32), + connecting_keyway VARCHAR(64), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '12铻虹汗鍒�鍏穏2', 'SCHEMA', dbo, 'table', para_threading_tool, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呭師浠g爜锛�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗浠e彿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', thread_code; +EXEC sp_addextendedproperty 'MS_Description', '铻鸿窛', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', pitch; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗鏃嬪悜', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', rotation_direction; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗鍏樊甯︿唬鍙�/绮惧害绛夌骇', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', tolerancezone_level; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冮暱', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', edge_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋�婚暱', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', total_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋潗鏂�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁娑傚眰', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', paintcoat_flag; +EXEC sp_addextendedproperty 'MS_Description', '澶栧瀷灏哄', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', external_dimensions; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯儴瑙勬牸', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', handle_specifications; +EXEC sp_addextendedproperty 'MS_Description', '闄勪欢鎶�鏈潯浠�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', technical_conditions; +EXEC sp_addextendedproperty 'MS_Description', '闄勪欢鎶�鏈潯浠惰鏄�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', conditions_info; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺墝', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', brand; +EXEC sp_addextendedproperty 'MS_Description', '鍒跺紡', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', types; +EXEC sp_addextendedproperty 'MS_Description', '铻哄瓟绫诲瀷', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', screw_hole_type; +EXEC sp_addextendedproperty 'MS_Description', '鍐峰嵈鏂瑰紡', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', cooling_method; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗鏍囧噯', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', thread_standard; +EXEC sp_addextendedproperty 'MS_Description', '鎺掑睉妲藉瀷', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', flute_solt_type; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗绫诲瀷', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', thread_type; +EXEC sp_addextendedproperty 'MS_Description', '瀵煎悜灏哄', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', guiding_size; +EXEC sp_addextendedproperty 'MS_Description', '杩炴帴瀛斿緞', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', connection_aperture; +EXEC sp_addextendedproperty 'MS_Description', '杩炴帴閿Ы', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', connecting_keyway; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_threading_tool, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_mill_tool]') AND type in (N'U')) DROP TABLE [dbo].[para_mill_tool]; +CREATE TABLE [dbo].[para_mill_tool]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(32), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255) NOT NULL, + diameter VARCHAR(128) NOT NULL, + nose_angle_r VARCHAR(64) NOT NULL, + number_of_teeth VARCHAR(64) NOT NULL, + edge_length VARCHAR(24) NOT NULL, + total_length VARCHAR(24) NOT NULL, + tool_material VARCHAR(64) NOT NULL, + part_material VARCHAR(64), + paintcoat_flag VARCHAR(32) NOT NULL, + tool_pattern VARCHAR(64) NOT NULL, + clamping_specifications VARCHAR(64) NOT NULL, + cooling_method VARCHAR(64) NOT NULL, + technical_conditions VARCHAR(128) NOT NULL, + conditions_info VARCHAR(128), + brand VARCHAR(64), + neck_diameter VARCHAR(64), + handle_form VARCHAR(64), + nose_angle_c VARCHAR(32), + angle_inside_r VARCHAR(32), + small_diameter VARCHAR(32), + tool_angle VARCHAR(16), + handle_length VARCHAR(16), + main_angle_k VARCHAR(16), + deepest_depth VARCHAR(16), + adapt_blade VARCHAR(64), + handle_neck_form VARCHAR(64), + handle_neck_length VARCHAR(16), + size_specifications VARCHAR(16), + milling_head_form VARCHAR(16), + overhanging_length VARCHAR(16), + cutting_edge_form VARCHAR(16), + number_patterns VARCHAR(16), + pitch VARCHAR(16), + recently_diameter VARCHAR(16), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '13閾e墛鍒�鍏穏3', 'SCHEMA', dbo, 'table', para_mill_tool, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭-鍒�鍏风紪鍙�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呭師浠g爜锛�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏风洿寰�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍒�灏栬R', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', nose_angle_r; +EXEC sp_addextendedproperty 'MS_Description', '榻挎暟', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', number_of_teeth; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冮暱', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', edge_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋�婚暱', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', total_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋潗鏂�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁娑傚眰', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', paintcoat_flag; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏峰瀷寮�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tool_pattern; +EXEC sp_addextendedproperty 'MS_Description', '瑁呭す瑙勬牸', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', clamping_specifications; +EXEC sp_addextendedproperty 'MS_Description', '鍐峰嵈鏂瑰紡', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', cooling_method; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', technical_conditions; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠惰鏄�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', conditions_info; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺墝', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', brand; +EXEC sp_addextendedproperty 'MS_Description', '棰堝緞', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', neck_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯儴褰㈠紡', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', handle_form; +EXEC sp_addextendedproperty 'MS_Description', '鍒�灏栬C', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', nose_angle_c; +EXEC sp_addextendedproperty 'MS_Description', '鍒�灏栬鍐匯', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', angle_inside_r; +EXEC sp_addextendedproperty 'MS_Description', '鏈�灏忕洿寰�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', small_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏疯搴�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tool_angle; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯暱', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', handle_length; +EXEC sp_addextendedproperty 'MS_Description', '涓诲亸瑙扠', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', main_angle_k; +EXEC sp_addextendedproperty 'MS_Description', '鏈�澶у垏娣�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', deepest_depth; +EXEC sp_addextendedproperty 'MS_Description', '閫傞厤鍒�鐗�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', adapt_blade; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯褰㈠紡', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', handle_neck_form; +EXEC sp_addextendedproperty 'MS_Description', '鏌勯闀垮害', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', handle_neck_length; +EXEC sp_addextendedproperty 'MS_Description', '鎺ュ彛灏哄瑙勬牸', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', size_specifications; +EXEC sp_addextendedproperty 'MS_Description', '閾e垁澶村舰寮�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', milling_head_form; +EXEC sp_addextendedproperty 'MS_Description', '鎮几闀垮害', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', overhanging_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冨舰寮�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', cutting_edge_form; +EXEC sp_addextendedproperty 'MS_Description', '鍐呭绾规暟', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', number_patterns; +EXEC sp_addextendedproperty 'MS_Description', '铻鸿窛', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', pitch; +EXEC sp_addextendedproperty 'MS_Description', '鏈�杩戝姞宸ョ洿寰�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', recently_diameter; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_mill_tool, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_turning_tools]') AND type in (N'U')) DROP TABLE [dbo].[para_turning_tools]; +CREATE TABLE [dbo].[para_turning_tools]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32), + tool_code VARCHAR(32) NOT NULL, + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255), + head_specifications VARCHAR(32) NOT NULL, + matching_number VARCHAR(64) NOT NULL, + lead_angle VARCHAR(32) NOT NULL, + cross_sectional_size VARCHAR(16) NOT NULL, + total_length VARCHAR(32) NOT NULL, + cutting_direction VARCHAR(24) NOT NULL, + tool_material VARCHAR(64) NOT NULL, + part_material VARCHAR(64), + tool_pattern VARCHAR(64) NOT NULL, + paintcoat_flag VARCHAR(32) NOT NULL, + technical_conditions VARCHAR(128) NOT NULL, + conditions_info VARCHAR(128), + brand VARCHAR(64), + types VARCHAR(64), + knife_size VARCHAR(32), + cooling_method VARCHAR(64), + holder_category VARCHAR(64), + tool_diameter VARCHAR(64), + fastening_form VARCHAR(64), + boring_bar_diameter VARCHAR(32), + blade_length VARCHAR(32), + blade_shape VARCHAR(24), + blade_posterior VARCHAR(24), + bar_direction VARCHAR(64), + blade_height VARCHAR(32), + blade_wide VARCHAR(24), + blade_size VARCHAR(32), + knife_clip_model VARCHAR(64), + clamping_method VARCHAR(64), + slot_width VARCHAR(32), + small_diameter VARCHAR(32), + max_diameter VARCHAR(32), + max_depth VARCHAR(32), + knife_bar_form VARCHAR(64), + blade_thickness VARCHAR(32), + min_diameter VARCHAR(32), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id,tool_code) +); + +EXEC sp_addextendedproperty 'MS_Description', '14杞﹀墛鍒�鍏穏4', 'SCHEMA', dbo, 'table', para_turning_tools, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭-鍒�鍏风紪鍙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呭師浠g爜锛�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鍒�澶磋鏍�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', head_specifications; +EXEC sp_addextendedproperty 'MS_Description', '閰嶅鍒�鐗囧彿', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', matching_number; +EXEC sp_addextendedproperty 'MS_Description', '涓诲亸瑙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', lead_angle; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋埅闈㈠昂瀵�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', cross_sectional_size; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋�婚暱', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', total_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鏂瑰悜', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', cutting_direction; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋潗鏂�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏峰瀷寮�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tool_pattern; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁娑傚眰', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', paintcoat_flag; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', technical_conditions; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠惰鏄�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', conditions_info; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺墝', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', brand; +EXEC sp_addextendedproperty 'MS_Description', '鍒跺紡', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', types; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧昂瀵�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', knife_size; +EXEC sp_addextendedproperty 'MS_Description', '鍐峰嵈鏂瑰紡', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', cooling_method; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗙被鍒�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', holder_category; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏风洿寰�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tool_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鎺ュ彛绱у浐褰㈠紡', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', fastening_form; +EXEC sp_addextendedproperty 'MS_Description', '闀楁潌鐩村緞', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', boring_bar_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗛暱搴�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧舰鐘�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_shape; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧悗瑙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_posterior; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗘柟鍚�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', bar_direction; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗛珮搴�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_height; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗗搴�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_wide; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗗昂瀵�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_size; +EXEC sp_addextendedproperty 'MS_Description', '鍒�澶瑰瀷鍙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', knife_clip_model; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囪澶规柟寮�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', clamping_method; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囨Ы瀹�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', slot_width; +EXEC sp_addextendedproperty 'MS_Description', '鏈�灏忓垏鍏ョ洿寰�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', small_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鏈�澶у垏鍏ョ洿寰�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', max_diameter; +EXEC sp_addextendedproperty 'MS_Description', '鏈�澶у垏妲芥繁搴�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', max_depth; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉嗗舰寮�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', knife_bar_form; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鏉垮帤搴�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', blade_thickness; +EXEC sp_addextendedproperty 'MS_Description', '鏈�灏忓姞宸ョ洿寰�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', min_diameter; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_turning_tools, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_blade]') AND type in (N'U')) DROP TABLE [dbo].[para_blade]; +CREATE TABLE [dbo].[para_blade]( + id VARCHAR(32), + classify_id VARCHAR(32), + tool_code VARCHAR(32) NOT NULL, + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255), + blade_shape VARCHAR(32) NOT NULL, + blade_length VARCHAR(24) NOT NULL, + cutting_edge_count VARCHAR(32) NOT NULL, + blade_thickness VARCHAR(32) NOT NULL, + clamping_type VARCHAR(64) NOT NULL, + nose_angle_r VARCHAR(24) NOT NULL, + tool_material VARCHAR(64) NOT NULL, + part_material VARCHAR(64), + paintcoat_flag VARCHAR(32) NOT NULL, + technical_conditions VARCHAR(128) NOT NULL, + conditions_info VARCHAR(128), + brand VARCHAR(64), + types VARCHAR(64), + coating_material VARCHAR(64), + processing_classify VARCHAR(64), + blade_posterior VARCHAR(32), + cutting_direction VARCHAR(32), + blade_wide VARCHAR(32), + blade_size VARCHAR(34), + in_out_thread VARCHAR(32), + thread_standard VARCHAR(32), + dental_angle VARCHAR(16), + pitch VARCHAR(24), + min_internal_thread VARCHAR(24), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (tool_code) +); + +EXEC sp_addextendedproperty 'MS_Description', '20鍒�鐗噂9', 'SCHEMA', dbo, 'table', para_blade, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_blade, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_blade, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭-鍒�鍏风紪鍙�', 'SCHEMA', dbo, 'table', para_blade, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呭師浠g爜锛�', 'SCHEMA', dbo, 'table', para_blade, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_blade, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_blade, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_blade, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_blade, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', para_blade, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_blade, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧舰鐘�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_shape; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囬暱搴�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_length; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鍒冩暟', 'SCHEMA', dbo, 'table', para_blade, 'column', cutting_edge_count; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧帤搴�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_thickness; +EXEC sp_addextendedproperty 'MS_Description', '澶瑰浐鍨嬪紡', 'SCHEMA', dbo, 'table', para_blade, 'column', clamping_type; +EXEC sp_addextendedproperty 'MS_Description', '鍒�灏朢', 'SCHEMA', dbo, 'table', para_blade, 'column', nose_angle_r; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囨潗鏂�', 'SCHEMA', dbo, 'table', para_blade, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_blade, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁娑傚眰', 'SCHEMA', dbo, 'table', para_blade, 'column', paintcoat_flag; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠�', 'SCHEMA', dbo, 'table', para_blade, 'column', technical_conditions; +EXEC sp_addextendedproperty 'MS_Description', '闄勫姞鎶�鏈潯浠惰鏄�', 'SCHEMA', dbo, 'table', para_blade, 'column', conditions_info; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺墝', 'SCHEMA', dbo, 'table', para_blade, 'column', brand; +EXEC sp_addextendedproperty 'MS_Description', '鍒跺紡', 'SCHEMA', dbo, 'table', para_blade, 'column', types; +EXEC sp_addextendedproperty 'MS_Description', '娑傚眰鏉愯川', 'SCHEMA', dbo, 'table', para_blade, 'column', coating_material; +EXEC sp_addextendedproperty 'MS_Description', '鍔犲伐鍒嗙被', 'SCHEMA', dbo, 'table', para_blade, 'column', processing_classify; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧悗瑙�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_posterior; +EXEC sp_addextendedproperty 'MS_Description', '鍒囧墛鏂瑰悜', 'SCHEMA', dbo, 'table', para_blade, 'column', cutting_direction; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧搴�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_wide; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鐗囧昂瀵�', 'SCHEMA', dbo, 'table', para_blade, 'column', blade_size; +EXEC sp_addextendedproperty 'MS_Description', '鍐呭铻虹汗', 'SCHEMA', dbo, 'table', para_blade, 'column', in_out_thread; +EXEC sp_addextendedproperty 'MS_Description', '铻虹汗鏍囧噯', 'SCHEMA', dbo, 'table', para_blade, 'column', thread_standard; +EXEC sp_addextendedproperty 'MS_Description', '鐗欏瀷瑙掑害', 'SCHEMA', dbo, 'table', para_blade, 'column', dental_angle; +EXEC sp_addextendedproperty 'MS_Description', '铻鸿窛', 'SCHEMA', dbo, 'table', para_blade, 'column', pitch; +EXEC sp_addextendedproperty 'MS_Description', '鏈�灏忓姞宸ュ唴铻虹汗鍏О鐩村緞', 'SCHEMA', dbo, 'table', para_blade, 'column', min_internal_thread; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_blade, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_blade, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_blade, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_blade, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_blade, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[outbound_order]') AND type in (N'U')) DROP TABLE [dbo].[outbound_order]; +CREATE TABLE [dbo].[outbound_order]( + id VARCHAR(32) NOT NULL, + out_storehouse_type VARCHAR(32) NOT NULL, + is_return INT, + handler VARCHAR(32) NOT NULL, + reviewer VARCHAR(32), + order_status VARCHAR(32) NOT NULL, + out_status VARCHAR(255), + audit_date DATETIME, + approval_opinion VARCHAR(128), + subject_matter VARCHAR(128), + outbound_time DATETIME NOT NULL, + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐢宠鍗�', 'SCHEMA', dbo, 'table', outbound_order, null, null; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鍗曠紪鍙�', 'SCHEMA', dbo, 'table', outbound_order, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱绫诲瀷', 'SCHEMA', dbo, 'table', outbound_order, 'column', out_storehouse_type; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁褰掕繕;1鏈綊杩橈紙榛樿锛夛紱2.宸插綊杩�', 'SCHEMA', dbo, 'table', outbound_order, 'column', is_return; +EXEC sp_addextendedproperty 'MS_Description', '缁忔墜浜�', 'SCHEMA', dbo, 'table', outbound_order, 'column', handler; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳浜�', 'SCHEMA', dbo, 'table', outbound_order, 'column', reviewer; +EXEC sp_addextendedproperty 'MS_Description', '鍗曞瓙鐘舵��', 'SCHEMA', dbo, 'table', outbound_order, 'column', order_status; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚', 'SCHEMA', dbo, 'table', outbound_order, 'column', out_status; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳鏃堕棿', 'SCHEMA', dbo, 'table', outbound_order, 'column', audit_date; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳鎰忚', 'SCHEMA', dbo, 'table', outbound_order, 'column', approval_opinion; +EXEC sp_addextendedproperty 'MS_Description', '棰嗙敤浜嬬敱', 'SCHEMA', dbo, 'table', outbound_order, 'column', subject_matter; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鏃堕棿', 'SCHEMA', dbo, 'table', outbound_order, 'column', outbound_time; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', outbound_order, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', outbound_order, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鎿嶄綔鍛�', 'SCHEMA', dbo, 'table', outbound_order, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', outbound_order, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', outbound_order, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', outbound_order, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[inbound_order]') AND type in (N'U')) DROP TABLE [dbo].[inbound_order]; +CREATE TABLE [dbo].[inbound_order]( + id VARCHAR(32) NOT NULL, + inbound_time DATETIME(255), + in_storehouse_type VARCHAR(32) NOT NULL, + handler VARCHAR(32), + borrow_num VARCHAR(32), + reviewer VARCHAR(32), + approval_date DATETIME, + approval_opinion VARCHAR(128), + order_status VARCHAR(32), + in_status VARCHAR(32), + application_reason VARCHAR(128), + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鐢宠鍗�', 'SCHEMA', dbo, 'table', inbound_order, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭-鍏ュ簱鍗曞彿', 'SCHEMA', dbo, 'table', inbound_order, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏃堕棿', 'SCHEMA', dbo, 'table', inbound_order, 'column', inbound_time; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱绫诲瀷', 'SCHEMA', dbo, 'table', inbound_order, 'column', in_storehouse_type; +EXEC sp_addextendedproperty 'MS_Description', '缁忔墜浜�', 'SCHEMA', dbo, 'table', inbound_order, 'column', handler; +EXEC sp_addextendedproperty 'MS_Description', '鍊熺敤鍗曞彿', 'SCHEMA', dbo, 'table', inbound_order, 'column', borrow_num; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳浜�', 'SCHEMA', dbo, 'table', inbound_order, 'column', reviewer; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳鏃堕棿', 'SCHEMA', dbo, 'table', inbound_order, 'column', approval_date; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳鎰忚', 'SCHEMA', dbo, 'table', inbound_order, 'column', approval_opinion; +EXEC sp_addextendedproperty 'MS_Description', '鍗曞瓙鐘舵��', 'SCHEMA', dbo, 'table', inbound_order, 'column', order_status; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鍗曠姸鎬�;1.鏈叆搴擄紱2.閮ㄥ垎鍏ュ簱锛�3.鍏ュ簱瀹屾垚', 'SCHEMA', dbo, 'table', inbound_order, 'column', in_status; +EXEC sp_addextendedproperty 'MS_Description', '鐢宠鍘熷洜', 'SCHEMA', dbo, 'table', inbound_order, 'column', application_reason; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', inbound_order, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', inbound_order, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鎿嶄綔鍛�', 'SCHEMA', dbo, 'table', inbound_order, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鐢宠鏃堕棿', 'SCHEMA', dbo, 'table', inbound_order, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', inbound_order, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', inbound_order, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[outbound_detail]') AND type in (N'U')) DROP TABLE [dbo].[outbound_detail]; +CREATE TABLE [dbo].[outbound_detail]( + id VARCHAR(32) NOT NULL, + out_storehouse_id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + outbound_quantity DECIMAL(64) NOT NULL, + out_actual_count DECIMAL(64), + storage_location VARCHAR(64), + outbound_location VARCHAR(255), + out_status VARCHAR(32) NOT NULL, + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐢宠鏄庣粏', 'SCHEMA', dbo, 'table', outbound_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', outbound_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鍗曞彿', 'SCHEMA', dbo, 'table', outbound_detail, 'column', out_storehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏风紪鐮�', 'SCHEMA', dbo, 'table', outbound_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏风紪鍙�', 'SCHEMA', dbo, 'table', outbound_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鐢宠鍑哄簱鏁伴噺', 'SCHEMA', dbo, 'table', outbound_detail, 'column', outbound_quantity; +EXEC sp_addextendedproperty 'MS_Description', '瀹為檯鍑哄簱鏁伴噺', 'SCHEMA', dbo, 'table', outbound_detail, 'column', out_actual_count; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱', 'SCHEMA', dbo, 'table', outbound_detail, 'column', storage_location; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱搴撲綅', 'SCHEMA', dbo, 'table', outbound_detail, 'column', outbound_location; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚', 'SCHEMA', dbo, 'table', outbound_detail, 'column', out_status; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', outbound_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鎿嶄綔鍛�', 'SCHEMA', dbo, 'table', outbound_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鏃堕棿', 'SCHEMA', dbo, 'table', outbound_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', outbound_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', outbound_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[inbound_detail]') AND type in (N'U')) DROP TABLE [dbo].[inbound_detail]; +CREATE TABLE [dbo].[inbound_detail]( + id VARCHAR(32) NOT NULL, + goods_shelves_id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + in_storage_quantity DECIMAL(64) NOT NULL, + in_actual_count DECIMAL(64), + out_status VARCHAR(32), + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鐢宠鏄庣粏', 'SCHEMA', dbo, 'table', inbound_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', inbound_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦鍙�/瀛樺偍浣嶇疆', 'SCHEMA', dbo, 'table', inbound_detail, 'column', goods_shelves_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', inbound_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', inbound_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏁伴噺', 'SCHEMA', dbo, 'table', inbound_detail, 'column', in_storage_quantity; +EXEC sp_addextendedproperty 'MS_Description', '瀹為檯鍏ュ簱鏁伴噺', 'SCHEMA', dbo, 'table', inbound_detail, 'column', in_actual_count; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐘舵��;1.鏈叆搴擄紱2.閮ㄥ垎鍏ュ簱锛�3.鍏ュ簱瀹屾垚', 'SCHEMA', dbo, 'table', inbound_detail, 'column', out_status; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', inbound_detail, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', inbound_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', inbound_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', inbound_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', inbound_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', inbound_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tools_config_property]') AND type in (N'U')) DROP TABLE [dbo].[tools_config_property]; +CREATE TABLE [dbo].[tools_config_property]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32) NOT NULL, + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + application_type INT NOT NULL, + standard_level VARCHAR(16), + standard_code VARCHAR(32), + tool_model VARCHAR(128) NOT NULL, + supplier_id VARCHAR(128), + province_city VARCHAR(255), + warehouse_id VARCHAR(128), + position_code VARCHAR(255), + storage_location VARCHAR(64), + main_unit VARCHAR(64), + auxiliary_unit VARCHAR(64), + main_count VARCHAR(255), + auxiliary_count VARCHAR(255), + auxiliary_unit_flag VARCHAR(8), + price DECIMAL, + lower_inventory DECIMAL, + highest_inventory VARCHAR, + status VARCHAR(6), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿閫氱敤鎬ц川--鍙傛暟', 'SCHEMA', dbo, 'table', tools_config_property, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', tools_config_property, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', tools_config_property, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', tools_config_property, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '鑻辨枃鍚嶇О', 'SCHEMA', dbo, 'table', tools_config_property, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿绫诲瀷;1.閫氱敤 +2.涓撶敤', 'SCHEMA', dbo, 'table', tools_config_property, 'column', application_type; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', tools_config_property, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', tools_config_property, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鍘傚', 'SCHEMA', dbo, 'table', tools_config_property, 'column', supplier_id; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱鐪佷唤鍩庡競', 'SCHEMA', dbo, 'table', tools_config_property, 'column', province_city; +EXEC sp_addextendedproperty 'MS_Description', '搴撳尯/搴撳彿', 'SCHEMA', dbo, 'table', tools_config_property, 'column', warehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', tools_config_property, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '瀛樺偍浣嶇疆锛堝亸閭d釜鍘傚尯鐨勫簱锛�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', storage_location; +EXEC sp_addextendedproperty 'MS_Description', '璁¢噺涓诲崟浣�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', main_unit; +EXEC sp_addextendedproperty 'MS_Description', '璁¢噺杈呭崟浣�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', auxiliary_unit; +EXEC sp_addextendedproperty 'MS_Description', '璁¢噺涓诲崟浣嶆暟閲�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', main_count; +EXEC sp_addextendedproperty 'MS_Description', '璁¢噺杈呭崟浣嶆暟閲�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', auxiliary_count; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁鏈夎閲忚緟鍗曚綅;1,鏈夎緟鍔╁崟浣�2.鏃犺緟鍔╁崟浣�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', auxiliary_unit_flag; +EXEC sp_addextendedproperty 'MS_Description', '鍗曚环', 'SCHEMA', dbo, 'table', tools_config_property, 'column', price; +EXEC sp_addextendedproperty 'MS_Description', '鏈�浣庡簱瀛�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', lower_inventory; +EXEC sp_addextendedproperty 'MS_Description', '鏈�楂樺簱瀛�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', highest_inventory; +EXEC sp_addextendedproperty 'MS_Description', '鐘舵��;1.鍚敤 +2.鏈惎鐢�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', status; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', tools_config_property, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', tools_config_property, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', tools_config_property, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', tools_config_property, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[warehouse]') AND type in (N'U')) DROP TABLE [dbo].[warehouse]; +CREATE TABLE [dbo].[warehouse]( + id VARCHAR(32) NOT NULL, + warehouse_id VARCHAR(255), + warehouse_name VARCHAR(128), + parent_id VARCHAR(64), + seq VARCHAR(255), + leaf_flag VARCHAR(6), + status VARCHAR(6), + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱绠$悊', 'SCHEMA', dbo, 'table', warehouse, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', warehouse, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱缂栧彿', 'SCHEMA', dbo, 'table', warehouse, 'column', warehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱鍚嶇О', 'SCHEMA', dbo, 'table', warehouse, 'column', warehouse_name; +EXEC sp_addextendedproperty 'MS_Description', '鐖惰妭鐐圭紪鍙�', 'SCHEMA', dbo, 'table', warehouse, 'column', parent_id; +EXEC sp_addextendedproperty 'MS_Description', '灞曠ず搴忓彿', 'SCHEMA', dbo, 'table', warehouse, 'column', seq; +EXEC sp_addextendedproperty 'MS_Description', '鏄惁鍙跺瓙鑺傜偣;1鏄�2鍚�', 'SCHEMA', dbo, 'table', warehouse, 'column', leaf_flag; +EXEC sp_addextendedproperty 'MS_Description', '鐘舵��;1.鍚敤锛�2.鍋滅敤', 'SCHEMA', dbo, 'table', warehouse, 'column', status; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', warehouse, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', warehouse, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', warehouse, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', warehouse, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', warehouse, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', warehouse, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[goods_shelves]') AND type in (N'U')) DROP TABLE [dbo].[goods_shelves]; +CREATE TABLE [dbo].[goods_shelves]( + id VARCHAR(32) NOT NULL, + warehouse_id VARCHAR(32) NOT NULL, + location_code VARCHAR(255) NOT NULL, + storey VARCHAR(32) NOT NULL, + arrange VARCHAR(32) NOT NULL, + column_number VARCHAR(32) NOT NULL, + cells_num VARCHAR(32), + shelf_number VARCHAR(64), + shelf_name VARCHAR(64), + remark VARCHAR(128), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦绠$悊', 'SCHEMA', dbo, 'table', goods_shelves, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', goods_shelves, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱缂栧彿', 'SCHEMA', dbo, 'table', goods_shelves, 'column', warehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�', 'SCHEMA', dbo, 'table', goods_shelves, 'column', location_code; +EXEC sp_addextendedproperty 'MS_Description', '灞傛暟', 'SCHEMA', dbo, 'table', goods_shelves, 'column', storey; +EXEC sp_addextendedproperty 'MS_Description', '鎺掓暟', 'SCHEMA', dbo, 'table', goods_shelves, 'column', arrange; +EXEC sp_addextendedproperty 'MS_Description', '鍒楁暟', 'SCHEMA', dbo, 'table', goods_shelves, 'column', column_number; +EXEC sp_addextendedproperty 'MS_Description', '鏍兼暟;榛樿鍊间负1', 'SCHEMA', dbo, 'table', goods_shelves, 'column', cells_num; +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦缂栧彿', 'SCHEMA', dbo, 'table', goods_shelves, 'column', shelf_number; +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦鍚嶇О', 'SCHEMA', dbo, 'table', goods_shelves, 'column', shelf_name; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', goods_shelves, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', goods_shelves, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', goods_shelves, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', goods_shelves, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', goods_shelves, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', goods_shelves, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[in_store_detail]') AND type in (N'U')) DROP TABLE [dbo].[in_store_detail]; +CREATE TABLE [dbo].[in_store_detail]( + id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + in_storehouse_type VARCHAR(32), + goods_shelves_id VARCHAR(32), + in_number DECIMAL(64), + in_storehouse_id VARCHAR(32), + operate_type VARCHAR(64), + inbound_time DATETIME(24), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏄庣粏琛�-鎻忚堪鍒�鍏峰瓨鏀俱�佸彂鐢熺殑鏁伴噺', 'SCHEMA', dbo, 'table', in_store_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', in_store_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', in_store_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', in_store_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍏ュ簱鏂瑰紡', 'SCHEMA', dbo, 'table', in_store_detail, 'column', in_storehouse_type; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�', 'SCHEMA', dbo, 'table', in_store_detail, 'column', goods_shelves_id; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏁伴噺', 'SCHEMA', dbo, 'table', in_store_detail, 'column', in_number; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鐢宠鍗曞彿', 'SCHEMA', dbo, 'table', in_store_detail, 'column', in_storehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 +2.鎵嬪伐鎿嶄綔', 'SCHEMA', dbo, 'table', in_store_detail, 'column', operate_type; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏃堕棿', 'SCHEMA', dbo, 'table', in_store_detail, 'column', inbound_time; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', in_store_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', in_store_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', in_store_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', in_store_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', in_store_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[out_store_detail]') AND type in (N'U')) DROP TABLE [dbo].[out_store_detail]; +CREATE TABLE [dbo].[out_store_detail]( + id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + out_storehouse_type VARCHAR(32), + goods_shelves_code VARCHAR(64), + out_number DECIMAL(64) NOT NULL, + in_storehouse_id VARCHAR(128), + operate_type VARCHAR(64), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鎻忚堪鍑哄簱鐨勫簱浣嶃�佹暟閲忓叧绯昏〃', 'SCHEMA', dbo, 'table', out_store_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', out_store_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', out_store_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', out_store_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱绫诲瀷', 'SCHEMA', dbo, 'table', out_store_detail, 'column', out_storehouse_type; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�', 'SCHEMA', dbo, 'table', out_store_detail, 'column', goods_shelves_code; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鏁伴噺', 'SCHEMA', dbo, 'table', out_store_detail, 'column', out_number; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鐢宠鍗曞彿', 'SCHEMA', dbo, 'table', out_store_detail, 'column', in_storehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 +2.鎵嬪伐鎿嶄綔', 'SCHEMA', dbo, 'table', out_store_detail, 'column', operate_type; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', out_store_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', out_store_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', out_store_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', out_store_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', out_store_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[para_common_tool]') AND type in (N'U')) DROP TABLE [dbo].[para_common_tool]; +CREATE TABLE [dbo].[para_common_tool]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32), + tool_code VARCHAR(32), + sign_code VARCHAR(16), + chinese_name VARCHAR(128), + foreign_language_name VARCHAR(128), + standard_level VARCHAR(16), + standard_code VARCHAR(32), + position_code VARCHAR(255), + tool_model VARCHAR(255), + tool_material VARCHAR(255), + part_material VARCHAR(255), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鏍囪瘑', 'SCHEMA', dbo, 'table', para_common_tool, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', para_common_tool, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍒嗙被缂栧彿', 'SCHEMA', dbo, 'table', para_common_tool, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', para_common_tool, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '搴忓彿锛堟垨浼佷笟鍐呮簮鐮侊級', 'SCHEMA', dbo, 'table', para_common_tool, 'column', sign_code; +EXEC sp_addextendedproperty 'MS_Description', '涓枃鍚嶇О', 'SCHEMA', dbo, 'table', para_common_tool, 'column', chinese_name; +EXEC sp_addextendedproperty 'MS_Description', '澶栨枃鍚嶇О', 'SCHEMA', dbo, 'table', para_common_tool, 'column', foreign_language_name; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯绾у埆', 'SCHEMA', dbo, 'table', para_common_tool, 'column', standard_level; +EXEC sp_addextendedproperty 'MS_Description', '鏍囧噯鍙�', 'SCHEMA', dbo, 'table', para_common_tool, 'column', standard_code; +EXEC sp_addextendedproperty 'MS_Description', '搴撲綅鍙�;鐢卞簱鍖�+灞�+鎺�+鍒楃粍鎴愶紝鍙互鏄涓簱浣嶅彿浠ヨ嫳鏂囩偣鍙峰垎鍓茬殑瀛楃涓层��', 'SCHEMA', dbo, 'table', para_common_tool, 'column', position_code; +EXEC sp_addextendedproperty 'MS_Description', '鍨嬪彿/鍥惧彿', 'SCHEMA', dbo, 'table', para_common_tool, 'column', tool_model; +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏锋潗鏂�', 'SCHEMA', dbo, 'table', para_common_tool, 'column', tool_material; +EXEC sp_addextendedproperty 'MS_Description', '闆朵欢鏉愭枡', 'SCHEMA', dbo, 'table', para_common_tool, 'column', part_material; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', para_common_tool, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', para_common_tool, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', para_common_tool, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', para_common_tool, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', para_common_tool, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', para_common_tool, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tool_sharpening]') AND type in (N'U')) DROP TABLE [dbo].[tool_sharpening]; +CREATE TABLE [dbo].[tool_sharpening]( + id VARCHAR(32,32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32,32), + sharpening_time DATETIME(24) NOT NULL, + sharpening_result VARCHAR(255), + responsible_person VARCHAR(24), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鍒�鍏峰垉纾�', 'SCHEMA', dbo, 'table', tool_sharpening, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒冪(鏃堕棿', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', sharpening_time; +EXEC sp_addextendedproperty 'MS_Description', '鍒冪(缁撴灉鍙婂缓璁�', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', sharpening_result; +EXEC sp_addextendedproperty 'MS_Description', '璐d换浜�', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', responsible_person; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', tool_sharpening, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[loss_bound]') AND type in (N'U')) DROP TABLE [dbo].[loss_bound]; +CREATE TABLE [dbo].[loss_bound]( + id VARCHAR(32) NOT NULL, + losser VARCHAR(64), + handler VARCHAR(64), + loss_time DATETIME(32), + reviewer VARCHAR(64), + approval_date DATETIME(255), + order_status VARCHAR(32), + approval_opinion VARCHAR(255), + loss_reason VARCHAR(255), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鎶ユ崯鍗�', 'SCHEMA', dbo, 'table', loss_bound, null, null; +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯鍗曞彿', 'SCHEMA', dbo, 'table', loss_bound, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯浜�', 'SCHEMA', dbo, 'table', loss_bound, 'column', losser; +EXEC sp_addextendedproperty 'MS_Description', '缁忔墜浜�', 'SCHEMA', dbo, 'table', loss_bound, 'column', handler; +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound, 'column', loss_time; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳浜�', 'SCHEMA', dbo, 'table', loss_bound, 'column', reviewer; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound, 'column', approval_date; +EXEC sp_addextendedproperty 'MS_Description', '鍗曟嵁鐘舵��', 'SCHEMA', dbo, 'table', loss_bound, 'column', order_status; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃壒鎰忚', 'SCHEMA', dbo, 'table', loss_bound, 'column', approval_opinion; +EXEC sp_addextendedproperty 'MS_Description', '鎹熶激鍘熷洜', 'SCHEMA', dbo, 'table', loss_bound, 'column', loss_reason; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', loss_bound, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', loss_bound, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', loss_bound, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', loss_bound, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[loss_bound_detail]') AND type in (N'U')) DROP TABLE [dbo].[loss_bound_detail]; +CREATE TABLE [dbo].[loss_bound_detail]( + id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(128), + loss_reason VARCHAR(64), + loss_number DECIMAL(64) NOT NULL, + goods_shelves_id VARCHAR(64), + in_store_date DATETIME(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯鍗曟槑缁�', 'SCHEMA', dbo, 'table', loss_bound_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯鍘熷洜', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', loss_reason; +EXEC sp_addextendedproperty 'MS_Description', '鎶ユ崯鏁伴噺', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', loss_number; +EXEC sp_addextendedproperty 'MS_Description', '瀛樺偍浣嶇疆(搴撲綅鍙�)', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', goods_shelves_id; +EXEC sp_addextendedproperty 'MS_Description', '鍏ュ簱鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', in_store_date; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', loss_bound_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[stocktaking_bound]') AND type in (N'U')) DROP TABLE [dbo].[stocktaking_bound]; +CREATE TABLE [dbo].[stocktaking_bound]( + id VARCHAR(255) NOT NULL, + stocktaking_type VARCHAR(255), + order_code VARCHAR(255), + handler VARCHAR(255), + reviewer VARCHAR(255), + stocktaking_name VARCHAR(255), + remark VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鐩樼偣鐢宠鍗�', 'SCHEMA', dbo, 'table', stocktaking_bound, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鐩樼偣绫诲瀷;1.鏄庣洏鐩樼偣 +2.鏆楃洏鐩樼偣', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', stocktaking_type; +EXEC sp_addextendedproperty 'MS_Description', '鐩樼偣鍗曞彿', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', order_code; +EXEC sp_addextendedproperty 'MS_Description', '缁忔墜浜�', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', handler; +EXEC sp_addextendedproperty 'MS_Description', '瀹℃牳浜�', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', reviewer; +EXEC sp_addextendedproperty 'MS_Description', '鐩樼偣鍚嶇О', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', stocktaking_name; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', stocktaking_bound, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[stocktaking_bound_detail]') AND type in (N'U')) DROP TABLE [dbo].[stocktaking_bound_detail]; +CREATE TABLE [dbo].[stocktaking_bound_detail]( + id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(32), + goods_shelves_id VARCHAR(64), + book_quantity DATETIME(255), + available_quantity DATETIME(255), + practical_quantity DATETIME(255), + surplus_deficit VARCHAR(36), + stocktaking_date DATETIME(255), + remark VARCHAR(218), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '鐩樼偣鍗曟槑缁�', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '搴撳瓨鍙�', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', goods_shelves_id; +EXEC sp_addextendedproperty 'MS_Description', '璐﹂潰鏁伴噺', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', book_quantity; +EXEC sp_addextendedproperty 'MS_Description', '鍙敤鏁伴噺', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', available_quantity; +EXEC sp_addextendedproperty 'MS_Description', '瀹炵洏鏁伴噺', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', practical_quantity; +EXEC sp_addextendedproperty 'MS_Description', '鐩樼泩鐩樹簭;1.鐩樼泩 +2.鐩樹簭', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', surplus_deficit; +EXEC sp_addextendedproperty 'MS_Description', '鐩樺簱鏃堕棿', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', stocktaking_date; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', stocktaking_bound_detail, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[store_early warning]') AND type in (N'U')) DROP TABLE [dbo].[store_early warning]; +CREATE TABLE [dbo].[store_early warning]( + id VARCHAR(32) NOT NULL, + tool_code VARCHAR(32) NOT NULL, + tool_id VARCHAR(64), + goods_shelves_id VARCHAR(32), + lower_inventory DECIMAL(64), + highest_inventory DECIMAL(64), + total_count DECIMAL(64), + available_quantity DECIMAL(64), + status VARCHAR(255), + remark VARCHAR(216), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '搴撳瓨棰勮', 'SCHEMA', dbo, 'table', store_early warning, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', store_early warning, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', store_early warning, 'column', tool_code; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栧彿', 'SCHEMA', dbo, 'table', store_early warning, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '瀛樺偍浣嶇疆', 'SCHEMA', dbo, 'table', store_early warning, 'column', goods_shelves_id; +EXEC sp_addextendedproperty 'MS_Description', '搴撳瓨涓嬮檺', 'SCHEMA', dbo, 'table', store_early warning, 'column', lower_inventory; +EXEC sp_addextendedproperty 'MS_Description', '搴撳瓨涓婇檺', 'SCHEMA', dbo, 'table', store_early warning, 'column', highest_inventory; +EXEC sp_addextendedproperty 'MS_Description', '鎬诲簱瀛樻暟閲�', 'SCHEMA', dbo, 'table', store_early warning, 'column', total_count; +EXEC sp_addextendedproperty 'MS_Description', '鍙敤搴撳瓨鏁伴噺', 'SCHEMA', dbo, 'table', store_early warning, 'column', available_quantity; +EXEC sp_addextendedproperty 'MS_Description', '鐘舵��;1宸插鐞嗭紱2.鏈鐞嗐��', 'SCHEMA', dbo, 'table', store_early warning, 'column', status; +EXEC sp_addextendedproperty 'MS_Description', '澶囨敞', 'SCHEMA', dbo, 'table', store_early warning, 'column', remark; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', store_early warning, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', store_early warning, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', store_early warning, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', store_early warning, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', store_early warning, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[goods_shelves_mark]') AND type in (N'U')) DROP TABLE [dbo].[goods_shelves_mark]; +CREATE TABLE [dbo].[goods_shelves_mark]( + id VARCHAR(32) NOT NULL, + warehouse_id VARCHAR(32) NOT NULL, + goods_shelves VARCHAR(32) NOT NULL, + storey VARCHAR(128) NOT NULL, + variety VARCHAR(255), + tenant_id VARCHAR, + created_by VARCHAR(32), + created_time DATETIME, + updated_by VARCHAR(32), + updated_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦灞傛帓搴撳瓨宸ュ叿鐗瑰緛鏍囨敞', 'SCHEMA', dbo, 'table', goods_shelves_mark, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '浠撳簱缂栧彿', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', warehouse_id; +EXEC sp_addextendedproperty 'MS_Description', '璐ф灦缂栧彿', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', goods_shelves; +EXEC sp_addextendedproperty 'MS_Description', '灞傛暟淇℃伅', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', storey; +EXEC sp_addextendedproperty 'MS_Description', '鍝佺-鏍囨敞瀛樻斁鍒�鍏峰搧绉嶄俊鎭�', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', variety; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', created_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', created_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', updated_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', goods_shelves_mark, 'column', updated_time; + +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tool_ledger]') AND type in (N'U')) DROP TABLE [dbo].[tool_ledger]; +CREATE TABLE [dbo].[tool_ledger]( + id VARCHAR(32) NOT NULL, + classify_id VARCHAR(32), + tool_id VARCHAR(32), + total_count VARCHAR(64), + available_count VARCHAR(64), + loss_count VARCHAR(64), + repair_count VARCHAR(64), + detection_count VARCHAR(64), + lend_count VARCHAR(64), + sharpening_count VARCHAR(64), + tenant_id VARCHAR, + create_by VARCHAR(32), + create_time DATETIME, + update_by VARCHAR(32), + update_time DATETIME, + PRIMARY KEY (id) +); + +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿鍙拌处鏁版嵁琛�', 'SCHEMA', dbo, 'table', tool_ledger, null, null; +EXEC sp_addextendedproperty 'MS_Description', '涓婚敭', 'SCHEMA', dbo, 'table', tool_ledger, 'column', id; +EXEC sp_addextendedproperty 'MS_Description', '鍒嗙被缂栫爜', 'SCHEMA', dbo, 'table', tool_ledger, 'column', classify_id; +EXEC sp_addextendedproperty 'MS_Description', '宸ュ叿缂栫爜', 'SCHEMA', dbo, 'table', tool_ledger, 'column', tool_id; +EXEC sp_addextendedproperty 'MS_Description', '鎬诲簱瀛�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', total_count; +EXEC sp_addextendedproperty 'MS_Description', '鍙敤搴撳瓨', 'SCHEMA', dbo, 'table', tool_ledger, 'column', available_count; +EXEC sp_addextendedproperty 'MS_Description', '鎬绘姤鎹熸暟閲�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', loss_count; +EXEC sp_addextendedproperty 'MS_Description', '鍦ㄤ慨鏁伴噺', 'SCHEMA', dbo, 'table', tool_ledger, 'column', repair_count; +EXEC sp_addextendedproperty 'MS_Description', '鍦ㄦ鏁伴噺', 'SCHEMA', dbo, 'table', tool_ledger, 'column', detection_count; +EXEC sp_addextendedproperty 'MS_Description', '鍦ㄥ�熸暟閲�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', lend_count; +EXEC sp_addextendedproperty 'MS_Description', '鍦ㄧ(鏁伴噺', 'SCHEMA', dbo, 'table', tool_ledger, 'column', sharpening_count; +EXEC sp_addextendedproperty 'MS_Description', '绉熸埛鍙�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', tenant_id; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓浜�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', create_by; +EXEC sp_addextendedproperty 'MS_Description', '鍒涘缓鏃堕棿', 'SCHEMA', dbo, 'table', tool_ledger, 'column', create_time; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊浜�', 'SCHEMA', dbo, 'table', tool_ledger, 'column', update_by; +EXEC sp_addextendedproperty 'MS_Description', '鏇存柊鏃堕棿', 'SCHEMA', dbo, 'table', tool_ledger, 'column', update_time; + diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java index 022303c..6690650 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java @@ -493,5 +493,35 @@ return Result.OK(""); } } + @GetMapping("/listWithLedgerAndConfig") + public Result<IPage<StocktakingPoundVo>> listWithLedgerAndConfig( + StocktakingPoundVo stocktakingPoundVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + // 浣跨敤 QueryGenerator 鏋勫缓 QueryWrapper + QueryWrapper<StocktakingPoundVo> queryWrapper = QueryGenerator.initQueryWrapper(stocktakingPoundVo, req.getParameterMap()); + + Page<StocktakingPoundVo> page = new Page<>(pageNo, pageSize); + IPage<StocktakingPoundVo> resultPage = baseToolsService.pageWithLedgerAndConfig(page, queryWrapper); + return Result.OK(resultPage); + } + + + + @GetMapping("/listWithSharpedAndConfig") + public Result<IPage<SharpeeningVo>> listWithSharpedAndConfig( + SharpeeningVo sharpeeningVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + + // 浣跨敤 QueryGenerator 鏋勫缓 QueryWrapper + QueryWrapper<SharpeeningVo> queryWrapper = QueryGenerator.initQueryWrapper(sharpeeningVo, req.getParameterMap()); + + Page<SharpeeningVo> page = new Page<>(pageNo, pageSize); + IPage<SharpeeningVo> resultPage = baseToolsService.pageWithSharpedAndConfig(page, queryWrapper); + return Result.OK(resultPage); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java new file mode 100644 index 0000000..1a80548 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InStoreDetailController.java @@ -0,0 +1,176 @@ +package org.jeecg.modules.tms.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tms.entity.InStoreDetail; +import org.jeecg.modules.tms.entity.ToolsClassify; +import org.jeecg.modules.tms.service.IInStoreDetailService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 鍏ュ簱鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Api(tags="鍏ュ簱鏄庣粏") +@RestController +@RequestMapping("/tms/inStoreDetail") +@Slf4j +public class InStoreDetailController extends JeecgController<InStoreDetail, IInStoreDetailService> { + @Autowired + private IInStoreDetailService inStoreDetailService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param inStoreDetail + * @param pageNo + * @param pageSize + * @param query + * @return + */ + //@AutoLog(value = "鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> findPageList(InStoreDetail inStoreDetail, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + @RequestParam Map<String, String> query) { + IPage<Map<String, Object>> pageList = inStoreDetailService.findPageList(pageNo, pageSize, query); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param inStoreDetail + * @return + */ + @AutoLog(value = "鍏ュ簱鏄庣粏-娣诲姞") + @ApiOperation(value="鍏ュ簱鏄庣粏-娣诲姞", notes="鍏ュ簱鏄庣粏-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:tms_in_store_detail:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody InStoreDetail inStoreDetail) { + inStoreDetailService.save(inStoreDetail); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param inStoreDetail + * @return + */ + @AutoLog(value = "鍏ュ簱鏄庣粏-缂栬緫") + @ApiOperation(value="鍏ュ簱鏄庣粏-缂栬緫", notes="鍏ュ簱鏄庣粏-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:tms_in_store_detail:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody InStoreDetail inStoreDetail) { + inStoreDetailService.updateById(inStoreDetail); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "鍏ュ簱鏄庣粏-閫氳繃id鍒犻櫎") + @ApiOperation(value="鍏ュ簱鏄庣粏-閫氳繃id鍒犻櫎", notes="鍏ュ簱鏄庣粏-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_in_store_detail:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + inStoreDetailService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "鍏ュ簱鏄庣粏-鎵归噺鍒犻櫎") + @ApiOperation(value="鍏ュ簱鏄庣粏-鎵归噺鍒犻櫎", notes="鍏ュ簱鏄庣粏-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_in_store_detail:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.inStoreDetailService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "鍏ュ簱鏄庣粏-閫氳繃id鏌ヨ") + @ApiOperation(value="鍏ュ簱鏄庣粏-閫氳繃id鏌ヨ", notes="鍏ュ簱鏄庣粏-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<InStoreDetail> queryById(@RequestParam(name="id",required=true) String id) { + InStoreDetail inStoreDetail = inStoreDetailService.getById(id); + if(inStoreDetail==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(inStoreDetail); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param inStoreDetail + */ + //@RequiresPermissions("org.jeecg.modules:tms_in_store_detail:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, InStoreDetail inStoreDetail) { + return super.exportXls(request, inStoreDetail, InStoreDetail.class, "鍏ュ簱鏄庣粏"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tms_in_store_detail:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, InStoreDetail.class); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundDetailController.java new file mode 100644 index 0000000..217b4e3 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundDetailController.java @@ -0,0 +1,174 @@ +package org.jeecg.modules.tms.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tms.entity.InboundDetail; +import org.jeecg.modules.tms.service.IInboundDetailService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 鍏ュ簱鐢宠鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Api(tags="鍏ュ簱鐢宠鏄庣粏") +@RestController +@RequestMapping("/tms/inboundDetail") +@Slf4j +public class InboundDetailController extends JeecgController<InboundDetail, IInboundDetailService> { + @Autowired + private IInboundDetailService inboundDetailService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param inboundDetail + * @param pageNo + * @param pageSize + * @param query + * @return + */ + //@AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鐢宠鏄庣粏-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(InboundDetail inboundDetail, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam Map<String, String> query) { + IPage<Map<String, Object>> pageList = inboundDetailService.findPageList(pageNo, pageSize, query); + return Result.ok(pageList); + } + + /** + * 娣诲姞 + * + * @param inboundDetail + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-娣诲姞") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-娣诲姞", notes="鍏ュ簱鐢宠鏄庣粏-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_detail:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody InboundDetail inboundDetail) { + inboundDetailService.save(inboundDetail); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param inboundDetail + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-缂栬緫") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-缂栬緫", notes="鍏ュ簱鐢宠鏄庣粏-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_detail:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody InboundDetail inboundDetail) { + inboundDetailService.updateById(inboundDetail); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-閫氳繃id鍒犻櫎") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-閫氳繃id鍒犻櫎", notes="鍏ュ簱鐢宠鏄庣粏-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_detail:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + inboundDetailService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-鎵归噺鍒犻櫎") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-鎵归噺鍒犻櫎", notes="鍏ュ簱鐢宠鏄庣粏-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_detail:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.inboundDetailService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "鍏ュ簱鐢宠鏄庣粏-閫氳繃id鏌ヨ") + @ApiOperation(value="鍏ュ簱鐢宠鏄庣粏-閫氳繃id鏌ヨ", notes="鍏ュ簱鐢宠鏄庣粏-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<InboundDetail> queryById(@RequestParam(name="id",required=true) String id) { + InboundDetail inboundDetail = inboundDetailService.getById(id); + if(inboundDetail==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(inboundDetail); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param inboundDetail + */ + //@RequiresPermissions("org.jeecg.modules:tms_inbound_detail:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, InboundDetail inboundDetail) { + return super.exportXls(request, inboundDetail, InboundDetail.class, "鍏ュ簱鐢宠鏄庣粏"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tms_inbound_detail:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, InboundDetail.class); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java new file mode 100644 index 0000000..6852a66 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java @@ -0,0 +1,237 @@ +package org.jeecg.modules.tms.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.jeecg.modules.tms.entity.InboundDetail; +import org.jeecg.modules.tms.entity.InboundOrder; +import org.jeecg.modules.tms.entity.dto.InboundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.service.IInboundDetailService; +import org.jeecg.modules.tms.service.IInboundOrderService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 鍏ュ簱鐢宠鍗� + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Api(tags="鍏ュ簱鐢宠鍗�") +@RestController +@RequestMapping("/tms/inboundOrder") +@Slf4j +public class InboundOrderController extends JeecgController<InboundOrder, IInboundOrderService> { + @Autowired + private IInboundOrderService inboundOrderService; + + @Autowired + private IInboundDetailService inboundDetailService; + + + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param inboundOrder + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "鍏ュ簱鐢宠鍗�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍏ュ簱鐢宠鍗�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<InboundOrder>> queryPageList(InboundOrder inboundOrder, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<InboundOrder> queryWrapper = QueryGenerator.initQueryWrapper(inboundOrder, req.getParameterMap()); + Page<InboundOrder> page = new Page<InboundOrder>(pageNo, pageSize); + IPage<InboundOrder> pageList = inboundOrderService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param jSONObject + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鍗�-娣诲姞") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-娣诲姞", notes="鍏ュ簱鐢宠鍗�-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_order:add") + @PostMapping(value = "/add") + public Result<?> add(@RequestBody JSONObject jSONObject) { + InboundOrder inboundOrder = jSONObject.toJavaObject(InboundOrder.class); + inboundOrder.setOrderStatus("1"); + inboundOrder.setInStatus("1"); + inboundOrder.setInboundNum(businessCodeRuleService.generateBusinessCodeSeq("InBoundOrder")); + inboundOrderService.save(inboundOrder); + // 淇濆瓨鍏ュ簱鐢宠鍗曟槑缁嗘暟鎹� + JSONArray jsonArray = jSONObject.getJSONArray("detailData"); + List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class); + for (int i = 0; i < list.size(); i++) { + InboundDetail temp = list.get(i); + temp.setInStorehouseId(inboundOrder.getId()); + temp.setToolCode(temp.getToolCodeId()); + } + inboundDetailService.saveBatch(list); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param jSONObject + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鍗�-缂栬緫") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-缂栬緫", notes="鍏ュ簱鐢宠鍗�-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_order:edit") + @PostMapping(value = "/edit") + public Result<?> edit(@RequestBody JSONObject jSONObject) { + InboundOrder inboundOrder = jSONObject.toJavaObject(InboundOrder.class); + inboundOrderService.updateById(inboundOrder); + // 鍒犻櫎鐢宠鍗曟槑缁嗘暟鎹� + inboundDetailService.deleteByInboundOrderId(inboundOrder.getId()); + // 淇濆瓨鍏ュ簱鐢宠鍗曟槑缁嗘暟鎹� + JSONArray jsonArray = jSONObject.getJSONArray("detailData"); + List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class); + for (int i = 0; i < list.size(); i++) { + InboundDetail temp = list.get(i); + temp.setInStorehouseId(inboundOrder.getId()); + temp.setToolCode(temp.getToolCodeId()); + } + inboundDetailService.saveOrUpdateBatch(list); + return Result.OK("鎿嶄綔鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鍗�-閫氳繃id鍒犻櫎") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-閫氳繃id鍒犻櫎", notes="鍏ュ簱鐢宠鍗�-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_order:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + inboundOrderService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鍗�-鎵归噺鍒犻櫎") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-鎵归噺鍒犻櫎", notes="鍏ュ簱鐢宠鍗�-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_inbound_order:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.inboundOrderService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "鍏ュ簱鐢宠鍗�-閫氳繃id鏌ヨ") + @ApiOperation(value="鍏ュ簱鐢宠鍗�-閫氳繃id鏌ヨ", notes="鍏ュ簱鐢宠鍗�-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<InboundOrder> queryById(@RequestParam(name="id",required=true) String id) { + InboundOrder inboundOrder = inboundOrderService.getById(id); + if(inboundOrder==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(inboundOrder); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param inboundOrder + */ + //@RequiresPermissions("org.jeecg.modules:tms_inbound_order:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, InboundOrder inboundOrder) { + return super.exportXls(request, inboundOrder, InboundOrder.class, "鍏ュ簱鐢宠鍗�"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tms_inbound_order:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, InboundOrder.class); + } + + /** + * 鎻愪氦 + * + * @param id + * @return + */ + @AutoLog(value = "鍏ュ簱鐢宠鍗�-鎻愪氦") + @GetMapping(value = "/submit") + public Result<String> submit(@RequestParam(name = "id") String id) { + inboundOrderService.submit(id); + return Result.OK("鎻愪氦鎴愬姛!"); + } + + @AutoLog(value = "瀹℃壒娴佺▼") + @ApiOperation(value = "鍏ュ簱鐢宠鍗�-瀹℃壒娴佺▼", notes = "鍏ュ簱鐢宠鍗�-瀹℃壒娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody InboundOrderFlowDto inboundOrderFlowDto) { + inboundOrderService.approvalProcess(inboundOrderFlowDto); + return Result.OK("鎿嶄綔鎴愬姛"); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java new file mode 100644 index 0000000..11f95c5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutStoreDetailController.java @@ -0,0 +1,179 @@ +package org.jeecg.modules.tms.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; +import org.jeecg.modules.tms.service.IOutStoreDetailService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Api(tags="宸ュ叿鍑哄簱娴佹按") +@RestController +@RequestMapping("/tms/outStoreDetail") +@Slf4j +public class OutStoreDetailController extends JeecgController<OutStoreDetail, IOutStoreDetailService> { + @Autowired + private IOutStoreDetailService outStoreDetailService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param outStoreDetail + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ", notes="宸ュ叿鍑哄簱娴佹按-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<OutStoreDetailVo>> queryPageList(OutStoreDetail outStoreDetail, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + QueryWrapper<OutStoreDetail> queryWrapper = QueryGenerator.initQueryWrapper(outStoreDetail, parameterMap); + Page<OutStoreDetailVo> page = new Page<>(pageNo, pageSize); + IPage<OutStoreDetailVo> pageList = outStoreDetailService.queryPageList(page, parameterMap); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param outStoreDetail + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-娣诲姞") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-娣诲姞", notes="宸ュ叿鍑哄簱娴佹按-娣诲姞") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:add") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody OutStoreDetail outStoreDetail) { + outStoreDetailService.save(outStoreDetail); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param outStoreDetail + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-缂栬緫") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-缂栬緫", notes="宸ュ叿鍑哄簱娴佹按-缂栬緫") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody OutStoreDetail outStoreDetail) { + outStoreDetailService.updateById(outStoreDetail); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎", notes="宸ュ叿鍑哄簱娴佹按-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + outStoreDetailService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎", notes="宸ュ叿鍑哄簱娴佹按-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.outStoreDetailService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "宸ュ叿鍑哄簱娴佹按-閫氳繃id鏌ヨ") + @ApiOperation(value="宸ュ叿鍑哄簱娴佹按-閫氳繃id鏌ヨ", notes="宸ュ叿鍑哄簱娴佹按-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<OutStoreDetail> queryById(@RequestParam(name="id",required=true) String id) { + OutStoreDetail outStoreDetail = outStoreDetailService.getById(id); + if(outStoreDetail==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(outStoreDetail); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param outStoreDetail + */ + //@RequiresPermissions("org.jeecg.modules:tms_out_store_detail:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, OutStoreDetail outStoreDetail) { + return super.exportXls(request, outStoreDetail, OutStoreDetail.class, "宸ュ叿鍑哄簱娴佹按"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tms_out_store_detail:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, OutStoreDetail.class); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java index bed72c4..cb806cf 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/OutboundOrderController.java @@ -13,6 +13,7 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; import org.jeecg.modules.tms.enums.OutBillStatus; @@ -177,6 +178,14 @@ return Result.OK("鎿嶄綔鎴愬姛"); } + @AutoLog(value = "鐢宠鍗曟柟寮忓嚭搴�") + @ApiOperation(value = "鐢宠鍗曟柟寮忓嚭搴�", notes = "鐢宠鍗曟柟寮忓嚭搴�") + @PostMapping(value = "/outBound") + public Result<?> outBound(@RequestBody List<OutBoundRequestDto> outBoundRequestList) { + outboundOrderService.outBound(outBoundRequestList); + return Result.OK("鍑哄簱鎴愬姛"); + } + /** * 閫氳繃id鍒犻櫎 * @param id diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java new file mode 100644 index 0000000..bd1031a --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java @@ -0,0 +1,118 @@ +package org.jeecg.modules.tms.controller; + +import java.util.List; +import java.util.Map; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.tms.entity.ToolLedger; +import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; +import org.jeecg.modules.tms.service.IToolsSharpeningService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +import javax.servlet.http.HttpServletRequest; + +/** + * @Description: 鍒�鍏峰垉纾ㄨ褰� 鎺у埗鍣� + * @Author: houjie + * @Date: 2025-05-10 + */ +@RestController +@RequestMapping("/tms/toolSharpening") +@Api(tags = "鍒�鍏峰垉纾ㄨ褰曠鐞�") +public class ToolSharpeningController { + + @Autowired + private IToolsSharpeningService toolSharpeningService; + + /** + * 鍒嗛〉鏌ヨ + */ +// @GetMapping("/list") +// @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ") +// public Result<IPage<ToolSharpening>> queryPageList(ToolSharpening toolSharpening, +// @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, +// @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { +// Page<ToolSharpening> page = new Page<>(pageNo, pageSize); +// QueryWrapper<ToolSharpening> queryWrapper = new QueryWrapper<>(toolSharpening); +// IPage<ToolSharpening> iPage = toolSharpeningService.page(page, queryWrapper); +// return Result.OK(iPage); +// } + + + @ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ") + @GetMapping(value = "/listToolSharpening") + public Result<IPage<ToolSharpeningVo>> listToolSharpening(ToolSharpeningVo toolSharpeningVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + QueryWrapper<ToolSharpeningVo> queryWrapper = QueryGenerator.initQueryWrapper(toolSharpeningVo, parameterMap); + Page<ToolSharpeningVo> page = new Page<ToolSharpeningVo>(pageNo, pageSize); + IPage<ToolSharpeningVo> pageList = toolSharpeningService.queryPageList(page, parameterMap); + return Result.OK(pageList); + } + + /** + * 鏌ヨ鎵�鏈夋暟鎹� + */ + @GetMapping("/all") + @ApiOperation(value = "鏌ヨ鎵�鏈夋暟鎹�", notes = "鏌ヨ鎵�鏈夋暟鎹�") + public Result<List<ToolSharpening>> queryAll() { + List<ToolSharpening> list = toolSharpeningService.list(); + return Result.OK(list); + } + + /** + * 鏍规嵁ID鏌ヨ + */ + @GetMapping("/{id}") + @ApiOperation(value = "鏍规嵁ID鏌ヨ", notes = "鏍规嵁ID鏌ヨ") + public Result<ToolSharpening> queryById(@PathVariable String id) { + ToolSharpening entity = toolSharpeningService.getById(id); + return Result.OK(entity); + } + + + @AutoLog(value = "tms_tool_sharpening-娣诲姞") + @ApiOperation(value="tms_tool_sharpening-娣诲姞", notes="tms_tool_sharpening-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody ToolSharpening toolSharpening) { + toolSharpeningService.save(toolSharpening); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + /** + * 淇敼 + */ + @PutMapping + @ApiOperation(value = "淇敼", notes = "淇敼") + public Result<ToolSharpening> edit(@RequestBody ToolSharpening toolSharpening) { + toolSharpeningService.updateById(toolSharpening); + return Result.OK(toolSharpening); + } + + + + + /** + * 鍒犻櫎 + */ + + @AutoLog(value = "tms_tool_sharpening-閫氳繃id鍒犻櫎") + @ApiOperation(value="tms_tool_sharpening-閫氳繃id鍒犻櫎", notes="tms_tool_sharpening-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + toolSharpeningService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java new file mode 100644 index 0000000..d610f05 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java @@ -0,0 +1,327 @@ +package org.jeecg.modules.tms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.OutboundOrder; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; +import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.service.IToolsLossBoundDetailService; +import org.jeecg.modules.tms.service.IToolsLossBoundService; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Description: 鎹熻�楀崟 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +@Slf4j +@Api(tags="鎹熻�楀崟") +@RestController + @RequestMapping("/tms/toolsLossBound") +public class ToolsLossBoundController extends JeecgController<ToolsLossBound, IToolsLossBoundService> { + @Autowired + private IToolsLossBoundService toolsLossBoundService; + @Autowired + private IToolsLossBoundDetailService toolsLossBoundDetailService; + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param toolsLossBound + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "鎹熻�楀崟-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="鎹熻�楀崟-鍒嗛〉鍒楄〃鏌ヨ", notes="鎹熻�楀崟-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(ToolsLossBound toolsLossBound, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ToolsLossBound> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBound, req.getParameterMap()); + Page<ToolsLossBound> page = new Page<ToolsLossBound>(pageNo, pageSize); + IPage<ToolsLossBound> pageList = toolsLossBoundService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + + /** + * 缂栬緫 + * + * @param toolsLossBound + * @return + */ + @AutoLog(value = "鎹熻�楀崟-缂栬緫") + @ApiOperation(value="鎹熻�楀崟-缂栬緫", notes="鎹熻�楀崟-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<?> edit(@RequestBody ToolsLossBound toolsLossBound) { + toolsLossBoundService.updateById(toolsLossBound); + return Result.OK("缂栬緫鎴愬姛!"); + } + /** + * 娣诲姞 + * @param toolsLossBound + * @return + */ + @AutoLog(value = "tms_loss_bound-娣诲姞") + @ApiOperation(value="tms_loss_bound-娣诲姞", notes="tms_loss_bound-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody ToolsLossBound toolsLossBound) { + toolsLossBoundService.save(toolsLossBound); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + @AutoLog(value = "tms_loss_bound-娣诲姞鎶ユ崯鐢宠鍗曚富琛ㄥ強鏄庣粏淇℃伅") + @ApiOperation(value="tms_loss_bound-娣诲姞鎶ユ崯鐢宠鍗曚富琛ㄥ強鏄庣粏淇℃伅", notes="tms_loss_bound-娣诲姞鎶ユ崯鐢宠鍗曚富琛ㄥ強鏄庣粏淇℃伅") + @PostMapping(value = "/addTotal") + public Result<String> addTotal(@RequestBody ToolsLossBound toolsLossBound) { + toolsLossBoundService.addTotal(toolsLossBound); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + @AutoLog(value = "tms_loss_bound-缂栬緫鎶ユ崯鍗曚富琛ㄥ強鏄庣粏淇℃伅") + @ApiOperation(value="tms_loss_bound-缂栬緫鎶ユ崯鍗曚富琛ㄥ強鏄庣粏淇℃伅", notes="tms_loss_bound-缂栬緫鎶ユ崯鍗曚富琛ㄥ強鏄庣粏淇℃伅") + @RequestMapping(value = "/editTotal", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> editTotal(@RequestBody ToolsLossBound toolsLossBound) { + toolsLossBoundService.editTotal(toolsLossBound); + return Result.OK("缂栬緫鎴愬姛锛�"); + } + + /** + * 閫氳繃id鍒犻櫎 + * @param id + * @return + */ + @AutoLog(value = "鎶ユ崯鍗曟槑缁�-閫氳繃id鍒犻櫎") + @ApiOperation(value="鎶ユ崯鍗曟槑缁�-閫氳繃id鍒犻櫎", notes="鎶ユ崯鍗曟槑缁�-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/deleteLootboundDetail") + public Result<String> deleteLootboundDetail(@RequestParam(name="id",required=true) String id) { + toolsLossBoundService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "鎹熻�楀崟-閫氳繃id鍒犻櫎") + @ApiOperation(value="鎹熻�楀崟-閫氳繃id鍒犻櫎", notes="鎹熻�楀崟-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<?> delete(@RequestParam(name="id",required=true) String id) { + toolsLossBoundService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + @AutoLog(value = "tms_loss_bound-鎻愪氦鎶ユ崯鍗�") + @ApiOperation(value="tms_loss_bound-鎻愪氦鎶ユ崯鍗�", notes="tms_loss_bound-鎻愪氦鎶ユ崯鍗�") + @GetMapping(value = "/submit") + public Result<String> submit(@RequestParam(name="id") String id) { + + + toolsLossBoundService.submintOrder(id); + return Result.OK("鎻愪氦鎴愬姛"); + } + + + + @AutoLog(value = "瀹℃壒娴佺▼") + @ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody LossBoundFlowDto lossBoundFlowDto) { + toolsLossBoundService.approvalProcess(lossBoundFlowDto); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @AutoLog(value = "鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎") + @ApiOperation(value="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎") + @DeleteMapping(value = "/deleteBatchLossboundDetail") + public Result<String> deleteBatchLossboundDetail(@RequestParam(name="ids",required=true) String ids) { + this.toolsLossBoundDetailService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "鎹熻�楀崟-鎵归噺鍒犻櫎") + @ApiOperation(value="鎹熻�楀崟-鎵归噺鍒犻櫎", notes="鎹熻�楀崟-鎵归噺鍒犻櫎") + @DeleteMapping(value = "/deleteBatch") + public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.toolsLossBoundService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @AutoLog(value = "鎹熻�楀崟-閫氳繃id鏌ヨ") + @ApiOperation(value="鎹熻�楀崟-閫氳繃id鏌ヨ", notes="鎹熻�楀崟-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name="id",required=true) String id) { + ToolsLossBound toolsLossBound = toolsLossBoundService.getById(id); + return Result.OK(toolsLossBound); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param toolsLossBound + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ToolsLossBound toolsLossBound) { + return super.exportXls(request, toolsLossBound, ToolsLossBound.class, "鎹熻�楀崟"); + } + + + /** + * 瀵煎嚭 + * @return + */ + @RequestMapping(value = "/exportLossboundDetail") + public ModelAndView exportLossboundDetail(HttpServletRequest request, ToolsLossBoundDetail toolsLossBoundDetail) { + // Step.1 缁勮鏌ヨ鏉′欢 + QueryWrapper<ToolsLossBoundDetail> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBoundDetail, request.getParameterMap()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + + // Step.2 鑾峰彇瀵煎嚭鏁版嵁 + List<ToolsLossBoundDetail> pageList = toolsLossBoundDetailService.list(queryWrapper); + List<ToolsLossBoundDetail> exportList = null; + + // 杩囨护閫変腑鏁版嵁 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List<String> selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; + } + + // Step.3 AutoPoi 瀵煎嚭Excel + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + //姝ゅ璁剧疆鐨刦ilename鏃犳晥,鍓嶇浼氶噸鏇存柊璁剧疆涓�涓� + mv.addObject(NormalExcelConstants.FILE_NAME, "鎶ユ崯鍗曟槑缁�"); + mv.addObject(NormalExcelConstants.CLASS, OutboundDetail.class); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("鎶ユ崯鍗曟槑缁嗘姤琛�", "瀵煎嚭浜�:" + sysUser.getRealname(), "鎶ユ崯鍗曟槑缁�")); + mv.addObject(NormalExcelConstants.DATA_LIST, exportList); + return mv; + } + + + /** + * 瀵煎叆 + * @return + */ + @RequestMapping(value = "/importLossboundDetail/{mainId}") + public Result<?> importLossboundDetail(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(1); + params.setNeedSave(true); + try { + List<ToolsLossBoundDetail> list = ExcelImportUtil.importExcel(file.getInputStream(), ToolsLossBoundDetail.class, params); + for (ToolsLossBoundDetail temp : list) { + temp.setLossBoundId(mainId); + } + long start = System.currentTimeMillis(); + toolsLossBoundDetailService.saveBatch(list); + log.info("娑堣�楁椂闂�" + (System.currentTimeMillis() - start) + "姣"); + return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁帮細" + list.size()); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.error("鏂囦欢瀵煎叆澶辫触:" + e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.error("鏂囦欢瀵煎叆澶辫触锛�"); + } + + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ToolsLossBound.class); + } + + + + /** + * 閫氳繃涓昏〃ID鏌ヨ + * @return + */ + + @ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ") + @GetMapping(value = "/listlossboundDetailByMainId") + public Result<IPage<ToolsLossBoundDetail>> listlossboundDetailByMainId(ToolsLossBoundDetail toolsLossBoundDetail, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + QueryWrapper<ToolsLossBoundDetail> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBoundDetail, parameterMap); + Page<ToolsLossBoundDetail> page = new Page<ToolsLossBoundDetail>(pageNo, pageSize); + IPage<ToolsLossBoundDetail> pageList = toolsLossBoundDetailService.queryPageList(page, parameterMap); + return Result.OK(pageList); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java new file mode 100644 index 0000000..ffef65a --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java @@ -0,0 +1,286 @@ +package org.jeecg.modules.tms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.jeecg.modules.tms.entity.BaseTools; +import org.jeecg.modules.tms.entity.ToolsStocktakingBound; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; +import org.jeecg.modules.tms.entity.vo.ToolsStocktakingVo; +import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper; +import org.jeecg.modules.tms.service.IToolsStocktakingBoundDetailService; +import org.jeecg.modules.tms.service.IToolsStocktakingBoundService; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Api(tags = "鐩樼偣鍗曡〃") +@RestController +@RequestMapping("/tms/toolsStocktakingBound") +@Slf4j +public class ToolsStocktakingBoundController { + @Autowired + private IToolsStocktakingBoundService toolsStocktakingBoundService; + @Autowired + private IToolsStocktakingBoundDetailService toolsStocktakingBoundDetailService; + @Autowired + private ToolsStocktakingBoundMapper toolsStocktakingBoundMapper; + + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param toolsStocktakingBound + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "鐩樼偣鍗曡〃-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "鐩樼偣鍗曡〃-鍒嗛〉鍒楄〃鏌ヨ", notes = "鐩樼偣鍗曡〃-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<ToolsStocktakingBound>> queryPageList(ToolsStocktakingBound toolsStocktakingBound, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ToolsStocktakingBound> queryWrapper = QueryGenerator.initQueryWrapper(toolsStocktakingBound, req.getParameterMap()); + Page<ToolsStocktakingBound> page = new Page<ToolsStocktakingBound>(pageNo, pageSize); + IPage<ToolsStocktakingBound> pageList = toolsStocktakingBoundService.page(page, queryWrapper); + return Result.OK(pageList); + } + + + /** + * 娣诲姞 + * + * @param toolsStocktakingBound + * @return + */ + @AutoLog(value = "tms_stocktaking_bound-娣诲姞") + @ApiOperation(value = "tms_stocktaking_bound-娣诲姞", notes = "tms_stocktaking_bound-娣诲姞") + @PostMapping(value = "/add") + @Transactional(rollbackFor = {Exception.class}) + public Result<String> add(@RequestBody ToolsStocktakingBound toolsStocktakingBound) { + toolsStocktakingBound.setApprovalStatus(OutBillStatus.DRAFT.getValue()); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (sysUser != null) { + toolsStocktakingBound.setHandler(sysUser.getId()); + } + toolsStocktakingBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("stocktakingBound")); + //鏍¢獙鐗╂枡鍦ㄥ師鏉愭枡鍛ㄨ浆搴撳瓨涓嶅瓨鍦� + List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList = toolsStocktakingBound.getToolsStocktakingBoundDetailList(); + + toolsStocktakingBoundService.save(toolsStocktakingBound); + for (int i = 0; i < toolsStocktakingBoundDetailList.size(); i++) { + ToolsStocktakingBoundDetail toolsStocktakingBoundDetail = toolsStocktakingBoundDetailList.get(i); + toolsStocktakingBoundDetail.setAvailableQuantity(toolsStocktakingBoundDetail.getBookQuantity()); + toolsStocktakingBoundDetail.setPracticalQuantity(toolsStocktakingBoundDetail.getPracticalQuantity()); + toolsStocktakingBoundDetail.setSurplusDeficit(toolsStocktakingBoundDetail.getSurplusDeficit()); + toolsStocktakingBoundDetail.setStocktakingDate(toolsStocktakingBoundDetail.getStocktakingDate()); + toolsStocktakingBoundDetail.setRemark(toolsStocktakingBoundDetail.getRemark()); + toolsStocktakingBoundDetail.setToolId(toolsStocktakingBoundDetail.getToolId()); + toolsStocktakingBoundDetail.setToolCode(toolsStocktakingBoundDetail.getToolCode()); + toolsStocktakingBoundDetail.setStocktakingBoundId(toolsStocktakingBound.getId()); + toolsStocktakingBoundDetailService.save(toolsStocktakingBoundDetail); + } + return Result.OK(); + + + } + + + @ApiOperation(value = "宸ュ叿鐩樼偣鏄庣粏-閫氳繃涓昏〃ID鏌ヨ", notes = "宸ュ叿鐩樼偣鏄庣粏-閫氳繃涓昏〃ID鏌ヨ") + @GetMapping(value = "/listToolsStocktakingBoundControllerDetailsByMainId") + public Result<IPage<ToolsStocktakingBoundDetail>> listToolsStocktakingBoundControllerDetailsByMainId(BaseTools baseTools, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + Page<ToolsStocktakingBoundDetail> page = new Page<ToolsStocktakingBoundDetail>(pageNo, pageSize); + IPage<ToolsStocktakingBoundDetail> pageList = toolsStocktakingBoundDetailService.selectByMainId(page, parameterMap); + + return Result.OK(pageList); + } + + + @AutoLog(value = "tms_stocktaking_bound-鎻愪氦鐩樼偣鍗�") + @ApiOperation(value = "tms_stocktaking_bound-鎻愪氦鐩樼偣鍗�", notes = "tms_stocktaking_bound-鎻愪氦鐩樼偣鍗�") + @GetMapping(value = "/submit") + public Result<String> submit(@RequestParam(name = "id") String id) { + + + toolsStocktakingBoundService.submintOrder(id); + return Result.OK("鎻愪氦鎴愬姛"); + } + + /** + * 瀹℃壒娴佺▼ + * @param stocktakingBoundFlowDto + * @return + */ + @AutoLog(value = "瀹℃壒娴佺▼") + @ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody StocktakingBoundFlowDto stocktakingBoundFlowDto) { + toolsStocktakingBoundService.approvalProcess(stocktakingBoundFlowDto); + return Result.OK("鎿嶄綔鎴愬姛"); + } + /** + * 缂栬緫 + * + * @param toolsStocktakingBound + * @return + */ + @AutoLog(value = "鐩樼偣鍗曡〃-缂栬緫") + @ApiOperation(value = "鐩樼偣鍗曡〃-缂栬緫", notes = "鐩樼偣鍗曡〃-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + @Transactional(rollbackFor = {Exception.class}) + public Result<String> edit(@RequestBody ToolsStocktakingBound toolsStocktakingBound) { + if (toolsStocktakingBound == null || StringUtils.isBlank(toolsStocktakingBound.getId())) { + return Result.error("鍙傛暟閿欒"); + } + + toolsStocktakingBoundDetailService.remove(new LambdaQueryWrapper<ToolsStocktakingBoundDetail>() + .eq(ToolsStocktakingBoundDetail::getStocktakingBoundId, toolsStocktakingBound.getId())); + + ToolsStocktakingBound stocktakingBound = new ToolsStocktakingBound(); + BeanUtils.copyProperties(stocktakingBound, toolsStocktakingBound); + toolsStocktakingBoundMapper.updateById(stocktakingBound); + + + List<ToolsStocktakingBoundDetail> detailList = toolsStocktakingBound.getToolsStocktakingBoundDetailList(); + if (CollectionUtils.isEmpty(detailList)) { + return Result.error("鏄庣粏涓嶈兘涓虹┖"); + } + + detailList.forEach(item -> item.setStocktakingBoundId(stocktakingBound.getId())); + toolsStocktakingBoundDetailService.saveBatch(detailList); + + return Result.OK("缂栬緫鎴愬姛"); + } + + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "鐩樼偣鍗曡〃-閫氳繃id鍒犻櫎") + @ApiOperation(value = "鐩樼偣鍗曡〃-閫氳繃id鍒犻櫎", notes = "鐩樼偣鍗曡〃-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name = "id", required = true) String id) { + toolsStocktakingBoundService.delMain(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "鐩樼偣鍗曡〃-鎵归噺鍒犻櫎") + @ApiOperation(value = "鐩樼偣鍗曡〃-鎵归噺鍒犻櫎", notes = "鐩樼偣鍗曡〃-鎵归噺鍒犻櫎") + + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.toolsStocktakingBoundService.delBatchMain(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "鐩樼偣鍗曡〃-閫氳繃id鏌ヨ") + @ApiOperation(value = "鐩樼偣鍗曡〃-閫氳繃id鏌ヨ", notes = "鐩樼偣鍗曡〃-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<ToolsStocktakingBound> queryById(@RequestParam(name = "id", required = true) String id) { + ToolsStocktakingBound toolsStocktakingBound = toolsStocktakingBoundService.getById(id); + if (toolsStocktakingBound == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(toolsStocktakingBound); + + } + + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); + for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { + // 鑾峰彇涓婁紶鏂囦欢瀵硅薄 + MultipartFile file = entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(2); + params.setHeadRows(1); + params.setNeedSave(true); + try { + List<ToolsStocktakingVo> list = ExcelImportUtil.importExcel(file.getInputStream(), ToolsStocktakingVo.class, params); + for (ToolsStocktakingVo page : list) { + ToolsStocktakingBound po = new ToolsStocktakingBound(); + BeanUtils.copyProperties(page, po); + toolsStocktakingBoundService.saveMain(po, page.getToolsStocktakingBoundDetailList()); + } + return Result.OK("鏂囦欢瀵煎叆鎴愬姛锛佹暟鎹鏁�:" + list.size()); + } catch (Exception e) { + log.error(e.getMessage(), e); + return Result.error("鏂囦欢瀵煎叆澶辫触:" + e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK("鏂囦欢瀵煎叆澶辫触锛�"); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java new file mode 100644 index 0000000..e2a8f25 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java @@ -0,0 +1,159 @@ +package org.jeecg.modules.tms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning; +import org.jeecg.modules.tms.service.IToolsStoreEarlyWarningService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + + /** + * @Description: tools_store_early warning + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Api(tags="tools_store_early warning") +@RestController +@RequestMapping("/tms/toolsStoreEarlyWarning") +@Slf4j +public class ToolsStoreEarlyWarningController extends JeecgController<ToolsStoreEarlyWarning, IToolsStoreEarlyWarningService> { + @Autowired + private IToolsStoreEarlyWarningService toolsStoreEarlyWarningService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param tmsStoreEarlyWarning + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "tools_store_early warning-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value="tools_store_early warning-鍒嗛〉鍒楄〃鏌ヨ", notes="tools_store_early warning-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<IPage<ToolsStoreEarlyWarning>> queryPageList(ToolsStoreEarlyWarning tmsStoreEarlyWarning, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<ToolsStoreEarlyWarning> queryWrapper = QueryGenerator.initQueryWrapper(tmsStoreEarlyWarning, req.getParameterMap()); + Page<ToolsStoreEarlyWarning> page = new Page<ToolsStoreEarlyWarning>(pageNo, pageSize); + IPage<ToolsStoreEarlyWarning> pageList = toolsStoreEarlyWarningService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param toolsStoreEarlyWarning + * @return + */ + @AutoLog(value = "tools_store_early warning-娣诲姞") + @ApiOperation(value="tools_store_early warning-娣诲姞", notes="tools_store_early warning-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody ToolsStoreEarlyWarning toolsStoreEarlyWarning) { + toolsStoreEarlyWarningService.save(toolsStoreEarlyWarning); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param tmsStoreEarlyWarning + * @return + */ + @AutoLog(value = "tools_store_early warning-缂栬緫") + @ApiOperation(value="tools_store_early warning-缂栬緫", notes="tools_store_early warning-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result<String> edit(@RequestBody ToolsStoreEarlyWarning tmsStoreEarlyWarning) { + toolsStoreEarlyWarningService.updateById(tmsStoreEarlyWarning); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "tools_store_early warning-閫氳繃id鍒犻櫎") + @ApiOperation(value="tools_store_early warning-閫氳繃id鍒犻櫎", notes="tools_store_early warning-閫氳繃id鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_tools_config_property:delete") + @DeleteMapping(value = "/delete") + public Result<String> delete(@RequestParam(name="id",required=true) String id) { + toolsStoreEarlyWarningService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "tools_store_early warning-鎵归噺鍒犻櫎") + @ApiOperation(value="tools_store_early warning-鎵归噺鍒犻櫎", notes="tools_store_early warning-鎵归噺鍒犻櫎") + //@RequiresPermissions("org.jeecg.modules:tms_tools_config_property:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.toolsStoreEarlyWarningService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛!"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + //@AutoLog(value = "tools_store_early warning-閫氳繃id鏌ヨ") + @ApiOperation(value="tools_store_early warning-閫氳繃id鏌ヨ", notes="tools_store_early warning-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<ToolsStoreEarlyWarning> queryById(@RequestParam(name="id",required=true) String id) { + ToolsStoreEarlyWarning tmsStoreEarlyWarning = toolsStoreEarlyWarningService.getById(id); + if(tmsStoreEarlyWarning==null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + return Result.OK(tmsStoreEarlyWarning); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param tmsStoreEarlyWarning + */ + //@RequiresPermissions("tools_tools_config_property:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ToolsStoreEarlyWarning tmsStoreEarlyWarning) { + return super.exportXls(request, tmsStoreEarlyWarning, ToolsStoreEarlyWarning.class, "tools_store_early warning"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + //@RequiresPermissions("tools_tools_config_property:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ToolsStoreEarlyWarning.class); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java new file mode 100644 index 0000000..1239559 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InStoreDetail.java @@ -0,0 +1,96 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 鍏ュ簱鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Data +@TableName("tms_in_store_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_in_store_detail瀵硅薄", description="鍏ュ簱鏄庣粏") +public class InStoreDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栫爜*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**宸ュ叿鍏ュ簱绫诲瀷*/ + @Excel(name = "宸ュ叿鍏ュ簱绫诲瀷", width = 15) + @ApiModelProperty(value = "宸ュ叿鍏ュ簱绫诲瀷") + @Dict(dicCode = "in_storehouse_type") + private String inStorehouseType; + /**搴撲綅鍙�*/ + @Excel(name = "搴撲綅鍙�", width = 15) + @ApiModelProperty(value = "搴撲綅鍙�") + private String goodsShelvesId; + /**鍏ュ簱鏁伴噺*/ + @Excel(name = "鍏ュ簱鏁伴噺", width = 15) + @ApiModelProperty(value = "鍏ュ簱鏁伴噺") + private BigDecimal inNumber; + /**鍏ュ簱鐢宠鍗曞彿*/ + @Excel(name = "鍏ュ簱鐢宠鍗曞彿", width = 15) + @ApiModelProperty(value = "鍏ュ簱鐢宠鍗曞彿") + private String inStorehouseId; + /**鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 +2.鎵嬪伐鎿嶄綔*/ + @Excel(name = "鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔", width = 15) + @ApiModelProperty(value = "鍏ュ簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + @Dict(dicCode = "inbound_operate_type") + private java.lang.String operateType; + /**鍏ュ簱鏃堕棿*/ + @Excel(name = "鍏ュ簱鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍏ュ簱鏃堕棿") + private Date inboundTime; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java new file mode 100644 index 0000000..9569464 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java @@ -0,0 +1,97 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 鍏ュ簱鐢宠鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Data +@TableName("tms_inbound_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_inbound_detail瀵硅薄", description="鍏ュ簱鐢宠鏄庣粏") +public class InboundDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**鍏ュ簱鐢宠鍗曞彿*/ + @Excel(name = "鍏ュ簱鐢宠鍗曞彿", width = 15) + @ApiModelProperty(value = "鍏ュ簱鐢宠鍗曞彿") + private String inStorehouseId; + /**璐ф灦鍙�/瀛樺偍浣嶇疆*/ + @Excel(name = "璐ф灦鍙�/瀛樺偍浣嶇疆", width = 15) + @ApiModelProperty(value = "璐ф灦鍙�/瀛樺偍浣嶇疆") + private String goodsShelvesId; + /**宸ュ叿缂栫爜*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**鍏ュ簱鏁伴噺*/ + @Excel(name = "鍏ュ簱鏁伴噺", width = 15) + @ApiModelProperty(value = "鍏ュ簱鏁伴噺") + private BigDecimal inStorageQuantity; + /**瀹為檯鍏ュ簱鏁伴噺*/ + @Excel(name = "瀹為檯鍏ュ簱鏁伴噺", width = 15) + @ApiModelProperty(value = "瀹為檯鍏ュ簱鏁伴噺") + private BigDecimal inActualCount; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; + + @TableField(exist = false) + private String toolName; + + @TableField(exist = false) + private String toolModel; + + @TableField(exist = false) + private String inStorehouseType; + + @TableField(exist = false) + private String toolCodeId; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundOrder.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundOrder.java new file mode 100644 index 0000000..880d4df --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundOrder.java @@ -0,0 +1,116 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 鍏ュ簱鐢宠鍗� + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Data +@TableName("tms_inbound_order") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_inbound_order瀵硅薄", description="鍏ュ簱鐢宠鍗�") +public class InboundOrder implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭id") + private String id; + /**鍏ュ簱鍗曠紪鍙�*/ + @Excel(name = "鍏ュ簱鍗曠紪鍙�", width = 15) + @ApiModelProperty(value = "鍏ュ簱鍗曠紪鍙�") + private String inboundNum; + /**鍏ュ簱鏃堕棿*/ + @Excel(name = "鍏ュ簱鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍏ュ簱鏃堕棿") + private Date inboundTime; + /**鍏ュ簱绫诲瀷*/ + @Excel(name = "鍏ュ簱绫诲瀷", width = 15) + @ApiModelProperty(value = "鍏ュ簱绫诲瀷") + @Dict(dicCode = "in_storehouse_type") + private String inStorehouseType; + /**缁忔墜浜�*/ + @Excel(name = "缁忔墜浜�", width = 15) + @ApiModelProperty(value = "缁忔墜浜�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String handler; + /**鍊熺敤鍗曞彿*/ + @Excel(name = "鍊熺敤鍗曞彿", width = 15) + @ApiModelProperty(value = "鍊熺敤鍗曞彿") + private String borrowNum; + /**瀹℃牳浜�*/ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String reviewer; + /**瀹℃牳鏃堕棿*/ + @Excel(name = "瀹℃牳鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + private Date approvalDate; + /**瀹℃牳鎰忚*/ + @Excel(name = "瀹℃牳鎰忚", width = 15) + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalOpinion; + /**鍗曞瓙鐘舵��*/ + @Excel(name = "鍗曞瓙鐘舵��", width = 15) + @ApiModelProperty(value = "鍗曞瓙鐘舵��") + @Dict(dicCode = "in_bill_status") + private String orderStatus; + /**鍏ュ簱鐘舵��*/ + @Excel(name = "鍏ュ簱鐘舵��", width = 15) + @Dict(dicCode = "in_status") + @ApiModelProperty(value = "鍏ュ簱鐘舵��") + private String inStatus; + /**鐢宠鍘熷洜*/ + @Excel(name = "鐢宠鍘熷洜", width = 15) + @ApiModelProperty(value = "鐢宠鍘熷洜") + private String applicationReason; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鎿嶄綔鍛�*/ + @ApiModelProperty(value = "鎿嶄綔鍛�") + private String createBy; + /**鐢宠鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鐢宠鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java new file mode 100644 index 0000000..02d5c01 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutStoreDetail.java @@ -0,0 +1,87 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Data +@TableName("tms_out_store_detail") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_out_store_detail瀵硅薄", description="宸ュ叿鍑哄簱娴佹按") +public class OutStoreDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栫爜*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**鍑哄簱绫诲瀷*/ + @Excel(name = "鍑哄簱绫诲瀷", width = 15) + @ApiModelProperty(value = "鍑哄簱绫诲瀷") + private String outStorehouseType; + /**搴撲綅鍙�*/ + @Excel(name = "搴撲綅鍙�", width = 15) + @ApiModelProperty(value = "搴撲綅鍙�") + private String goodsShelvesCode; + /**鍑哄簱鏁伴噺*/ + @Excel(name = "鍑哄簱鏁伴噺", width = 15) + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outNumber; + /**鍑哄簱鐢宠鍗曞彿*/ + @Excel(name = "鍑哄簱鐢宠鍗曞彿", width = 15) + @ApiModelProperty(value = "鍑哄簱鐢宠鍗曞彿") + private String outStorehouseId; + /**鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔*/ + @Excel(name = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔", width = 15) + @ApiModelProperty(value = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + private String operateType; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java index 21ca411..23b6d36 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/OutboundDetail.java @@ -36,11 +36,11 @@ private String outStorehouseId; /**鍒�鍏风紪鐮�*/ @Excel(name = "鍒�鍏风紪鐮�", width = 15) - @ApiModelProperty(value = "鍒�鍏风紪鐮�") + @ApiModelProperty(value = "鍒�鍏风紪鐮�(tms_base_tool琛ㄤ富閿甶d)") private String toolCode; /**鍒�鍏风紪鍙�*/ @Excel(name = "鍒�鍏风紪鍙�", width = 15) - @ApiModelProperty(value = "鍒�鍏风紪鍙�") + @ApiModelProperty(value = "鍒�鍏风紪鍙�(鍒�鍏峰敮涓�缂栫爜锛岀鍒版妸鐨勫睘鎬�)") private String toolId; /**鐢宠鍑哄簱鏁伴噺*/ @Excel(name = "鐢宠鍑哄簱鏁伴噺", width = 15) @@ -69,7 +69,7 @@ @Excel(name = "鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚", width = 15) @ApiModelProperty(value = "鍑哄簱鐘舵��;1.鏈嚭搴擄紱2.閮ㄥ垎鍑哄簱锛�3.鍑哄簱瀹屾垚") @Dict(dicCode = "out_storehouse_status") - private Integer status; + private String status; /**绉熸埛鍙�*/ @Excel(name = "绉熸埛鍙�", width = 15) @ApiModelProperty(value = "绉熸埛鍙�") diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedger.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedger.java index f58d3ca..6964e57 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedger.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedger.java @@ -47,31 +47,31 @@ /**鎬诲簱瀛�*/ @Excel(name = "鎬诲簱瀛�", width = 15) @ApiModelProperty(value = "鎬诲簱瀛�") - private String totalCount; + private BigDecimal totalCount; /**鍙敤搴撳瓨*/ @Excel(name = "鍙敤搴撳瓨", width = 15) @ApiModelProperty(value = "鍙敤搴撳瓨") - private String availableCount; + private BigDecimal availableCount; /**鎬绘姤鎹熸暟閲�*/ @Excel(name = "鎬绘姤鎹熸暟閲�", width = 15) @ApiModelProperty(value = "鎬绘姤鎹熸暟閲�") - private String lossCount; + private BigDecimal lossCount; /**鍦ㄤ慨鏁伴噺*/ @Excel(name = "鍦ㄤ慨鏁伴噺", width = 15) @ApiModelProperty(value = "鍦ㄤ慨鏁伴噺") - private String repairCount; + private BigDecimal repairCount; /**鍦ㄦ鏁伴噺*/ @Excel(name = "鍦ㄦ鏁伴噺", width = 15) @ApiModelProperty(value = "鍦ㄦ鏁伴噺") - private String detectionCount; + private BigDecimal detectionCount; /**鍦ㄥ�熸暟閲�*/ @Excel(name = "鍦ㄥ�熸暟閲�", width = 15) @ApiModelProperty(value = "鍦ㄥ�熸暟閲�") - private String lendCount; + private BigDecimal lendCount; /**鍦ㄧ(鏁伴噺*/ @Excel(name = "鍦ㄧ(鏁伴噺", width = 15) @ApiModelProperty(value = "鍦ㄧ(鏁伴噺") - private String sharpeningCount; + private BigDecimal sharpeningCount; /**绉熸埛鍙�*/ @Excel(name = "绉熸埛鍙�", width = 15) @ApiModelProperty(value = "绉熸埛鍙�") diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java new file mode 100644 index 0000000..35ef615 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java @@ -0,0 +1,87 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * @Description: tms_tool_sharpening + * @Author: houjie + * @Date: 2025-05-10 + * @Version: V1.0 + */ +@Data +@TableName("tms_tool_sharpening") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ToolSharpening瀵硅薄", description="鍒�鍏峰垉纾ㄨ褰曞疄浣撶被") +public class ToolSharpening implements Serializable { + private static final long serialVersionUID = 1L; + + /** 涓婚敭ID */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭ID") + private String id; + + /** 宸ュ叿缂栫爜 */ + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + + /** 宸ュ叿缂栧彿 */ + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + + /** 鍒冪(鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒冪(鏃堕棿") + private Date sharpeningTime; + + /** 鍒冪(缁撴灉鍙婂缓璁� */ + @ApiModelProperty(value = "鍒冪(缁撴灉鍙婂缓璁�") + private String sharpeningResult; + + /** 璐d换浜� */ + @ApiModelProperty(value = "璐d换浜�") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + private String responsiblePerson; + + /** 澶囨敞 */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** 绉熸埛鍙� */ + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + + /** 鍒涘缓浜� */ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + + /** 鍒涘缓鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + + /** 鏇存柊浜� */ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + + /** 鏇存柊鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private java.util.Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsConfigProperty.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsConfigProperty.java index 7084df0..6740196 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsConfigProperty.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsConfigProperty.java @@ -55,6 +55,7 @@ /**宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤*/ @Excel(name = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤", width = 15) @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") + @Dict(dicCode = "application_type") private java.lang.String applicationType; /**鏍囧噯绾у埆*/ @Excel(name = "鏍囧噯绾у埆", width = 15) diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java new file mode 100644 index 0000000..9eacee2 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java @@ -0,0 +1,150 @@ +package org.jeecg.modules.tms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Description: 鎹熻�楀崟 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ + +@ApiModel(value = "tms_loss_bound瀵硅薄", description = "鎹熻�楀崟") +@Data +@TableName("tms_loss_bound") +public class ToolsLossBound implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + + /** + * losser + */ + @Excel(name = "鎶ユ崯浜�", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + @ApiModelProperty(value = "losser") + private String losser; + + /** + * 鎶ユ崯鍗曞彿 + */ + @Excel(name = "orderCode", width = 15) + @ApiModelProperty(value = "orderCode") + private String orderCode; + + /** + * 缁忔墜浜� + */ + @Excel(name = "缁忔墜浜�", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + @ApiModelProperty(value = "缁忔墜浜�") + private String handler; + + /** + * 鎶ユ崯鏃堕棿 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鎶ユ崯鏃堕棿") + private java.util.Date lossTime; + + /** + * 瀹℃牳浜� + */ + @Excel(name = "瀹℃牳浜�", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id") + @ApiModelProperty(value = "reviewer") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + private String reviewer; + /** + * 瀹℃牳鏃堕棿 + */ + @Excel(name = "approvalDate", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + private java.util.Date approvalDate; + /** + * 瀹℃牳鐘舵�� + */ + @Excel(name = "orderStatus", width = 15) + @ApiModelProperty(value = "orderStatus") + @Dict(dicCode = "out_bill_status") + private String orderStatus; + /** + * 瀹℃牳鎰忚 + */ + @Excel(name = "approvalOpinion", width = 15) + @ApiModelProperty(value = "approvalOpinion") + private String approvalOpinion; + /** + * 鎶ユ崯鍘熷洜 + */ + @Excel(name = "lossReason", width = 15) + @ApiModelProperty(value = "lossReason") + private String lossReason; + /** + * 澶囨敞 + */ + @Excel(name = "remark", width = 15) + @ApiModelProperty(value = "remark") + private String remark; + /** + * 绉熸埛鍙� + */ + @Excel(name = "tenantId", width = 15) + @ApiModelProperty(value = "tenantId") + private String tenantId; + + + /**鍒涘缓浜�*/ + @Excel(name = "createdBy", width = 15) + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /** + * 鍒涘缓浜� + */ + @Excel(name = "createTime", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "createTime") + private Date createTime; + /** + * 鏇存柊浜� + */ + @Excel(name = "updateBy", width = 15) + @ApiModelProperty(value = "updateBy") + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ + @Excel(name = "updateTime", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "updateTime") + private Date updateTime; + + + @TableField(exist = false) + private List<ToolsLossBoundDetail> toolsLossBoundDetailList; + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java new file mode 100644 index 0000000..553d673 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java @@ -0,0 +1,154 @@ +package org.jeecg.modules.tms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 鎹熻�楀崟鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ + +@ApiModel(value = "tms_loss_bound_detail瀵硅薄", description = "鎹熻�楀崟鏄庣粏") +@Data +@TableName("tms_loss_bound_detail") +public class ToolsLossBoundDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 涓婚敭 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + + /** + * 宸ュ叿缂栫爜 + */ + @Excel(name = "toolCode", width = 15) + @ApiModelProperty(value = "toolCode") + private String toolCode; + /** + * 宸ュ叿缂栧彿 + */ + @Excel(name = "toolId", width = 15) + @ApiModelProperty(value = "toolId") + private String toolId; + /** + * 鎶ユ崯鍘熷洜 + */ + @Excel(name = "lossReason", width = 15) + @ApiModelProperty(value = "lossReason") + private String lossReason; + /** + * 鎶ユ崯鏁伴噺 + */ + @Excel(name = "lossNumber", width = 15) + @ApiModelProperty(value = "lossNumber") + private java.math.BigDecimal lossNumber; + /** + * 瀛樺偍浣嶇疆锛堝簱浣嶅彿锛� + */ + @Excel(name = "goodsShelvesId", width = 15) + @ApiModelProperty(value = "goodsShelvesId") + private String goodsShelvesId; + /** + * 鍏ュ簱鏃堕棿 + */ + @Excel(name = "inStoreDate", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "inStoreDate") + private Date inStoreDate; + /** + * 绉熸埛鍙� + */ + @Excel(name = "tenantId", width = 15) + @ApiModelProperty(value = "tenantId") + private String tenantId; + /** + * 鍒涘缓浜� + */ + @Excel(name = "createBy", width = 15) + @ApiModelProperty(value = "createBy") + private String createBy; + /** + * 鍒涘缓鏃堕棿 + */ + @Excel(name = "createTime", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "createTime") + private Date createTime; + /** + * 鏇存柊浜� + */ + @Excel(name = "updateBy", width = 15) + @ApiModelProperty(value = "updateBy") + private String updateBy; + /** + * 鏇存柊鏃堕棿 + */ + @Excel(name = "updateTime", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "updateTime") + private Date updateTime; + /** + * 鎶ユ崯鍗曞彿 + */ + @Excel(name = "lossBoundId", width = 15) + @ApiModelProperty(value = "lossBoundId") + private String lossBoundId; + + + @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id") + @TableField(exist = false) + private String classifyId; + + @TableField(exist = false) + private String paramaTableName; + + @TableField(exist = false) + private String foreignLanguageName; + + @TableField(exist = false) + private String chineseName; + + @TableField(exist = false) + private String supplierId; + + @TableField(exist = false) + private String storageLocation; + + @TableField(exist = false) + private String toolMaterial; + + @TableField(exist = false) + private String toolModel; + /** + * 搴撲綅鍙� + */ + @TableField(exist = false) + private String positionCode; + + @TableField(exist = false) + @Dict(dicCode = "application_type") + private String applicationType; + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java new file mode 100644 index 0000000..38e4313 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java @@ -0,0 +1,103 @@ +package org.jeecg.modules.tms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@ApiModel(value="tms_stocktaking_bound瀵硅薄", description="鐩樼偣鍗曡〃") +@Data +@TableName("tms_stocktaking_bound") +public class ToolsStocktakingBound implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃ユ湡") + private java.util.Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private java.util.Date updateTime; + /**鐩樼偣绫诲瀷*/ + @Excel(name = "鐩樼偣绫诲瀷", width = 15) + @ApiModelProperty(value = "鐩樼偣绫诲瀷") + private Integer stocktakingType; + /**鐩樼偣鍗曞彿*/ + @Excel(name = "鐩樼偣鍗曞彿", width = 15) + @ApiModelProperty(value = "鐩樼偣鍗曞彿") + private String orderCode; + /**缁忔墜浜�*/ + @Excel(name = "缁忔墜浜�", width = 15) + @ApiModelProperty(value = "缁忔墜浜�") + @Dict(dicCode = "sys_user, realname, id") + private String handler; + /**瀹℃牳浜�*/ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + @Dict(dicCode = "sys_user, realname, id") + private String reviewer; + /**鐩樼偣鍚嶇О*/ + @Excel(name = "鐩樼偣鍚嶇О", width = 15) + @ApiModelProperty(value = "鐩樼偣鍚嶇О") + private String stocktakingName; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**瀹℃牳鐘舵��*/ + @Excel(name = "瀹℃牳鐘舵��", width = 15) + @ApiModelProperty(value = "瀹℃牳鐘舵��") + @Dict(dicCode = "approval_status") + private String approvalStatus; + /**瀹℃牳鎰忚*/ + @Excel(name = "瀹℃牳鎰忚", width = 15) + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalOpinion; + /**鐩樼偣鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鐩樼偣鏃堕棿") + private java.util.Date inventoryTime; + + + /** + * 瀹℃牳鏃堕棿 + */ + @Excel(name = "approvalDate", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "瀹℃牳鏃堕棿") + private java.util.Date approvalDate; + + @TableField(exist = false) + private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java new file mode 100644 index 0000000..9b22037 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java @@ -0,0 +1,137 @@ +package org.jeecg.modules.tms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @Description: 鐩樼偣鍗曟槑缁� + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@ApiModel(value="tms_stocktaking_bound_detail瀵硅薄", description="鐩樼偣鍗曟槑缁�") +@Data +@TableName("tms_stocktaking_bound_detail") +public class ToolsStocktakingBoundDetail implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + + /**鐩樼偣鍗昳d*/ + @ApiModelProperty(value = "鐩樼偣鍗昳d") + private String stocktakingBoundId; + + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃ユ湡") + private java.util.Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private java.util.Date updateTime; + /**宸ュ叿缂栫爜*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**搴撳瓨鍙�*/ + @ApiModelProperty(value = "搴撳瓨鍙�") + private String goodsShelvesId; + /**璐﹀彿鏁伴噺*/ + @Excel(name = "璐﹂潰鏁伴噺", width = 15) + @ApiModelProperty(value = "璐﹂潰鏁伴噺") + private java.math.BigDecimal bookQuantity; + /**鍙敤鏁伴噺*/ + @Excel(name = "鍙敤鏁伴噺", width = 15) + @ApiModelProperty(value = "鍙敤鏁伴噺") + private java.math.BigDecimal availableQuantity; + /**瀹炵洏鏁伴噺*/ + @Excel(name = "瀹炵洏鏁伴噺", width = 15) + @ApiModelProperty(value = "瀹炵洏鏁伴噺") + private java.math.BigDecimal practicalQuantity; + /**鐩樹簭鐩樼泩*/ + @Dict(dicCode = "surplusDeficit") + @Excel(name = "鐩樹簭鐩樼泩", width = 15) + @ApiModelProperty(value = "鐩樹簭鐩樼泩") + private String surplusDeficit; + /**鐩樺簱鏃堕棿*/ + @Excel(name = "鐩樺簱鏃堕棿", width = 20, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鐩樺簱鏃堕棿") + private java.util.Date stocktakingDate; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**宸紓鍊�*/ + @Excel(name = "宸紓鍊�", width = 15) + @ApiModelProperty(value = "宸紓鍊�") + private String differenceValue; + + + @TableField(exist = false) + private String paramaTableName; + + @TableField(exist = false) + private String foreignLanguageName; + + @TableField(exist = false) + private String chineseName; + + @TableField(exist = false) + private String supplierId; + + @TableField(exist = false) + private String storageLocation; + + @TableField(exist = false) + private String toolMaterial; + + @TableField(exist = false) + private String toolModel; + /** + * 搴撲綅鍙� + */ + @TableField(exist = false) + private String positionCode; + + + @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id") + @TableField(exist = false) + private String classifyId; + + + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java new file mode 100644 index 0000000..f772a39 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java @@ -0,0 +1,109 @@ +package org.jeecg.modules.tms.entity; + +import java.io.Serializable; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: tools_store_early warning + * @Author: HOUJIE + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Data +@TableName("tms_store_early_warning") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tms_store_early_warning瀵硅薄", description="tms_store_early_warning") +public class ToolsStoreEarlyWarning implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栧彿*/ + @Excel(name = "宸ュ叿缂栧彿", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**涓枃鍚嶇О*/ + @Excel(name = "宸ュ叿缂栫爜", width = 15) + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + + /**鍘傚*/ + @Excel(name = "鍘傚", width = 15) + @ApiModelProperty(value = "鍘傚") + private String supplierId; + + /**鏉愯川*/ + @Excel(name = "鏉愯川", width = 15) + @ApiModelProperty(value = "鏉愯川") + private String toolMaterial; + + + /**瀛樺偍浣嶇疆锛堝亸閭d釜鍘傚尯鐨勫簱锛�*/ + @Excel(name = "瀛樺偍浣嶇疆锛�", width = 15) + @ApiModelProperty(value = "瀛樺偍浣嶇疆") + private String goodsShelvesId; + + + /**鎬诲簱瀛樻暟閲�*/ + @Excel(name = "鎬诲簱瀛樻暟閲�", width = 15) + @ApiModelProperty(value = "鎬诲簱瀛樻暟閲�") + private BigDecimal totalCount; + + /**鍙敤搴撳瓨鏁伴噺*/ + @Excel(name = "鍙敤搴撳瓨鏁伴噺", width = 15) + @ApiModelProperty(value = "鍙敤搴撳瓨鏁伴噺") + private BigDecimal availableQuantity; + + /**搴撳瓨涓嬮檺*/ + @Excel(name = "搴撳瓨涓嬮檺", width = 15) + @ApiModelProperty(value = "搴撳瓨涓嬮檺") + private BigDecimal lowerInventory; + /**搴撳瓨涓婇檺*/ + @Excel(name = "搴撳瓨涓婇檺", width = 15) + @ApiModelProperty(value = "搴撳瓨涓婇檺") + private String highestInventory; + + + @Excel(name = "鐘舵��;1宸插鐞嗭紱2.鏈鐞�", width = 15) + @ApiModelProperty(value = "鐘舵��;1宸插鐞嗭紱2.鏈鐞�") + private String status; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**绉熸埛鍙�*/ + @Excel(name = "绉熸埛鍙�", width = 15) + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/InboundOrderFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/InboundOrderFlowDto.java new file mode 100644 index 0000000..cc1fd08 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/InboundOrderFlowDto.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.tms.entity.dto; + +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; + +@Data +public class InboundOrderFlowDto extends FlowTaskVo { + //瀹℃壒鐘舵�� + private String status; + //瀹℃壒鎰忚 + private String approvalOpinion; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java new file mode 100644 index 0000000..65d2b09 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.tms.entity.dto; + +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; + +@Data +public class LossBoundFlowDto extends FlowTaskVo { + //瀹℃壒鐘舵�� + private String status; + //瀹℃壒鎰忚 + private String approvalOpinion; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java new file mode 100644 index 0000000..9d5f862 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/OutBoundRequestDto.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.tms.entity.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OutBoundRequestDto { + //鍑哄簱鐢宠鍗昳d + @ApiModelProperty(value = "鍑哄簱鐢宠鍗昳d") + private String outBoundOrderId; + //鍑哄簱鐢宠鏄庣粏id + @ApiModelProperty(value = "鍑哄簱鐢宠鏄庣粏id") + private String outboundDetailId; + //鍑哄簱鏁伴噺 + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outboundQuantity; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java new file mode 100644 index 0000000..46ef4f6 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.tms.entity.dto; + +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; + +@Data +public class StocktakingBoundFlowDto extends FlowTaskVo { + //瀹℃壒鐘舵�� + private String status; + //瀹℃壒鎰忚 + private String approvalOpinion; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java new file mode 100644 index 0000000..0b201b2 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/OutStoreDetailVo.java @@ -0,0 +1,78 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="宸ュ叿鍑哄簱娴佹按椤甸潰灞曠ず瀵硅薄灏佽", description="宸ュ叿鍑哄簱娴佹按椤甸潰灞曠ず瀵硅薄灏佽") +public class OutStoreDetailVo implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @ApiModelProperty(value = "涓婚敭") + private String id; + /**宸ュ叿缂栫爜*/ + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + /**宸ュ叿缂栧彿*/ + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + /**鍑哄簱绫诲瀷*/ + @Dict(dicCode = "out_storehouse_type") + @ApiModelProperty(value = "鍑哄簱绫诲瀷") + private String outStorehouseType; + /**搴撲綅鍙�*/ + @ApiModelProperty(value = "搴撲綅鍙�") + private String goodsShelvesCode; + /**鍑哄簱鏁伴噺*/ + @ApiModelProperty(value = "鍑哄簱鏁伴噺") + private BigDecimal outNumber; + /**鍑哄簱鐢宠鍗曞彿*/ + @ApiModelProperty(value = "鍑哄簱鐢宠鍗曞彿") + private String outStorehouseId; + /**鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔*/ + @ApiModelProperty(value = "鍑哄簱鎿嶄綔鏂瑰紡;1.鎸夌敵璇峰崟 2.鎵嬪伐鎿嶄綔") + private String operateType; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**涓枃鍚嶇О*/ + @ApiModelProperty(value = "涓枃鍚嶇О") + private String chineseName; + /**鍨嬪彿/鍥惧彿*/ + @ApiModelProperty(value = "鍨嬪彿/鍥惧彿") + private String toolModel; + /**鍒�鍏锋潗鏂�*/ + @ApiModelProperty(value = "鍒�鍏锋潗鏂�") + private String toolMaterial; + /**闆朵欢鏉愭枡*/ + @ApiModelProperty(value = "闆朵欢鏉愭枡") + private String partMaterial; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java index 96fa5bc..0ce3390 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java @@ -59,6 +59,7 @@ @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") private String applicationType; + private String applicationTypeName; @ApiModelProperty(value = "鍘傚") private String supplierId; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java index b68c4f8..0365f95 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; import java.io.Serializable; @@ -56,7 +57,9 @@ private String positionCode; @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") + @Dict(dicCode = "application_type") private String applicationType; + private String applicationTypeName; @ApiModelProperty(value = "鍘傚") private String supplierId; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java index b4b4eb7..59dbf3c 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java @@ -57,25 +57,25 @@ private String positionCode; @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") - private java.lang.String applicationType; + private String applicationType; @ApiModelProperty(value = "鍘傚") - private java.lang.String supplierId; + private String supplierId; @ApiModelProperty(value = "浠撳簱鐪佷唤鍩庡競") - private java.lang.String provinceCity; + private String provinceCity; @ApiModelProperty(value = "瀛樺偍浣嶇疆锛堝亸閭d釜鍘傚尯鐨勫簱锛�") - private java.lang.String storageLocation; + private String storageLocation; @ApiModelProperty(value = "璁¢噺涓诲崟浣�") - private java.lang.String mainUnit; + private String mainUnit; @ApiModelProperty(value = "璁¢噺杈呭崟浣�") - private java.lang.String auxiliaryUnit; + private String auxiliaryUnit; @ApiModelProperty(value = "鏄惁鏈夎閲忚緟鍗曚綅;1,鏈夎緟鍔╁崟浣�2.鏃犺緟鍔╁崟浣�") - private java.lang.String auxiliaryUnitFlag; + private String auxiliaryUnitFlag; @ApiModelProperty(value = "鍗曚环") private java.math.BigDecimal price; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java index 48c3772..8315462 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java @@ -59,6 +59,7 @@ @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") private String applicationType; + private String applicationTypeName; @ApiModelProperty(value = "鍘傚") private String supplierId; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java index 119e077..b2a9781 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java @@ -59,6 +59,7 @@ @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") private String applicationType; + private String applicationTypeName; @ApiModelProperty(value = "鍘傚") private String supplierId; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java index d2698c4..304fcc5 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java @@ -59,6 +59,7 @@ @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") private String applicationType; + private String applicationTypeName; @ApiModelProperty(value = "鍘傚") private String supplierId; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java new file mode 100644 index 0000000..aa9d7d8 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java @@ -0,0 +1,37 @@ +package org.jeecg.modules.tms.entity.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; + +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class SharpeeningVo { + private String id; + + @Dict(dictTable = "tms_tools_classify", dicText = "type_name", dicCode = "id") + private String classifyId; + + private String toolCode; + + private String foreignLanguageName; + private String standardLevel; + private String standardCode; + private String toolModel; + @Dict(dicCode = "tool_para_type") + private String paramaTableName; + private Integer totalCount; + @Dict(dicCode = "application_type") + private String applicationType; + private String chineseName; + private String supplierId; + private String storageLocation; + private String mainUnit; + private String toolId; + private String positionCode; + private String warehouseId; + private String provinceCity; + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java new file mode 100644 index 0000000..8142c4e --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java @@ -0,0 +1,35 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; + +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class StocktakingPoundVo { + private String id; + private String classifyId; + private String toolCode; + private String foreignLanguageName; + private String standardLevel; + private String standardCode; + private String toolModel; + private String paramaTableName; + private Integer totalCount; + private Integer availableCount; + @Dict(dicCode = "application_type") + private String applicationType; + private String chineseName; + private String supplierId; + private String storageLocation; + private String mainUnit; + private String toolId; + private String positionCode; + // 鏉ヨ嚜涓嶅悓鍙傛暟琛ㄧ殑瀛楁 + private String toolMaterial; + private String partMaterial; + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java new file mode 100644 index 0000000..d9d14e5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java @@ -0,0 +1,132 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: tms_tool_sharpening + * @Author: houjie + * @Date: 2025-05-10 + * @Version: V1.0 + */ +@Data +@TableName("tms_tool_sharpening") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ToolSharpening瀵硅薄", description="鍒�鍏峰垉纾ㄨ褰曞疄浣撶被") +public class ToolSharpeningVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** 涓婚敭ID */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭ID") + private String id; + + /** 宸ュ叿缂栫爜 */ + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + + /** 宸ュ叿缂栧彿 */ + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + + /** 鍒冪(鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒冪(鏃堕棿") + private Date sharpeningTime; + + /** 鍒冪(缁撴灉鍙婂缓璁� */ + @ApiModelProperty(value = "鍒冪(缁撴灉鍙婂缓璁�") + private String sharpeningResult; + + /** 璐d换浜� */ + @ApiModelProperty(value = "璐d换浜�") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + private String responsiblePerson; + + /** 澶囨敞 */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** 绉熸埛鍙� */ + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + + /** 鍒涘缓浜� */ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + + /** 鍒涘缓鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + + /** 鏇存柊浜� */ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + + /** 鏇存柊鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private Date updateTime; + + @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id") + @ApiModelProperty(value = "宸ュ叿鍒嗙被") + private String classifyId; + + + @Dict(dicCode = "tool_para_type") + @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜") + private String paramaTableName; + + @ApiModelProperty(value = "宸ュ叿鍚嶇О") + private String typeName; + + + @Dict(dicCode = "application_type") + @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜") + private String applicationType; + + + @ApiModelProperty(value = "鍨嬪彿/瑙勫垯") + private String toolModel; + + @ApiModelProperty(value = "浠撳簱鍩庡競") + private String provinceCity; + + @ApiModelProperty(value = "涓枃鍚嶅瓧") + private String chineseName; + + @ApiModelProperty(value = "鍘傚") + private String supplierId; + + @ApiModelProperty(value = "瀛樺偍浣嶇疆") + private String positionCode; + + + @ApiModelProperty(value = "璁$畻涓诲崟浣�") + private String mainUnit; + + + @ApiModelProperty(value = "搴撳尯/搴撳彿") + private String warehouseId; + + + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java new file mode 100644 index 0000000..1e94d50 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java @@ -0,0 +1,87 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelCollection; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; +import java.util.List; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Data +@ApiModel(value="tools_stocktaking_bound瀵硅薄", description="鐩樼偣鍗曡〃") +public class ToolsStocktakingVo { + + /**涓婚敭*/ + @ApiModelProperty(value = "涓婚敭") + private String id; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + /**鍒涘缓鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃ユ湡") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃ユ湡*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private Date updateTime; + /**鐩樼偣绫诲瀷*/ + @Excel(name = "鐩樼偣绫诲瀷", width = 15) + @ApiModelProperty(value = "鐩樼偣绫诲瀷") + private Integer stocktakingType; + /**鐩樼偣鍗曞彿*/ + @Excel(name = "鐩樼偣鍗曞彿", width = 15) + @ApiModelProperty(value = "鐩樼偣鍗曞彿") + private String orderCode; + /**缁忔墜浜�*/ + @Excel(name = "缁忔墜浜�", width = 15) + @ApiModelProperty(value = "缁忔墜浜�") + private String handler; + /**瀹℃牳浜�*/ + @Excel(name = "瀹℃牳浜�", width = 15) + @ApiModelProperty(value = "瀹℃牳浜�") + private String reviewer; + /**鐩樼偣鍚嶇О*/ + @Excel(name = "鐩樼偣鍚嶇О", width = 15) + @ApiModelProperty(value = "鐩樼偣鍚嶇О") + private String stocktakingName; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞") + private String remark; + /**瀹℃牳鐘舵��*/ + @Excel(name = "瀹℃牳鐘舵��", width = 15) + @ApiModelProperty(value = "瀹℃牳鐘舵��") + private String approvalStatus; + /**瀹℃牳鎰忚*/ + @Excel(name = "瀹℃牳鎰忚", width = 15) + @ApiModelProperty(value = "瀹℃牳鎰忚") + private String approvalOpinion; + /**鐩樼偣鏃堕棿*/ + @Excel(name = "鐩樼偣鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鐩樼偣鏃堕棿") + private Date inventoryTime; + + @ExcelCollection(name="鐩樼偣鍗曟槑缁�") + @ApiModelProperty(value = "鐩樼偣鍗曟槑缁�") + private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList; + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java index 7ead9ae..e7be0d2 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutBillStatus.java @@ -1,11 +1,14 @@ package org.jeecg.modules.tms.enums; +import lombok.Getter; + import java.util.Objects; /** * 鍑哄簱鍗曠姸鎬佹灇涓剧被 */ +@Getter public enum OutBillStatus { /** * 鑽夌鐘舵�侊紝鍊间负1 @@ -39,24 +42,6 @@ OutBillStatus(String value, String description) { this.value = value; this.description = description; - } - - /** - * 鑾峰彇鐘舵�佸�� - * - * @return 鐘舵�佸�� - */ - public String getValue() { - return value; - } - - /** - * 鑾峰彇鐘舵�佹弿杩� - * - * @return 鐘舵�佹弿杩� - */ - public String getDescription() { - return description; } /** diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java new file mode 100644 index 0000000..e8e8165 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/OutStorehouseType.java @@ -0,0 +1,29 @@ +package org.jeecg.modules.tms.enums; + +import lombok.Getter; + +@Getter +public enum OutStorehouseType { + + TOOL_BORROW("1", "宸ュ叿鍊熺敤"), + MAINTENANCE_OUTBOUND("2", "缁翠慨鍑哄簱"), + CALIBRATION_OUTBOUND("3", "妫�瀹氬嚭搴�"), + GRINDING_OUTBOUND("4", "鍒冪(鍑哄簱"); + + private final String value; + private final String description; + + OutStorehouseType(String value, String description) { + this.value = value; + this.description = description; + } + + public static OutStorehouseType getByValue(String value) { + for (OutStorehouseType type : OutStorehouseType.values()) { + if (type.getValue().equals(value)) { + return type; + } + } + throw new IllegalArgumentException("Invalid enum value: " + value); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java new file mode 100644 index 0000000..0370465 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/enums/ToolCirculationStatus.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.tms.enums; + +import lombok.Getter; + +/** + * 宸ュ叿娴侀�氱姸鎬佹灇涓� + */ +@Getter +public enum ToolCirculationStatus { + IN_STOCK("1", "鍦ㄥ簱"), + BORROWED("2", "鍦ㄥ��"), + REPAIRING("3", "鍦ㄤ慨"), + INSPECTING("4", "鍦ㄦ"), + GRINDING("5", "鍦ㄧ("), + SCRAPPED("6", "鎶ュ簾"); + + private final String value; + private final String description; + + ToolCirculationStatus(String value, String description) { + this.value = value; + this.description = description; + } + + /** + * 鏍规嵁鐘舵�佸�艰幏鍙栨灇涓惧疄渚� + * @param status 鐘舵�佸�� + * @return 鏋氫妇瀹炰緥鎴杗ull + */ + public static ToolCirculationStatus fromStatus(String status) { + for (ToolCirculationStatus value : values()) { + if (value.getValue().equals(status)) { + return value; + } + } + return null; + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java index 6a0ef0c..da80ca3 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java @@ -35,4 +35,7 @@ IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page, @Param(Constants.WRAPPER) Wrapper<ParaBladeVo> queryWrapper); + IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, @Param(Constants.WRAPPER) Wrapper<StocktakingPoundVo> wrapper); + + IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, @Param(Constants.WRAPPER) Wrapper<SharpeeningVo> wrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java new file mode 100644 index 0000000..84926f4 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InStoreDetailMapper.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.tms.mapper; + +import java.util.List; +import java.util.Map; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.InStoreDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 鍏ュ簱鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface InStoreDetailMapper extends BaseMapper<InStoreDetail> { + + public IPage<Map<String, Object>> findPageList(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundDetailMapper.java new file mode 100644 index 0000000..b81f687 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundDetailMapper.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.tms.mapper; + +import java.util.List; +import java.util.Map; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.InboundDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 鍏ュ簱鐢宠鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface InboundDetailMapper extends BaseMapper<InboundDetail> { + + public IPage<Map<String, Object>> findPageList(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper); + + @Delete("delete from tms_inbound_detail where in_storehouse_id = #{inboundOrderId}") + public boolean deleteByInboundOrderId(@Param("inboundOrderId") String inboundOrderId); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundOrderMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundOrderMapper.java new file mode 100644 index 0000000..56662df --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/InboundOrderMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.tms.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.InboundOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 鍏ュ簱鐢宠鍗� + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface InboundOrderMapper extends BaseMapper<InboundOrder> { + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java new file mode 100644 index 0000000..08a2c06 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/OutStoreDetailMapper.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.tms.mapper; + +import java.util.List; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +public interface OutStoreDetailMapper extends BaseMapper<OutStoreDetail> { + + IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, + @Param(Constants.WRAPPER) Wrapper<OutStoreDetailVo> queryWrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java new file mode 100644 index 0000000..0989e79 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java @@ -0,0 +1,41 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; + +import java.util.List; + +/** + * @Description: 鎹熻�楀崟鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +public interface ToolsLossBoundDetailMapper extends BaseMapper<ToolsLossBoundDetail> { + + + /** + * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁 + * + * @param mainId 涓昏〃id + * @return boolean + */ + public boolean deleteByMainId(@Param("mainId") String mainId); + + /** + * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁 + * + * @param mainId 涓昏〃id + * @return List<ToolsLossBoundDetail> + */ + public List<ToolsLossBoundDetail> selectByMainId(@Param("mainId") String mainId); + + IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page, + @Param(Constants.WRAPPER) Wrapper<ToolsLossBoundDetail> queryWrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java new file mode 100644 index 0000000..b41a156 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.ToolsLossBound; + +/** + * @Description: 鎹熻�楀崟 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +public interface ToolsLossBoundMapper extends BaseMapper<ToolsLossBound> { + + IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page, + @Param(Constants.WRAPPER) Wrapper<ToolsLossBound> queryWrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java new file mode 100644 index 0000000..5a951cc --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.OutboundOrder; +import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; + +/** + * @Description: tms_tool_sharpening Mapper 鎺ュ彛 + * @Author: 渚澃 + * @Date: 2025-05-10 + */ +public interface ToolsSharpeningMapper extends BaseMapper<ToolSharpening> { + IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, + @Param(Constants.WRAPPER) Wrapper<ToolSharpeningVo> queryWrapper); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java new file mode 100644 index 0000000..06f3982 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java @@ -0,0 +1,41 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.ToolsClassify; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; + +import java.util.List; + +public interface ToolsStocktakingBoundDetailMapper extends BaseMapper<ToolsStocktakingBoundDetail> { + + /** + * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁 + * + * @param mainId 涓昏〃id + * @return boolean + */ + public boolean deleteByMainId(@Param("mainId") String mainId); + + + /** + * 閫氳繃涓昏〃id鍒犻櫎瀛愯〃鏁版嵁 + * + * @param mainId 涓昏〃id + * @return boolean + */ + public String getParamaTableNameByMainId(@Param("mainId") String mainId); + /** + * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁 + * + * @param + * @return List<ToolsStocktakingBoundDetail> + */ + IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page, + @Param(Constants.WRAPPER) Wrapper<ToolsStocktakingBoundDetail> queryWrapper); + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java new file mode 100644 index 0000000..3bdf757 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.tms.entity.ToolsStocktakingBound; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface ToolsStocktakingBoundMapper extends BaseMapper<ToolsStocktakingBound> { + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java new file mode 100644 index 0000000..588c7ad --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.tms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning; + +/** + * @Description: tools_store_early warning + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface ToolsStoreEarlyWarningMapper extends BaseMapper<ToolsStoreEarlyWarning> { + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml index 6cd55f0..4e099e2 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml @@ -59,43 +59,47 @@ t2.adapt_holder adaptHolder, t2.remark, t3.classify_id classifyNum, - t3.type_name classifyName - from tms_base_tools t - left join tms_tools_config_property t1 on t1.tool_code = t.id - left join tms_para_hole_tools t2 on t2.tool_code = t.id - left join tms_tools_classify t3 on t3.id = t.classify_id - ${ew.customSqlSegment} + t3.type_name classifyName, + t4.item_text applicationTypeName + from tms_base_tools t + left join tms_tools_config_property t1 on t1.tool_code = t.id + left join tms_para_hole_tools t2 on t2.tool_code = t.id + left join tms_tools_classify t3 on t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type + ${ew.customSqlSegment} </select> <select id="paraCommonToolList" resultType="org.jeecg.modules.tms.entity.vo.ParaCommonToolVo"> - select - t.id, - t.classify_id classifyId, - t.tool_code toolCode, - t.sign_code signCode, - t.chinese_name chineseName, - t.foreign_language_name foreignLanguageName, - t.standard_level standardLevel, - t.standard_code standardCode, - t.tool_model toolModel, - t.parama_table_name paramaTableName, - t1.application_type applicationType, - t1.supplier_id supplierId, - t1.province_city provinceCity, - t1.position_code positionCode, - t1.storage_location storageLocation, - t1.main_unit mainUnit, - t1.auxiliary_unit auxiliaryUnit, - t1.auxiliary_unit_flag auxiliaryUnitFlag, - t1.price, - t1.lower_inventory lowerInventory, - t1.highest_inventory highestInventory, - t3.classify_id classifyNum, - t3.type_name classifyName - from tms_base_tools t - left join tms_tools_config_property t1 on t1.tool_code = t.id - left join tms_tools_classify t3 on t3.id = t.classify_id - ${ew.customSqlSegment} -</select> + select + t.id, + t.classify_id classifyId, + t.tool_code toolCode, + t.sign_code signCode, + t.chinese_name chineseName, + t.foreign_language_name foreignLanguageName, + t.standard_level standardLevel, + t.standard_code standardCode, + t.tool_model toolModel, + t.parama_table_name paramaTableName, + t1.application_type applicationType, + t1.supplier_id supplierId, + t1.province_city provinceCity, + t1.position_code positionCode, + t1.storage_location storageLocation, + t1.main_unit mainUnit, + t1.auxiliary_unit auxiliaryUnit, + t1.auxiliary_unit_flag auxiliaryUnitFlag, + t1.price, + t1.lower_inventory lowerInventory, + t1.highest_inventory highestInventory, + t3.classify_id classifyNum, + t3.type_name classifyName, + t4.item_text applicationTypeName + from tms_base_tools t + left join tms_tools_config_property t1 on t1.tool_code = t.id + left join tms_tools_classify t3 on t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type + ${ew.customSqlSegment} + </select> <select id="paraThreadingToolList" resultType="org.jeecg.modules.tms.entity.vo.ParaThreadingToolVo"> SELECT t.id, @@ -144,12 +148,14 @@ t2.connection_aperture connectionAperture, t2.connecting_keyway connectingKeyway, t3.classify_id classifyNum, - t3.type_name classifyName + t3.type_name classifyName, + t4.item_text applicationTypeName FROM tms_base_tools t LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = t.id LEFT JOIN tms_para_threading_tool t2 ON t2.tool_code = t.id LEFT JOIN tms_tools_classify t3 ON t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type ${ew.customSqlSegment} </select> <select id="paraMillToolList" resultType="org.jeecg.modules.tms.entity.vo.ParaMillToolVo"> @@ -209,12 +215,14 @@ t2.pitch, t2.recently_diameter recentlyDiameter, t3.classify_id classifyNum, - t3.type_name classifyName + t3.type_name classifyName, + t4.item_text applicationTypeName FROM tms_base_tools t LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = t.id LEFT JOIN tms_para_mill_tool t2 ON t2.tool_code = t.id LEFT JOIN tms_tools_classify t3 ON t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type ${ew.customSqlSegment} </select> <select id="paraTurningToolsList" resultType="org.jeecg.modules.tms.entity.vo.ParaTurningToolsVo"> @@ -278,12 +286,14 @@ t2.blade_thickness bladeThickness, t2.min_diameter minDiameter, t3.classify_id classifyNum, - t3.type_name classifyName + t3.type_name classifyName, + t4.item_text applicationTypeName FROM tms_base_tools t LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = t.id LEFT JOIN tms_para_turning_tools t2 ON t2.tool_code = t.id LEFT JOIN tms_tools_classify t3 ON t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type ${ew.customSqlSegment} </select> <select id="paraBladeList" resultType="org.jeecg.modules.tms.entity.vo.ParaBladeVo"> @@ -335,12 +345,145 @@ t2.pitch, t2.min_internal_thread minInternalThread, t3.classify_id classifyNum, - t3.type_name classifyName + t3.type_name classifyName, + t4.item_text applicationTypeName FROM tms_base_tools t LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = t.id LEFT JOIN tms_para_blade t2 ON t2.tool_code = t.id LEFT JOIN tms_tools_classify t3 ON t3.id = t.classify_id + left join (select * from v_sys_dict where dict_code = 'application_type') t4 on t4.item_value = t1.application_type ${ew.customSqlSegment} </select> + + <select id="pageWithLedgerAndConfig" resultType="org.jeecg.modules.tms.entity.vo.StocktakingPoundVo"> + SELECT + t.id, + t.classify_id AS classifyId, + t.tool_code AS toolCode, + t.foreign_language_name AS foreignLanguageName, + t.standard_level AS standardLevel, + t.standard_code AS standardCode, + t.tool_model AS toolModel, + t.parama_table_name AS paramaTableName, + t.tool_id AS toolId, + t1.total_count AS totalCount, + t1.available_count AS availableCount, + t4.position_code AS positionCode, + t3.application_type AS applicationType, + t3.chinese_name AS chineseName, + t3.supplier_id AS supplierId, + t3.storage_location AS storageLocation, + t3.main_unit AS mainUnit, + + <!-- 鍔ㄦ�佸瓧娈甸�夋嫨锛屼娇鐢ㄨ〃鍒悕锛堥渶纭繚琛ㄥ凡鍏宠仈锛� --> + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + c.tool_material AS toolMaterial, + c.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + h.tool_material AS toolMaterial, + h.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + th.tool_material AS toolMaterial, + th.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + m.tool_material AS toolMaterial, + m.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + tr.tool_material AS toolMaterial, + tr.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + b.tool_material AS toolMaterial, + b.part_material AS partMaterial + </when> + <!-- 榛樿鎯呭喌锛歱aramaTableName 涓虹┖鎴栨湭浼犻�掓椂锛屽叧鑱� tms_para_common_tool 琛� --> + <otherwise> + c.tool_material AS toolMaterial, + c.part_material AS partMaterial + </otherwise> + </choose> + + FROM tms_base_tools t + LEFT JOIN tms_tool_ledger t1 ON t1.tool_id = t.id + LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.id + LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.id + + <!-- 鍔ㄦ�佽〃鍏宠仈锛岀‘淇濇墍鏈夋儏鍐甸兘鏈夊搴旂殑 LEFT JOIN --> + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + LEFT JOIN tms_para_hole_tools h ON h.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + LEFT JOIN tms_para_threading_tool th ON th.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + LEFT JOIN tms_para_mill_tool m ON m.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + LEFT JOIN tms_para_turning_tools tr ON tr.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + LEFT JOIN tms_para_blade b ON b.tool_code = t.id + </when> + <!-- 榛樿鎯呭喌锛氭坊鍔� LEFT JOIN tms_para_common_tool c --> + <otherwise> + LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id + </otherwise> + </choose> + + <where> + <if test="ew.paramNameValuePairs.toolCode != null and ew.paramNameValuePairs.toolCode != ''"> + AND t.tool_code LIKE CONCAT('%', #{ew.paramNameValuePairs.toolCode}, '%') + </if> + </where> + + ORDER BY t.create_time DESC + </select> + + + <select id="pageWithSharpedAndConfig" resultType="org.jeecg.modules.tms.entity.vo.SharpeeningVo"> + SELECT + t.id, + t.classify_id AS classifyId, + t.tool_code AS toolCode, + t.foreign_language_name AS foreignLanguageName, + t.standard_level AS standardLevel, + t.standard_code AS standardCode, + t.tool_model AS toolModel, + t.parama_table_name AS paramaTableName, + t.tool_id AS toolId, + t1.total_count AS totalCount, + t1.available_count AS availableCount, + t4.position_code AS positionCode, + t3.application_type AS applicationType, + t3.chinese_name AS chineseName, + t3.supplier_id AS supplierId, + t3.storage_location AS storageLocation, + t3.main_unit AS mainUnit, + t4.warehouse_id AS warehouseId, + t3.province_city AS provinceCity + + FROM tms_base_tools t + LEFT JOIN tms_tool_ledger t1 ON t1.tool_id = t.id + LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.id + LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.id + + <where> + <if test="ew.paramNameValuePairs.toolCode != null and ew.paramNameValuePairs.toolCode != ''"> + AND t.tool_code LIKE CONCAT('%', #{ew.paramNameValuePairs.toolCode}, '%') + </if> + </where> + + ORDER BY t.create_time DESC + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml new file mode 100644 index 0000000..79cf799 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.InStoreDetailMapper"> + + <select id="queryPageList" resultType="map" parameterType="String"> + SELECT + t.id, + t.tool_id onlyCode, + t.in_storehouse_type inStorehouseType, + t.goods_shelves_id goodsShelvesId, + t.in_number inNumber, + t.in_storehouse_id inStorehouseId, + t.inbound_time inboundTime, + t.create_by createBy, + t.create_time createTime, + t.update_by updateBy, + t.update_time updateTime, + t1.tool_code toolCode, + t1.chinese_name chineseName, + t1.tool_model toolModel, + t2.classify_id classifyNum, + t3.inbound_num inboundNum, + t3.application_reason applicationReason, + t3.approval_date approvalDate, + t3.approval_opinion approvalOpinion, + t4.item_text operateType, + t5.realname handler, + t6.realname reviewer, + t7.item_value inStatus, + t8.item_value orderStatus + FROM tms_in_store_detail t + LEFT JOIN tms_base_tools t1 on t.tool_code = t1.id + LEFT JOIN tms_tools_classify t2 on t2.id = t1.classify_id + LEFT JOIN tms_inbound_order t3 on t3.id = t.in_storehouse_id + LEFT JOIN (select * from v_sys_dict where dict_code='inbound_operate_type') t4 on t4.item_value = t.operate_type + LEFT JOIN sys_user t5 on t5.username = t3.handler + LEFT JOIN sys_user t6 on t6.username = t3.reviewer + LEFT JOIN (select * from v_sys_dict where dict_code='in_status') t7 on t7.item_value = t3.in_status + LEFT JOIN (select * from v_sys_dict where dict_code='in_bill_status') t8 on t8.item_value = t3.order_status + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml new file mode 100644 index 0000000..49ef0c6 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.InboundDetailMapper"> + + <select id="findPageList" resultType="map" parameterType="String"> + select + t1.id, + t3.id toolCodeId, + t1.in_storage_quantity inStorageQuantity, + t1.in_actual_count inActualCount, + t3.tool_code toolCode, + t3.chinese_name chineseName, + t3.tool_model toolModel, + t5.item_text applicationType, + t6.classify_id classifyNum + from tms_inbound_detail t1 + left join tms_inbound_order t2 on t1.in_storehouse_id = t2.id + left join tms_base_tools t3 on t3.id = t1.tool_code + left join tms_tools_config_property t4 on t4.tool_code = t1.tool_code + left join (select * from v_sys_dict where dict_code = 'application_type') t5 on t5.item_value = t4.application_type + left join tms_tools_classify t6 on t6.id = t3.classify_id + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundOrderMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundOrderMapper.xml new file mode 100644 index 0000000..241d212 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundOrderMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.InboundOrderMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml new file mode 100644 index 0000000..4956f45 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/OutStoreDetailMapper.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.OutStoreDetailMapper"> + + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.vo.OutStoreDetailVo"> + SELECT + t1.id, + t1.tool_code toolCode, + t1.tool_id toolId, + t1.out_storehouse_type outStorehouseType, + t1.goods_shelves_code goodsShelvesCode, + t1.out_number outNumber, + t1.out_storehouse_id outStorehouseId, + t1.operate_type operateType, + t1.create_by createBy, + t1.create_time createTime, + t2.chinese_name chineseName, + t2.tool_model toolModel, + t2.parama_table_name paramaTableName, + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + t4.tool_material toolMaterial, + t4.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + t5.tool_material toolMaterial, + t5.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + t6.tool_material toolMaterial, + t6.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + t7.tool_material toolMaterial, + t7.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + t8.tool_material toolMaterial, + t8.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + t9.tool_material toolMaterial, + t9.part_material partMaterial + </when> + <otherwise> + t10.tool_material toolMaterial, + t10.part_material partMaterial + </otherwise> + </choose> + FROM tms_out_store_detail t1 + LEFT JOIN tms_base_tools t2 on t1.tool_code = t2.id + LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id + LEFT JOIN tms_tools_classify t11 on t11.id = t2.classify_id + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + LEFT JOIN tms_para_common_tool t4 on t4.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + LEFT JOIN tms_para_hole_tools t5 on t5.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + LEFT JOIN tms_para_threading_tool t6 on t6.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + LEFT JOIN tms_para_mill_tool t7 on t7.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + LEFT JOIN tms_para_turning_tools t8 on t8.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + LEFT JOIN tms_para_blade t9 on t9.tool_code = t2.id + </when> + <otherwise> + LEFT JOIN tms_para_common_tool t10 on t10.tool_code = t2.id + </otherwise> + </choose> + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundDetailMapper.xml new file mode 100644 index 0000000..40abda6 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundDetailMapper.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper"> + <delete id="deleteByMainId" parameterType="java.lang.String"> + DELETE + FROM tms_loss_bound_detail + WHERE loss_bound_id = #{mainId} + </delete> + + <select id="selectByMainId" parameterType="java.lang.String" + resultType="org.jeecg.modules.tms.entity.ToolsLossBoundDetail"> + SELECT * + FROM tms_loss_bound_detail + WHERE loss_bound_id = #{mainId} + </select> + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolsLossBoundDetail"> + SELECT + t1.*, + t2.chinese_name chineseName, + t2.tool_model toolModel, + t2.classify_id classifyId, + t2.parama_table_name paramaTableName, + t3.application_type applicationType, + t3.supplier_id supplierId, + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + t4.tool_material toolMaterial, + t4.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + t5.tool_material toolMaterial, + t5.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + t6.tool_material toolMaterial, + t6.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + t7.tool_material toolMaterial, + t7.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + t8.tool_material toolMaterial, + t8.part_material partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + t9.tool_material toolMaterial, + t9.part_material partMaterial + </when> + <otherwise> + t10.tool_material toolMaterial, + t10.part_material partMaterial + </otherwise> + </choose> + FROM tms_loss_bound_detail t1 + LEFT JOIN tms_base_tools t2 on t1.tool_id = t2.id + LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id + + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + LEFT JOIN tms_para_common_tool t4 on t4.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + LEFT JOIN tms_para_hole_tools t5 on t5.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + LEFT JOIN tms_para_threading_tool t6 on t6.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + LEFT JOIN tms_para_mill_tool t7 on t7.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + LEFT JOIN tms_para_turning_tools t8 on t8.tool_code = t2.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + LEFT JOIN tms_para_blade t9 on t9.tool_code = t2.id + </when> + <otherwise> + LEFT JOIN tms_para_common_tool t10 on t10.tool_code = t2.id + </otherwise> + </choose> + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml new file mode 100644 index 0000000..10f01fa --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsLossBoundMapper"> + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolsLossBound"> + SELECT + t.* + FROM tms_loss_bound t + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml new file mode 100644 index 0000000..34e329a --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsSharpeningMapper"> + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.vo.ToolSharpeningVo"> + SELECT + t.*, + t1.classify_id AS classifyId, + t1.parama_table_name AS paramaTableName, + t2.type_name AS typeName, + t3.application_type AS applicationType, + t3.tool_model AS toolModel, + t3.province_city AS provinceCity, + t3.chinese_name AS chineseName, + t3.supplier_id AS supplierId, + t3.storage_location AS storageLocation, + t3.main_unit AS mainUnit, + t4.position_code AS positionCode, + t4.warehouse_id AS warehouseId + FROM tms_tool_sharpening t + LEFT JOIN tms_base_tools t1 ON t1.id = t.tool_code + LEFT JOIN tms_tools_classify t2 ON t1.classify_id = t2.id + LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.tool_id + LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.tool_id + ${ew.customSqlSegment} + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml new file mode 100644 index 0000000..214d4dd --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper"> + + <delete id="deleteByMainId" parameterType="java.lang.String"> + DELETE + FROM tools_stocktaking_bound_detail + WHERE goods_shelves_id = #{mainId} + </delete> + <select id="getParamaTableNameByMainId" parameterType="string" resultType="string"> + SELECT t1.parama_table_name + FROM tools_stocktaking_bound_detail t + LEFT JOIN tms_base_tools t1 ON t1.tool_id = t.id + WHERE t.goods_shelves_id = #{mainId} + </select> + + <select id="selectByMainId" resultType="org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail"> + SELECT + t.*, + t2.tool_code AS toolCode, <!-- 淇锛氬皢t1鏀逛负t2 --> + t2.parama_table_name paramaTableName, + t2.classify_id AS classifyId, + t3.storage_location AS storageLocation, + t3.chinese_name AS chineseName, + t2.tool_model AS toolModel, + t3.supplier_id AS supplierId, + + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + c.tool_material AS toolMaterial, + c.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + h.tool_material AS toolMaterial, + h.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + th.tool_material AS toolMaterial, + th.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + m.tool_material AS toolMaterial, + m.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + tr.tool_material AS toolMaterial, + tr.part_material AS partMaterial + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + b.tool_material AS toolMaterial, + b.part_material AS partMaterial + </when> + <!-- 榛樿鎯呭喌锛歱aramaTableName 涓虹┖鎴栨湭浼犻�掓椂锛屽叧鑱� tms_para_common_tool 琛� --> + <otherwise> + c.tool_material AS toolMaterial, + c.part_material AS partMaterial + </otherwise> + </choose> + FROM tms_stocktaking_bound_detail t + LEFT JOIN tms_base_tools t2 on t.tool_id = t2.id + LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id + + <choose> + <when test="ew.paramNameValuePairs.paramaTableName == '1'"> + LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '2'"> + LEFT JOIN tms_para_hole_tools h ON h.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '3'"> + LEFT JOIN tms_para_threading_tool th ON th.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '4'"> + LEFT JOIN tms_para_mill_tool m ON m.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '5'"> + LEFT JOIN tms_para_turning_tools tr ON tr.tool_code = t.id + </when> + <when test="ew.paramNameValuePairs.paramaTableName == '6'"> + LEFT JOIN tms_para_blade b ON b.tool_code = t.id + </when> + <!-- 榛樿鎯呭喌锛氭坊鍔� LEFT JOIN tms_para_common_tool c --> + <otherwise> + LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id + </otherwise> + </choose> + + ${ew.customSqlSegment} + + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml new file mode 100644 index 0000000..2014953 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml new file mode 100644 index 0000000..72cacd0 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.tms.mapper.ToolsStoreEarlyWarningMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java index 93291c0..b01cbed 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java @@ -1,5 +1,6 @@ package org.jeecg.modules.tms.service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.tms.entity.BaseTools; @@ -28,4 +29,6 @@ IPage<ParaTurningToolsVo> paraTurningToolsList(Page<ParaTurningToolsVo> page, Map<String, String[]> parameterMap); IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page, Map<String, String[]> parameterMap); + IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper); + IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java new file mode 100644 index 0000000..fbf6b9d --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInStoreDetailService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.InStoreDetail; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + * @Description: 鍏ュ簱鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface IInStoreDetailService extends IService<InStoreDetail> { + + IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query); + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundDetailService.java new file mode 100644 index 0000000..ea88f9b --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundDetailService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.jeecg.modules.tms.entity.InboundDetail; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.Map; + +/** + * @Description: 鍏ュ簱鐢宠鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface IInboundDetailService extends IService<InboundDetail> { + + IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query); + + public boolean deleteByInboundOrderId(String inboundOrderId); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java new file mode 100644 index 0000000..e8ac09e --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.tms.service; + +import org.jeecg.modules.tms.entity.InboundOrder; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.dto.InboundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; + +/** + * @Description: 鍏ュ簱鐢宠鍗� + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +public interface IInboundOrderService extends IService<InboundOrder> { + + boolean submit(String id); + + void approvalProcess(InboundOrderFlowDto inboundOrderFlowDto); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java new file mode 100644 index 0000000..ef66d57 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutStoreDetailService.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; + +import java.util.Map; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +public interface IOutStoreDetailService extends IService<OutStoreDetail> { + + IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, Map<String, String[]> parameterMap); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java index b1171e7..f055c95 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IOutboundOrderService.java @@ -6,6 +6,7 @@ import org.jeecg.modules.tms.entity.OutboundOrder; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.springframework.beans.factory.annotation.Autowired; import java.io.Serializable; @@ -45,4 +46,6 @@ void submit(String id); void approvalProcess(OutBoundOrderFlowDto outBoundOrderFlowDto); + + void outBound(List<OutBoundRequestDto> outBoundRequestList); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java new file mode 100644 index 0000000..30a5be5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.tms.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; + +import java.util.Map; + +/** + * @Description: 鎹熻�楀崟鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +public interface IToolsLossBoundDetailService extends IService<ToolsLossBoundDetail> { + IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page, Map<String, String[]> parameterMap); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java new file mode 100644 index 0000000..9964c40 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java @@ -0,0 +1,53 @@ +package org.jeecg.modules.tms.service; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Map; + +/** + * @Description: 鎹熻�楀崟鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +public interface IToolsLossBoundService extends IService<ToolsLossBound> { + + + /** + * 鍒犻櫎涓�瀵瑰 + * + * @param id + */ + public void delMain (String id); + + /** + * 鎵归噺鍒犻櫎涓�瀵瑰 + * + * @param idList + */ + public void delBatchMain (Collection<? extends Serializable> idList); + + + void addTotal(ToolsLossBound toolsLossBound); + + IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page, Map<String, String[]> parameterMap); + + void editTotal(ToolsLossBound toolsLossBound); + + /** + * 鎻愪氦鎶ユ崯鍗� + * @param id + * @return + */ + boolean submintOrder(String id); + + + void approvalProcess(LossBoundFlowDto lossBoundFlowDto); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java new file mode 100644 index 0000000..060d369 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.ToolSharpening; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; + +import java.util.Map; + +/** + * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 鎺ュ彛 + * @Author: 渚澃 + * @Date: 2025-05-10 + */ +public interface IToolsSharpeningService extends IService<ToolSharpening> { + IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap); +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java new file mode 100644 index 0000000..da0bde5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java @@ -0,0 +1,31 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 鐩樼偣鍗曟槑缁� + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface IToolsStocktakingBoundDetailService extends IService<ToolsStocktakingBoundDetail> { + + + /** + * 閫氳繃涓昏〃id鏌ヨ瀛愯〃鏁版嵁 + * + * @param + * @return List<ToolsStocktakingBoundDetail> + */ + public IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page, Map<String, String[]> parameterMap); + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java new file mode 100644 index 0000000..84f5c52 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java @@ -0,0 +1,65 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsStocktakingBound; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; +import org.jeecg.modules.tms.entity.vo.StocktakingPoundVo; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface IToolsStocktakingBoundService extends IService<ToolsStocktakingBound> { + + /** + * 娣诲姞涓�瀵瑰 + * + * @param toolsStocktakingBound + * @param toolsStocktakingBoundDetailList + */ + public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList); + + /** + * 淇敼涓�瀵瑰 + * + * @param toolsStocktakingBound + * @param toolsStocktakingBoundDetailList + */ + public void updateMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList); + + /** + * 鍒犻櫎涓�瀵瑰 + * + * @param id + */ + public void delMain(String id); + + /** + * 鎵归噺鍒犻櫎涓�瀵瑰 + * + * @param idList + */ + public void delBatchMain(Collection<? extends Serializable> idList); + + /** + * 鎻愪氦鐩樼偣鍗� + * @param id + * @return + */ + boolean submintOrder(String id); + + /** + * 瀹℃壒娴佺▼ + * @param stocktakingBoundFlowDto + */ + void approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto); + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java new file mode 100644 index 0000000..24d4f3e --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.tms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning; + +/** + * @Description: tools_store_early warning + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +public interface IToolsStoreEarlyWarningService extends IService<ToolsStoreEarlyWarning> { + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java index 53466da..fdcb8d4 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java @@ -4,14 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.jeecg.modules.tms.entity.BaseTools; -import org.jeecg.modules.tms.entity.ParaCommonTool; import org.jeecg.modules.tms.entity.vo.*; import org.jeecg.modules.tms.mapper.BaseToolsMapper; import org.jeecg.modules.tms.service.IBaseToolsService; import org.springframework.stereotype.Service; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.Map; @@ -137,4 +135,13 @@ queryWrapper.orderByDesc("t.create_time"); return this.baseMapper.paraBladeList(page, queryWrapper); } + @Override + public IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper) { + return baseMapper.pageWithLedgerAndConfig(page, queryWrapper); + } + + @Override + public IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper) { + return baseMapper.pageWithSharpedAndConfig(page, queryWrapper); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java new file mode 100644 index 0000000..49fe595 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java @@ -0,0 +1,50 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.exception.ExceptionCast; +import org.jeecg.modules.tms.entity.InStoreDetail; +import org.jeecg.modules.tms.entity.ToolsClassify; +import org.jeecg.modules.tms.mapper.InStoreDetailMapper; +import org.jeecg.modules.tms.service.IInStoreDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description: 鍏ュ簱鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Service +public class InStoreDetailServiceImpl extends ServiceImpl<InStoreDetailMapper, InStoreDetail> implements IInStoreDetailService { + + @Override + public IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query) { + if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) { + ExceptionCast.cast("鍙傛暟閿欒"); + } + IPage<Map> pageData = new Page<Map>(pageNo, pageSize); + QueryWrapper<Map> queryWrapper = Wrappers.query(); + if (null != query) { + String classifyId = query.get("classifyId"); + if (StringUtils.isNotBlank(classifyId)) { + queryWrapper.eq("t2.id", classifyId); + } + // 鎺掑簭鍐欐硶 + List<OrderItem> orderItems = new ArrayList<>(); + orderItems.add(OrderItem.desc("t1.create_time")); + ((Page<Map>) pageData).setOrders(orderItems); + } + return super.getBaseMapper().findPageList(pageData,queryWrapper); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundDetailServiceImpl.java new file mode 100644 index 0000000..c40515c --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundDetailServiceImpl.java @@ -0,0 +1,55 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.exception.ExceptionCast; +import org.jeecg.modules.tms.entity.InboundDetail; +import org.jeecg.modules.tms.mapper.InboundDetailMapper; +import org.jeecg.modules.tms.service.IInboundDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description: 鍏ュ簱鐢宠鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Service +public class InboundDetailServiceImpl extends ServiceImpl<InboundDetailMapper, InboundDetail> implements IInboundDetailService { + + @Override + public IPage<Map<String, Object>> findPageList(Integer pageNo, Integer pageSize, Map<String, String> query) { + if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) { + ExceptionCast.cast("鍙傛暟閿欒"); + } + IPage<Map> pageData = new Page<Map>(pageNo, pageSize); + QueryWrapper<Map> queryWrapper = Wrappers.query(); + if (null != query) { + String inboundOrderId = query.get("inboundOrderId"); + if (StringUtils.isNotBlank(inboundOrderId)) { + queryWrapper.eq("t1.in_storehouse_id", inboundOrderId); + } + // 鎺掑簭鍐欐硶 + List<OrderItem> orderItems = new ArrayList<>(); + orderItems.add(OrderItem.desc("t1.create_time")); + ((Page<Map>) pageData).setOrders(orderItems); + } + return super.getBaseMapper().findPageList(pageData,queryWrapper); + } + + @Override + public boolean deleteByInboundOrderId(String inboundOrderId) { + return this.baseMapper.deleteByInboundOrderId(inboundOrderId); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java new file mode 100644 index 0000000..8eddc4a --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java @@ -0,0 +1,209 @@ +package org.jeecg.modules.tms.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.tms.entity.InboundOrder; +import org.jeecg.modules.tms.entity.dto.InboundOrderFlowDto; +import org.jeecg.modules.tms.mapper.InboundOrderMapper; +import org.jeecg.modules.tms.service.IInboundOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * @Description: 鍏ュ簱鐢宠鍗� + * @Author: jeecg-boot + * @Date: 2025-05-19 + * @Version: V1.0 + */ +@Service("IInboundOrderService") +public class InboundOrderServiceImpl extends ServiceImpl<InboundOrderMapper, InboundOrder> implements IInboundOrderService, FlowCallBackServiceI { + + @Autowired + private FlowCommonService flowCommonService; + @Autowired + private IFlowDefinitionService flowDefinitionService; + + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private TaskService taskService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Override + public boolean submit(String id) { + InboundOrder inboundOrder = this.getById(id); + //鍙戣捣瀹℃壒娴佺▼ + this.triggerProcess(inboundOrder); + //鏇存柊鍏ュ簱鍗曞鎵圭姸鎬佷负宸叉彁浜� + inboundOrder.setOrderStatus("2"); + this.updateById(inboundOrder); + return true; + } + + /** + * 瑙﹀彂娴佺▼ + * + * @param inboundOrder + * @return + */ + public boolean triggerProcess(InboundOrder inboundOrder) { + + flowCommonService.initActBusiness("鍏ュ簱鐢宠鍗曞彿锛�" + inboundOrder.getInboundNum()+"鍙戣捣瀹℃壒娴佺▼", + inboundOrder.getId(), "IInboundOrderService", "tool_in_storage", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", inboundOrder.getId()); + variables.put("organization", "鏂板鍏ュ簱鐢宠鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + variables.put("comment", "鏂板鍏ュ簱鐢宠鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + variables.put("proofreading", true); + List<String> usernames = new ArrayList<>(); + usernames.add(inboundOrder.getHandler()); + variables.put("NextAssignee", usernames); + Result result = flowDefinitionService.startProcessInstanceByKey("tool_in_storage", variables); + return result.isSuccess(); + } + + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞� + //鑾峰彇涓嬩竴姝ュ鐞嗕汉 + Object object = values.get("NextAssignee"); + return (List<String>) object; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void approvalProcess(InboundOrderFlowDto inboundOrderFlowDto) { + if (StrUtil.isBlank(inboundOrderFlowDto.getTaskId()) || StrUtil.isBlank(inboundOrderFlowDto.getDataId())) { + throw new JeecgBootException("闈炴硶鍙傛暟锛�"); + } + + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = getCurrentUser(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�"); + } + + //鑾峰彇鍏ュ簱鐢宠鍗曚俊鎭� + InboundOrder inboundOrder = getById(inboundOrderFlowDto.getDataId()); + if (inboundOrder == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒"); + } + + //鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = getFlowMyBusiness(inboundOrderFlowDto.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + + // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟 + if (!isUserAuthorized(flowMyBusiness, user)) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�"); + } + + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(inboundOrderFlowDto, inboundOrder, user); + + //瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(inboundOrderFlowDto); + + //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� + if (result.isSuccess()) { + inboundOrder.setOrderStatus(inboundOrderFlowDto.getStatus()); + if ("3".equals(inboundOrderFlowDto.getStatus())) { + inboundOrder.setInStatus("1"); + } + inboundOrder.setReviewer(user.getUsername()); + inboundOrder.setApprovalDate(new Date()); + inboundOrder.setApprovalOpinion(inboundOrderFlowDto.getApprovalOpinion()); + updateById(inboundOrder); + } + } + + private LoginUser getCurrentUser() { + // 鑾峰彇褰撳墠璁よ瘉鐨勭櫥褰曠敤鎴蜂俊鎭� + Subject currentUser = SecurityUtils.getSubject(); + if (currentUser != null && currentUser.isAuthenticated()) { + Object principal = currentUser.getPrincipal(); + if (principal instanceof LoginUser) { + return (LoginUser) principal; + } + } + return null; + } + + private FlowMyBusiness getFlowMyBusiness(String instanceId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId)); + return businessList.isEmpty() ? null : businessList.get(0); + } + + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } + + private void setupProcessVariables(InboundOrderFlowDto inboundOrderFlowDto, InboundOrder inboundOrder, LoginUser user) { + if ("2".equals(inboundOrder.getOrderStatus()) && user.getUsername().equals(inboundOrder.getReviewer())) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", inboundOrder.getId()); + values.put("organization", inboundOrderFlowDto.getApprovalOpinion()); + values.put("comment", inboundOrderFlowDto.getApprovalOpinion()); + values.put("status", inboundOrderFlowDto.getStatus()); + values.put("NextAssignee", Collections.singletonList(inboundOrder.getReviewer())); + inboundOrderFlowDto.setValues(values); + } + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java new file mode 100644 index 0000000..8087404 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutStoreDetailServiceImpl.java @@ -0,0 +1,36 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.OutStoreDetail; +import org.jeecg.modules.tms.entity.vo.OutStoreDetailVo; +import org.jeecg.modules.tms.mapper.OutStoreDetailMapper; +import org.jeecg.modules.tms.service.IOutStoreDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; + +/** + * @Description: 宸ュ叿鍑哄簱娴佹按 + * @Author: jeecg-boot + * @Date: 2025-05-23 + * @Version: V1.0 + */ +@Service +public class OutStoreDetailServiceImpl extends ServiceImpl<OutStoreDetailMapper, OutStoreDetail> implements IOutStoreDetailService { + + @Override + public IPage<OutStoreDetailVo> queryPageList(Page<OutStoreDetailVo> page, Map<String, String[]> parameterMap) { + QueryWrapper<OutStoreDetailVo> queryWrapper = Wrappers.query(); + String[] classifyIds = parameterMap.get("classifyId"); + if (classifyIds != null && classifyIds.length > 0) { + queryWrapper.eq("t11.classify_id", classifyIds[0]); + } + queryWrapper.orderByDesc("create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java index d0f5668..f5cdf56 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/OutboundOrderServiceImpl.java @@ -26,22 +26,25 @@ import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; -import org.jeecg.modules.tms.entity.OutboundOrder; -import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.*; import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundRequestDto; import org.jeecg.modules.tms.entity.dto.OutboundOrderAndDetailDto; import org.jeecg.modules.tms.enums.OutBillStatus; import org.jeecg.modules.tms.enums.OutBoundStatusEnum; +import org.jeecg.modules.tms.enums.OutStorehouseType; +import org.jeecg.modules.tms.enums.ToolCirculationStatus; import org.jeecg.modules.tms.mapper.OutboundDetailMapper; import org.jeecg.modules.tms.mapper.OutboundOrderMapper; -import org.jeecg.modules.tms.service.IOutboundDetailService; -import org.jeecg.modules.tms.service.IOutboundOrderService; +import org.jeecg.modules.tms.service.*; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @Description: tms_outbound_order @@ -55,6 +58,12 @@ @Autowired private IOutboundDetailService outboundDetailService; + @Autowired + private IToolLedgerService toolLedgerService; + @Autowired + private IToolLedgerDetailService toolLedgerDetailService; + @Autowired + private IOutStoreDetailService outStoreDetailService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; @Autowired @@ -207,9 +216,13 @@ //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� if (result.isSuccess()) { - outboundOrder.setOrderStatus(outBoundOrderFlowDto.getStatus()); if (OutBillStatus.APPROVED.getValue().equals(outBoundOrderFlowDto.getStatus())) { outboundOrder.setOutStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + outboundOrder.setOrderStatus(OutBillStatus.APPROVED.getValue()); + } + if (OutBillStatus.REJECTED.getValue().equals(outBoundOrderFlowDto.getStatus())) { + //濡傛灉椹冲洖锛屽鎵瑰崟鐘舵�佸洖鍒拌崏绋� + outboundOrder.setOrderStatus(OutBillStatus.DRAFT.getValue()); } outboundOrder.setAuditDate(new Date()); outboundOrder.setApprovalOpinion(outBoundOrderFlowDto.getApprovalOpinion()); @@ -217,6 +230,158 @@ } } + @Override + @Transactional(rollbackFor = Exception.class) + public void outBound(List<OutBoundRequestDto> outBoundRequestList) { + //鏍¢獙鏄惁鏉ヨ嚜涓�涓敵璇峰崟 + if (!fromOneApply(outBoundRequestList)) { + throw new JeecgBootException("鍑哄簱鏄庣粏蹇呴』鏉ヨ嚜鍚屼竴鍑哄簱鐢宠鍗曪紒"); + } + //鏄惁鍙嚭搴撴牎楠� + if (!readyToOutbound(outBoundRequestList)) { + throw new JeecgBootException("鏈粡瀹℃壒閫氳繃鐨勭敵璇峰崟涓嶈兘鍑哄簱锛�"); + } + //寮�濮嬪嚭搴� + OutboundOrder outboundOrder = getById(outBoundRequestList.get(0).getOutBoundOrderId()); + List<String> detailIds = outBoundRequestList.stream().map(OutBoundRequestDto::getOutboundDetailId).collect(Collectors.toList()); + List<OutboundDetail> outboundDetailList = outboundDetailService.listByIds(detailIds); + List<String> toolIdList = outboundDetailList.stream().map(OutboundDetail::getToolCode).collect(Collectors.toList()); + + Map<String, BigDecimal> outBoundRequestMap = outBoundRequestList.stream() + .collect(Collectors.toMap(OutBoundRequestDto::getOutboundDetailId, OutBoundRequestDto::getOutboundQuantity)); + //澶勭悊搴撳瓨鍙拌处鍙婂彴璐︽槑缁� + Map<String, ToolLedger> toolLedgerMap = toolLedgerService.list(new LambdaQueryWrapper<ToolLedger>().in(ToolLedger::getToolId, toolIdList)).stream() + .collect(Collectors.toMap(ToolLedger::getToolId, item -> item, (k1, k2) -> k1)); + + LambdaQueryWrapper<ToolLedgerDetail> queryWrapper = new LambdaQueryWrapper<>(); + for (int i = 0; i < outboundDetailList.size(); i++) { + if (i > 0) { + queryWrapper.or(); + } + OutboundDetail detail = outboundDetailList.get(i); + queryWrapper.and(wrapper -> + wrapper.eq(ToolLedgerDetail::getToolCode, detail.getToolCode()) + .eq(ToolLedgerDetail::getToolId, detail.getToolId()) //濡傛灉涓嶇鍒版妸锛岃瀛楁涓虹┖ + ); + } + List<ToolLedgerDetail> toolLedgerDetailList = toolLedgerDetailService.list(queryWrapper); + List<ToolLedger> toolLedgerUpdateList = CollectionUtil.newArrayList(); + List<ToolLedgerDetail> toolLedgerDetailUpdateList = CollectionUtil.newArrayList(); + List<OutStoreDetail> outStoreAddList = CollectionUtil.newArrayList(); + List<OutboundDetail> outboundDetailUpdateList = CollectionUtil.newArrayList(); + + for (OutboundDetail detail : outboundDetailList) { + //鏇存柊搴撳瓨鍙拌处 + ToolLedger toolLedger = toolLedgerMap.get(detail.getToolCode()); + BigDecimal outboundQuantity = outBoundRequestMap.get(detail.getId()); + OutStorehouseType outStorehouseType = OutStorehouseType.getByValue(outboundOrder.getOutStorehouseType()); + switch (outStorehouseType) { + case TOOL_BORROW: + toolLedger.setLendCount(toolLedger.getLendCount().add(outboundQuantity)); + break; + case MAINTENANCE_OUTBOUND: + toolLedger.setRepairCount(toolLedger.getRepairCount().add(outboundQuantity)); + break; + case CALIBRATION_OUTBOUND: + toolLedger.setDetectionCount(toolLedger.getDetectionCount().add(outboundQuantity)); + break; + case GRINDING_OUTBOUND: + toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().add(outboundQuantity)); + break; + default: + throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒"); + } + toolLedgerUpdateList.add(toolLedger); + + //鏇存柊鍙拌处鏄庣粏 + toolLedgerDetailList.stream().filter(item -> item.getToolCode().equals(detail.getToolCode()) && item.getToolId().equals(detail.getToolId())) + .findFirst().ifPresent(item -> { + if (StrUtil.isNotBlank(item.getToolId())) { + item.setQuantity(BigDecimal.ZERO); + switch (outStorehouseType) { + case TOOL_BORROW: + item.setStatus(ToolCirculationStatus.BORROWED.getValue()); + break; + case MAINTENANCE_OUTBOUND: + item.setStatus(ToolCirculationStatus.REPAIRING.getValue()); + break; + case CALIBRATION_OUTBOUND: + item.setStatus(ToolCirculationStatus.INSPECTING.getValue()); + break; + case GRINDING_OUTBOUND: + item.setStatus(ToolCirculationStatus.GRINDING.getValue()); + break; + default: + throw new JeecgBootException("鏈煡鐨勫嚭搴撶被鍨嬶紒"); + } + } else { + item.setQuantity(item.getQuantity().subtract(outboundQuantity)); + } + toolLedgerDetailUpdateList.add(item); + }); + + //璁板綍鍑哄簱娴佹按 + OutStoreDetail outStoreDetail = new OutStoreDetail() + .setToolCode(detail.getToolCode()) + .setToolId(detail.getToolId()) + .setOutStorehouseType(outboundOrder.getOutStorehouseType()) + .setGoodsShelvesCode(detail.getOutboundLocation()) + .setOutNumber(outboundQuantity) + .setOutStorehouseId(outboundOrder.getId()) + .setOperateType("1");//1锛氭寜鐢宠鍗� + outStoreAddList.add(outStoreDetail); + + //鏇存柊鐢宠鍗曟槑缁� + detail.setOutActualCount(detail.getOutActualCount().add(outboundQuantity)); + detail.setOutboundTime(new Date()); + if (detail.getOutActualCount().compareTo(detail.getOutboundQuantity()) == 0) { + detail.setStatus(OutBoundStatusEnum.COMPLETED.getValue()); + } else { + detail.setStatus(OutBoundStatusEnum.PARTIAL_OUTBOUND.getValue()); + } + outboundDetailUpdateList.add(detail); + } + toolLedgerService.updateBatchById(toolLedgerUpdateList); + toolLedgerDetailService.updateBatchById(toolLedgerDetailUpdateList); + outStoreDetailService.saveBatch(outStoreAddList); + outboundDetailService.updateBatchById(outboundDetailUpdateList); + + //鏇存柊鐢宠鍗� + boolean allMatch = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>() + .eq(OutboundDetail::getOutStorehouseId, outboundOrder.getId())) + .stream().filter(i -> !detailIds.contains(i.getId())) + .allMatch(i -> i.getStatus().equals(OutBoundStatusEnum.COMPLETED.getValue())); + List<OutboundDetail> partialOutboundList = outboundDetailUpdateList.stream() + .filter(i -> !i.getStatus().equals(OutBoundStatusEnum.COMPLETED.getValue())).collect(Collectors.toList()); + if (allMatch && partialOutboundList.isEmpty()) { + outboundOrder.setOutStatus(OutBoundStatusEnum.COMPLETED.getValue()); + } else { + outboundOrder.setOutStatus(OutBoundStatusEnum.PARTIAL_OUTBOUND.getValue()); + } + outboundOrder.setOutboundTime(new Date()); + updateById(outboundOrder); + } + + private boolean fromOneApply(List<OutBoundRequestDto> outBoundRequestList) { + long count = outBoundRequestList.stream().map(OutBoundRequestDto::getOutBoundOrderId).distinct().count(); + if (count > 1) { + return false; + } + List<String> outDetailIds = outBoundRequestList.stream().map(OutBoundRequestDto::getOutboundDetailId).collect(Collectors.toList()); + String outboundDetailId = outBoundRequestList.get(0).getOutboundDetailId(); + OutboundDetail outboundDetail = outboundDetailService.getById(outboundDetailId); + List<String> detailIds = outboundDetailService.list(new LambdaQueryWrapper<OutboundDetail>() + .eq(OutboundDetail::getOutStorehouseId, outboundDetail.getOutStorehouseId())).stream() + .map(OutboundDetail::getId).collect(Collectors.toList()); + return new HashSet<>(detailIds).containsAll(outDetailIds); + } + + private boolean readyToOutbound(List<OutBoundRequestDto> outBoundRequestList) { + String outBoundOrderId = outBoundRequestList.get(0).getOutBoundOrderId(); + OutboundOrder outboundOrder = getById(outBoundOrderId); + return OutBillStatus.APPROVED.getValue().equals(outboundOrder.getOrderStatus()); + } + public boolean triggerProcess(OutboundOrder outboundOrder) { flowCommonService.initActBusiness("鍗曞彿涓猴細" + outboundOrder.getOutNum() + " 鐨勫嚭搴撶敵璇凤紝寮�濮嬭繘琛屽鎵�", outboundOrder.getId(), "outboundOrderServiceImpl", "tool_out_storage", null); diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java index 8cabb60..cee90e8 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsClassifyServiceImpl.java @@ -78,7 +78,7 @@ return this.baseMapper.queryPageList(page, queryWrapper); } public List<CommonGenericTree> loadTree() { - List<ToolsClassify> toolsClassifyList = this.list(); + List<ToolsClassify> toolsClassifyList = this.lambdaQuery().orderByAsc(ToolsClassify::getId).list(); List<CommonGenericTree> commonGenericTreeList = loadTree(toolsClassifyList); return commonGenericTreeList; } @@ -87,54 +87,39 @@ @SuppressWarnings("unused") ToolsClassify toolsClassify = new ToolsClassify(); List<CommonGenericTree> list = new ArrayList<>(); Map<String, CommonGenericTree> map = new HashMap<>(); - CommonGenericTree<ToolsClassify> node = new CommonGenericTree<>(); - node.setKey("-1"); - node.setTitle("宸ュ叿鍒嗙被"); - node.setRField1(""); - node.setRField2(""); - node.setEntity(new ToolsClassify().setId("-1").setClassifyId("0").setTypeName("宸ュ叿鍒嗙被").setLeafFlag("2")); - list.add(node); if (CollectionUtils.isNotEmpty(toolsClassifyList)) { CommonGenericTree<ToolsClassify> tcNode; + CommonGenericTree<ToolsClassify> childNode; for (ToolsClassify tc : toolsClassifyList) { - if (StrUtils.isBlankOrNull(tc.getParentId()) || tc.getParentId().equals("-1")) { + ToolsClassify child = tc; + if (StrUtils.isBlankOrNull(tc.getParentId())) { tcNode = new CommonGenericTree<>(); tcNode.setKey(tc.getId()); tcNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName()); - tcNode.setParentId(node.getKey()); tcNode.setIcon(""); tcNode.setType(1); tcNode.setValue(tc.getId()); tcNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false); tcNode.setRField1(tc.getClassifyId()); - tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); + //tcNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); tcNode.setEntity(tc); - node.addChildren(tcNode); + list.add(tcNode); map.put(tc.getId(), tcNode); - } - } - CommonGenericTree<ToolsClassify> childNode; - for (ToolsClassify tc : toolsClassifyList) { - ToolsClassify child = tc; - if (map.containsKey(child.getParentId())) { - if (StrUtils.isBlankOrNull(tc.getParentId()) || tc.getParentId().equals("-1")) { - toolsClassify = tc; - } else { - tcNode = map.get(child.getParentId()); - childNode = new CommonGenericTree<>(); - childNode.setKey(tc.getId()); - childNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName()); - childNode.setParentId(tc.getParentId()); - childNode.setIcon(""); - childNode.setType(0); - childNode.setValue(tc.getId()); - childNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false); - childNode.setRField1(tc.getClassifyId()); - childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); - childNode.setEntity(tc); - tcNode.addChildren(childNode); - map.put(child.getId(), childNode); - } + } else { + tcNode = map.get(child.getParentId()); + childNode = new CommonGenericTree<>(); + childNode.setKey(tc.getId()); + childNode.setTitle(tc.getClassifyId() + "/" + tc.getTypeName()); + childNode.setParentId(tc.getParentId()); + childNode.setIcon(""); + childNode.setType(0); + childNode.setValue(tc.getId()); + childNode.setDisabled(CommonConstant.STATUS_0.equals(tc.getStatus()) ? true : false); + childNode.setRField1(tc.getClassifyId()); + //childNode.setRField2(getBaseParent(tc.getId(), 0).getClassifyId()); + childNode.setEntity(tc); + tcNode.addChildren(childNode); + map.put(child.getId(), childNode); } } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java new file mode 100644 index 0000000..2d44481 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java @@ -0,0 +1,38 @@ +package org.jeecg.modules.tms.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; +import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper; +import org.jeecg.modules.tms.service.IToolsLossBoundDetailService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; + +/** + * @Description: 鎹熻�楀崟鏄庣粏 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +@Service +public class ToolsLossBoundDetailServiceImpl extends ServiceImpl<ToolsLossBoundDetailMapper, ToolsLossBoundDetail> implements IToolsLossBoundDetailService { + + @Override + public IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page, Map<String, String[]> parameterMap) { + QueryWrapper<ToolsLossBoundDetail> queryWrapper = Wrappers.query(); + String[] outStorehouseIds = parameterMap.get("lossBoundId"); + if (outStorehouseIds != null && outStorehouseIds.length > 0) { + queryWrapper.eq("t1.loss_bound_id", outStorehouseIds[0]); + } + return this.baseMapper.queryPageList(page, queryWrapper); + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java new file mode 100644 index 0000000..534804b --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java @@ -0,0 +1,347 @@ +package org.jeecg.modules.tms.service.impl; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +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.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; +import org.jeecg.modules.tms.entity.ToolLedger; +import org.jeecg.modules.tms.entity.ToolLedgerDetail; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.enums.OutBoundStatusEnum; +import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper; +import org.jeecg.modules.tms.mapper.ToolsLossBoundMapper; +import org.jeecg.modules.tms.service.IToolLedgerDetailService; +import org.jeecg.modules.tms.service.IToolLedgerService; +import org.jeecg.modules.tms.service.IToolsLossBoundDetailService; +import org.jeecg.modules.tms.service.IToolsLossBoundService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.*; + +/** + * @Description: 鎹熻�楀崟 + * @Author: jeecg-boot + * @Date: 2025-05-21 + * @Version: V1.0 + */ +@Service("IToolsLossBoundService") +public class ToolsLossBoundServiceImpl extends ServiceImpl<ToolsLossBoundMapper, ToolsLossBound> implements IToolsLossBoundService, FlowCallBackServiceI { + + @Autowired + private ToolsLossBoundMapper baseMapper; + + @Autowired + private ToolsLossBoundDetailMapper baseDetailMapper; + @Autowired + private IToolsLossBoundDetailService toolsLossBoundDetailService; + @Resource + private FlowCommonService flowCommonService; + @Resource + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; + + @Autowired + private IToolLedgerService toolLedgerService; + + @Autowired + private IToolLedgerDetailService toolLedgerDetailService; + + @Override + public void delMain(String id) { + baseDetailMapper.deleteByMainId(id); + baseMapper.deleteById(id); + } + + @Override + public void delBatchMain(Collection<? extends Serializable> idList) { + for (Serializable id : idList) { + baseDetailMapper.deleteByMainId(id.toString()); + baseMapper.deleteById(id); + } + } + + @Override + public void addTotal(ToolsLossBound toolsLossBound) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (loginUser != null) { + toolsLossBound.setHandler(loginUser.getId()); + } + toolsLossBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("LossBound")); + toolsLossBound.setOrderStatus(OutBillStatus.DRAFT.getValue()); + save(toolsLossBound); + + List<ToolsLossBoundDetail> detailList = toolsLossBound.getToolsLossBoundDetailList(); + List<ToolsLossBoundDetail> newDetailList = new ArrayList<>(); + + if (CollectionUtils.isNotEmpty(detailList)) { + detailList.forEach(item -> { + item.setLossBoundId(toolsLossBound.getId()); + newDetailList.add(item); + }); + + toolsLossBoundDetailService.saveBatch(newDetailList); + } + } + + + @Override + public IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page, Map<String, String[]> parameterMap) { + QueryWrapper<ToolsLossBound> queryWrapper = Wrappers.query(); + String[] orderCode = parameterMap.get("orderCode"); + if (orderCode != null && orderCode.length > 0) { + queryWrapper.like("t.order_code", orderCode[0]); + } + String[] statuses = parameterMap.get("orderStatus"); + if (statuses != null && statuses.length > 0) { + queryWrapper.eq("t.order_status", statuses[0]); + } + return this.baseMapper.queryPageList(page, queryWrapper); + } + + @Override + public void editTotal(ToolsLossBound toolsLossBound) { + //鍒犻櫎鎵�鏈夋槑缁� + toolsLossBoundDetailService.remove(new LambdaQueryWrapper<ToolsLossBoundDetail>().eq(ToolsLossBoundDetail::getLossBoundId, toolsLossBound.getId())); + ToolsLossBound toolsLossBound1 = BeanUtil.copyProperties(toolsLossBound, ToolsLossBound.class); + this.baseMapper.updateById(toolsLossBound1); + List<ToolsLossBoundDetail> detailList = CollectionUtil.newArrayList(); + toolsLossBound.getToolsLossBoundDetailList().forEach(item -> { + item.setLossBoundId(toolsLossBound1.getId()); + detailList.add(item); + }); + toolsLossBoundDetailService.saveBatch(detailList); + + } + + @Override + public boolean submintOrder(String id) { + + ToolsLossBound toolsLossBound = this.getById(id); + if (toolsLossBound == null) { + return false; + } else { + toolsLossBound.setReviewer(toolsLossBound.getReviewer()); + + flowCommonService.initActBusiness("鎶ユ崯鍗曞彿:" + toolsLossBound.getOrderCode() + ";鎶ユ崯浜�: " + toolsLossBound.getLosser() + ";杩涜鎶ユ崯", toolsLossBound.getId(), "IToolsStocktakingBoundService", "tools_Loss_Approval", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", toolsLossBound.getId()); + if (StrUtil.isEmpty(toolsLossBound.getReviewer())) { + variables.put("organization", "鏂板宸ュ叿鎶ユ崯鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + variables.put("comment", "鏂板宸ュ叿鎶ユ崯鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + } else { + variables.put("organization", toolsLossBound.getLossReason()); + variables.put("comment", toolsLossBound.getLossReason()); + } + variables.put("proofreading", true); + List<String> usernames = new ArrayList<>(); + usernames.add(toolsLossBound.getReviewer()); + variables.put("NextAssignee", usernames); + Result result = flowDefinitionService.startProcessInstanceByKey("tools_Loss_Approval", variables); + if (result != null) { + toolsLossBound.setLossTime(new Date()); + toolsLossBound.setOrderStatus(OutBillStatus.SUBMITTED.getValue()); + //淇濆瓨宸ュ崟 + baseMapper.updateById(toolsLossBound); + return result.isSuccess(); + } + return true; + } + } + + @Override + public void approvalProcess(LossBoundFlowDto lossBoundFlowDto) { + if (StrUtil.isBlank(lossBoundFlowDto.getTaskId()) || StrUtil.isBlank(lossBoundFlowDto.getDataId())) { + throw new JeecgBootException("闈炴硶鍙傛暟锛�"); + } + + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�"); + } + + //鑾峰彇鎶ユ崯鍗曚俊鎭� + ToolsLossBound toolsLossBound = getById(lossBoundFlowDto.getDataId()); + if (toolsLossBound == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒"); + } + + //鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = getFlowMyBusiness(lossBoundFlowDto.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + + // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟 + if (!isUserAuthorized(flowMyBusiness, user)) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�"); + } + + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(lossBoundFlowDto, toolsLossBound, user); + + //瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(lossBoundFlowDto); + + //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� + if (result.isSuccess()) { + toolsLossBound.setOrderStatus(lossBoundFlowDto.getStatus()); + if (OutBillStatus.APPROVED.getValue().equals(lossBoundFlowDto.getStatus())) { + toolsLossBound.setOrderStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + } + /** + * 鏇存柊瀹℃壒鏃堕棿銆佸鎵规剰瑙� 鏇存柊搴撳瓨鎵e噺 搴撳瓨鎬绘暟 + * 鑾峰彇宸ュ叿鏄庣粏鍒楄〃锛岄亶鍘嗘瘡涓伐鍏锋槑缁嗭紝鏇存柊瀵瑰簲鐨勫伐鍏峰簱瀛樿褰曘�� + * 瀵逛簬姣忎釜宸ュ叿锛岃幏鍙栧搴旂殑宸ュ叿搴撳瓨璁板綍锛圱oolLedger锛夛紝骞舵洿鏂版�诲簱瀛樻暟閲忥紙totalCount锛夊拰鎹熷け鏁伴噺锛坙ossCount锛夈�� + * 纭繚鍦ㄦ洿鏂版�诲簱瀛樻暟閲忎箣鍓嶏紝妫�鏌ユ�诲簱瀛樻暟閲忔槸鍚﹀ぇ浜庢垨绛変簬鎹熷け鏁伴噺銆傚鏋滀笉婊¤冻鏉′欢锛屾姏鍑哄紓甯告垨杩涜鍏朵粬澶勭悊銆� + * 鏈�鍚庯紝淇濆瓨鏇存柊鍚庣殑宸ュ叿搴撳瓨璁板綍銆� + */ + + List<ToolsLossBoundDetail> detailList = toolsLossBound.getToolsLossBoundDetailList(); + + if (CollectionUtils.isEmpty(detailList)) { + throw new JeecgBootException("鎶ユ崯鏄庣粏涓虹┖锛屾棤娉曡繘琛屽簱瀛樻墸鍑�"); + } + Map<String, BigDecimal> toolLossMap = new HashMap<>(); + for (ToolsLossBoundDetail item : detailList) { + if (item.getToolId() == null || item.getLossNumber() == null) { + continue; // + } + toolLossMap.put(item.getToolId(), toolLossMap.getOrDefault(item.getToolId(), BigDecimal.ZERO).add(item.getLossNumber())); + } + /** + * 閬嶅巻姣忎釜 toolId锛屾洿鏂板搴旂殑 ToolLedger + */ + for (Map.Entry<String, BigDecimal> entry : toolLossMap.entrySet()) { + String toolId = entry.getKey(); + BigDecimal totalLossNumber = entry.getValue(); + + ToolLedger toolLedger = toolLedgerService.getOne(new QueryWrapper<ToolLedger>().eq("id", toolId)); + if (toolLedger == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑宸ュ叿搴撳瓨璁板綍锛宼oolId锛�" + toolId); + } + + // 鎵e噺鎬诲簱瀛� + if (toolLedger.getTotalCount() != null && toolLedger.getTotalCount().compareTo(totalLossNumber) >= 0) { + toolLedger.setTotalCount(toolLedger.getTotalCount().subtract(totalLossNumber)); + toolLedger.setLossCount(toolLedger.getLossCount().add(totalLossNumber)); + } else { + throw new JeecgBootException("搴撳瓨涓嶈冻锛屾棤娉曞畬鎴愭姤鎹熸搷浣滐紝toolId锛�" + toolId); + } + + // 鏇存柊鏁版嵁搴撲腑鐨� ToolLedger + toolLedgerService.updateById(toolLedger); + /** + * 鏂板閫昏緫锛氭洿鏂板彴璐︽槑缁嗚〃 ToolLedgerDetail 涓殑鐘舵�佸瓧娈典负 6 + */ + UpdateWrapper<ToolLedgerDetail> updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("tool_id", toolId) + .set("status", 6); // 鐘舵�佽缃负 6 + + toolLedgerDetailService.update(updateWrapper); + } + + toolsLossBound.setApprovalDate(new Date()); + toolsLossBound.setApprovalOpinion(lossBoundFlowDto.getApprovalOpinion()); + updateById(toolsLossBound); + } + } + + private void setupProcessVariables(LossBoundFlowDto lossBoundFlowDto, ToolsLossBound toolsLossBound, LoginUser user) { + if (OutBillStatus.SUBMITTED.getValue().equals(toolsLossBound.getOrderStatus()) && user.getUsername().equals(toolsLossBound.getReviewer())) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", toolsLossBound.getId()); + values.put("organization", lossBoundFlowDto.getApprovalOpinion()); + values.put("comment", lossBoundFlowDto.getApprovalOpinion()); + values.put("status", lossBoundFlowDto.getStatus()); + values.put("NextAssignee", Collections.singletonList(toolsLossBound.getReviewer())); + lossBoundFlowDto.setValues(values); + } + } + + private FlowMyBusiness getFlowMyBusiness(String instanceId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list(new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId)); + return businessList.isEmpty() ? null : businessList.get(0); + } + + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } + + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + Object object = values.get("NextAssignee"); + return (List<String>) object; + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java new file mode 100644 index 0000000..f05572d --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java @@ -0,0 +1,52 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; +import org.jeecg.modules.tms.mapper.ToolsSharpeningMapper; +import org.jeecg.modules.tms.service.IToolsSharpeningService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; + +/** + * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 瀹炵幇绫� + * @Author: yourName + * @Date: 2025-05-10 + */ +@Service +public class ToolsSharpeningServiceImpl extends ServiceImpl<ToolsSharpeningMapper, ToolSharpening> implements IToolsSharpeningService { + @Override + public IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap) { + QueryWrapper<ToolSharpeningVo> queryWrapper = Wrappers.query(); + String[] ids = parameterMap.get("id"); + if (ids != null && ids.length > 0) { + queryWrapper.like("t.id", ids[0]); + } + String[] toolIds = parameterMap.get("toolId"); + if (toolIds != null && toolIds.length > 0) { + queryWrapper.like("t.tool_id", toolIds[0]); + } + String[] sharpeningResults = parameterMap.get("sharpeningResult"); + if (sharpeningResults != null && sharpeningResults.length > 0) { + queryWrapper.like("t.sharpening_result", sharpeningResults[0]); + } + String[] startTimes = parameterMap.get("sharpeningTimeBegin "); + if (startTimes != null && startTimes.length > 0) { + queryWrapper.ge("t.sharpening_time", startTimes[0]); + } + String[] endTimes = parameterMap.get("sharpeningTimeEnd"); + if (endTimes != null && endTimes.length > 0) { + queryWrapper.le("t.sharpening_time", endTimes[0]); + } + queryWrapper.orderByDesc("t.create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); + } + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java new file mode 100644 index 0000000..d3e4149 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java @@ -0,0 +1,39 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper; +import org.jeecg.modules.tms.service.IToolsStocktakingBoundDetailService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @Description: 鐩樼偣鍗曟槑缁� + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Service +public class ToolsStocktakingBoundDetailServiceImpl extends ServiceImpl<ToolsStocktakingBoundDetailMapper, ToolsStocktakingBoundDetail> implements IToolsStocktakingBoundDetailService { + + @Autowired + private ToolsStocktakingBoundDetailMapper toolsStocktakingBoundDetailMapper; + + public IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page, Map<String, String[]> parameterMap) { + QueryWrapper<ToolsStocktakingBoundDetail> queryWrapper = Wrappers.query(); + + String[] stocktakingBoundIds = parameterMap.get("stocktakingBoundId"); + if (stocktakingBoundIds != null && stocktakingBoundIds.length > 0) { + queryWrapper.eq("t.stocktaking_bound_id", stocktakingBoundIds[0]); + } + return toolsStocktakingBoundDetailMapper.selectByMainId(page, queryWrapper); + } + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java new file mode 100644 index 0000000..d263f68 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java @@ -0,0 +1,266 @@ +package org.jeecg.modules.tms.service.impl; + + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.jeecg.modules.tms.entity.BaseTools; +import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.ToolsStocktakingBound; +import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; +import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.enums.OutBoundStatusEnum; +import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper; +import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper; +import org.jeecg.modules.tms.service.IToolsStocktakingBoundService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.*; + +/** + * @Description: 鐩樼偣鍗曡〃 + * @Author: jeecg-boot + * @Date: 2025-05-16 + * @Version: V1.0 + */ + +@Service("IToolsStocktakingBoundService") +public class ToolsStocktakingBoundServiceImpl extends ServiceImpl<ToolsStocktakingBoundMapper, ToolsStocktakingBound> implements IToolsStocktakingBoundService, FlowCallBackServiceI { + + + @Autowired + private ISysUserService systemUserService; + @Autowired + private ToolsStocktakingBoundMapper toolsStocktakingBoundMapper; + @Autowired + private ToolsStocktakingBoundDetailMapper toolsStocktakingBoundDetailMapper; + @Resource + private FlowCommonService flowCommonService; + @Resource + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) { + toolsStocktakingBoundMapper.insert(toolsStocktakingBound); + if (toolsStocktakingBoundDetailList != null && toolsStocktakingBoundDetailList.size() > 0) { + for (ToolsStocktakingBoundDetail entity : toolsStocktakingBoundDetailList) { + //澶栭敭璁剧疆 + entity.setGoodsShelvesId(toolsStocktakingBound.getId()); + toolsStocktakingBoundDetailMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) { + toolsStocktakingBoundMapper.updateById(toolsStocktakingBound); + + //1.鍏堝垹闄ゅ瓙琛ㄦ暟鎹� + toolsStocktakingBoundDetailMapper.deleteByMainId(toolsStocktakingBound.getId()); + + //2.瀛愯〃鏁版嵁閲嶆柊鎻掑叆 + if (toolsStocktakingBoundDetailList != null && toolsStocktakingBoundDetailList.size() > 0) { + for (ToolsStocktakingBoundDetail entity : toolsStocktakingBoundDetailList) { + //澶栭敭璁剧疆 + entity.setGoodsShelvesId(toolsStocktakingBound.getId()); + toolsStocktakingBoundDetailMapper.insert(entity); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delMain(String id) { + toolsStocktakingBoundDetailMapper.deleteByMainId(id); + toolsStocktakingBoundMapper.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delBatchMain(Collection<? extends Serializable> idList) { + for (Serializable id : idList) { + toolsStocktakingBoundDetailMapper.deleteByMainId(id.toString()); + toolsStocktakingBoundMapper.deleteById(id); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean submintOrder(String id) { + + ToolsStocktakingBound toolsStocktakingBound = this.getById(id); + if (toolsStocktakingBound == null) { + return false; + } else { + toolsStocktakingBound.setReviewer(toolsStocktakingBound.getReviewer()); + //淇敼鐘舵�� +// toolsStocktakingBound.setApprovalStatus(OutBillStatus.SUBMITTED.getValue()); + flowCommonService.initActBusiness("鐩樼偣鍗曞彿:" + toolsStocktakingBound.getOrderCode() + ";鐩樼偣鍚嶇О: " + toolsStocktakingBound.getStocktakingName() + ";杩涜鐩樼偣", + toolsStocktakingBound.getId(), "IToolsStocktakingBoundService", "tools_stocktaking_bound", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", toolsStocktakingBound.getId()); + if (StrUtil.isEmpty(toolsStocktakingBound.getReviewer())) { + variables.put("organization", "鏂板宸ュ叿鐩樼偣鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + variables.put("comment", "鏂板宸ュ叿鐩樼偣鍗曢粯璁ゅ惎鍔ㄦ祦绋�"); + } else { + variables.put("organization", toolsStocktakingBound.getRemark()); + variables.put("comment", toolsStocktakingBound.getRemark()); + } + variables.put("proofreading", true); + List<String> usernames = new ArrayList<>(); + usernames.add(toolsStocktakingBound.getReviewer()); + variables.put("NextAssignee", usernames); + Result result = flowDefinitionService.startProcessInstanceByKey("tools_stocktaking_bound", variables); + if (result != null) { + toolsStocktakingBound.setInventoryTime(new Date()); + toolsStocktakingBound.setApprovalStatus(OutBillStatus.SUBMITTED.getValue()); + //淇濆瓨宸ュ崟 + toolsStocktakingBoundMapper.updateById(toolsStocktakingBound); + return result.isSuccess(); + } + return true; + } + + + } + + + @Override + public void approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto) { + if (StrUtil.isBlank(stocktakingBoundFlowDto.getTaskId()) || StrUtil.isBlank(stocktakingBoundFlowDto.getDataId())) { + throw new JeecgBootException("闈炴硶鍙傛暟锛�"); + } + + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�"); + } + + //鑾峰彇鎶ユ崯鍗曚俊鎭� + ToolsStocktakingBound toolsStocktakingBound = getById(stocktakingBoundFlowDto.getDataId()); + if (toolsStocktakingBound == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒"); + } + + //鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = getFlowMyBusiness(stocktakingBoundFlowDto.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + + // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟 + if (!isUserAuthorized(flowMyBusiness, user)) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�"); + } + + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(stocktakingBoundFlowDto, toolsStocktakingBound, user); + + //瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(stocktakingBoundFlowDto); + + //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� + if (result.isSuccess()) { + toolsStocktakingBound.setApprovalStatus(stocktakingBoundFlowDto.getStatus()); + if (OutBillStatus.APPROVED.getValue().equals(stocktakingBoundFlowDto.getStatus())) { + toolsStocktakingBound.setApprovalStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + } + toolsStocktakingBound.setApprovalDate(new Date()); + toolsStocktakingBound.setApprovalOpinion(stocktakingBoundFlowDto.getApprovalOpinion()); + updateById(toolsStocktakingBound); + } + } + + private void setupProcessVariables(StocktakingBoundFlowDto stocktakingBoundFlowDto, ToolsStocktakingBound toolsStocktakingBound, LoginUser user) { + if (OutBillStatus.SUBMITTED.getValue().equals(toolsStocktakingBound.getApprovalStatus()) && user.getUsername().equals(toolsStocktakingBound.getReviewer())) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", toolsStocktakingBound.getId()); + values.put("organization", stocktakingBoundFlowDto.getApprovalOpinion()); + values.put("comment", stocktakingBoundFlowDto.getApprovalOpinion()); + values.put("status", stocktakingBoundFlowDto.getStatus()); + values.put("NextAssignee", Collections.singletonList(toolsStocktakingBound.getReviewer())); + stocktakingBoundFlowDto.setValues(values); + } + } + + private FlowMyBusiness getFlowMyBusiness(String instanceId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId)); + return businessList.isEmpty() ? null : businessList.get(0); + } + + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues(); + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + Object object = values.get("NextAssignee"); + return (List<String>) object; + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java new file mode 100644 index 0000000..6d29a80 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.tms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning; +import org.jeecg.modules.tms.mapper.ToolsStoreEarlyWarningMapper; +import org.jeecg.modules.tms.service.IToolsStoreEarlyWarningService; +import org.springframework.stereotype.Service; + +/** + * @Description: tools_store_early warning + * @Author: houjie + * @Date: 2025-05-16 + * @Version: V1.0 + */ +@Service +public class ToolsStoreEarlyWarningServiceImpl extends ServiceImpl<ToolsStoreEarlyWarningMapper, ToolsStoreEarlyWarning> implements IToolsStoreEarlyWarningService { + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java new file mode 100644 index 0000000..bde5895 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodePrinterUtils.java @@ -0,0 +1,74 @@ +package org.jeecg.modules.tms.utils; + +import javax.print.*; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; +import java.awt.print.*; +import java.awt.image.BufferedImage; +import java.awt.*; + +public class QrCodePrinterUtils implements Printable { + + private final BufferedImage image; + + public QrCodePrinterUtils(BufferedImage image) { + this.image = image; + } + + /** + * 鎵撳嵃浜岀淮鐮� + */ + public void print() { + PrinterJob job = PrinterJob.getPrinterJob(); + job.setPrintable(this); + + // 寮瑰嚭鎵撳嵃瀵硅瘽妗嗭紙鍙�夛級 + if (job.printDialog()) { + try { + job.print(); + } catch (PrinterException e) { + System.err.println("鎵撳嵃澶辫触: " + e.getMessage()); + } + } + } + + /** + * 瀹炵幇 Printable 鎺ュ彛鐨勬墦鍗版柟娉� + */ + @Override + public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) { + if (pageIndex > 0) { + return NO_SUCH_PAGE; + } + + Graphics2D g2d = (Graphics2D) graphics; + g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); + + // 璁$畻灞呬腑鍧愭爣 + double pageWidth = pageFormat.getImageableWidth(); + double pageHeight = pageFormat.getImageableHeight(); + double imgWidth = image.getWidth(); + double imgHeight = image.getHeight(); + + double scale = Math.min(pageWidth / imgWidth, pageHeight / imgHeight); + g2d.scale(scale, scale); + g2d.drawImage(image, 0, 0, null); + + return PAGE_EXISTS; + } + + /** + * 浣跨敤榛樿鎵撳嵃鏈烘墦鍗帮紝涓嶅脊瀵硅瘽妗� + */ + public static void noDialogPrint(){ + BufferedImage qrImage = QrCodeUtils.generateQrCode("Silent Print", 300, 300); + QrCodePrinterUtils printer = new QrCodePrinterUtils(qrImage); + PrinterJob job = PrinterJob.getPrinterJob(); + job.setPrintable(printer); + try { + job.print(); + } catch (PrinterException e) { + e.printStackTrace(); + } + } +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodeUtils.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodeUtils.java new file mode 100644 index 0000000..34b9c38 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/utils/QrCodeUtils.java @@ -0,0 +1,121 @@ +package org.jeecg.modules.tms.utils; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; + +import javax.print.*; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; +import javax.print.attribute.standard.Copies; +import javax.swing.*; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.awt.print.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.HashMap; +import java.util.Map; + + +public class QrCodeUtils { + /** + * 鐢熸垚浜岀淮鐮佸浘鐗� + * @param content 浜岀淮鐮佸唴瀹� + * @param width 鍥剧墖瀹藉害 + * @param height 鍥剧墖楂樺害 + * @return BufferedImage 瀵硅薄 + */ + public static BufferedImage generateQrCode(String content, int width, int height) { + try { + Map<EncodeHintType, Object> hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + QRCodeWriter writer = new QRCodeWriter(); + BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, width, height, hints); + return MatrixToImageWriter.toBufferedImage(bitMatrix); + } catch (Exception e) { + throw new RuntimeException("鐢熸垚浜岀淮鐮佸け璐�", e); + } + } + + /** + * 鎵撳嵃浜岀淮鐮� + */ + public static void printBarcode(final BufferedImage image) { + PrinterJob job = PrinterJob.getPrinterJob(); + + // 璁剧疆鎵撳嵃椤甸潰 + PageFormat pf = job.defaultPage(); + Paper paper = pf.getPaper(); + + // 璁剧疆绾稿紶澶у皬鍖归厤鏉″舰鐮佸浘鍍� + paper.setSize(image.getWidth(), image.getHeight() + 50); + paper.setImageableArea(0, 0, image.getWidth(), image.getHeight() + 50); + pf.setPaper(paper); + + // 璁剧疆鎵撳嵃鍐呭 + job.setPrintable(new Printable() { + @Override + public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) { + if (pageIndex > 0) { + return NO_SUCH_PAGE; + } + + Graphics2D g2d = (Graphics2D) graphics; + g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); + g2d.drawImage(image, 0, 0, null); + + return PAGE_EXISTS; + } + }, pf); + + // 鏄剧ず鎵撳嵃瀵硅瘽妗� + if (job.printDialog()) { + try { + job.print(); + JOptionPane.showMessageDialog(null, "鎵撳嵃浠诲姟宸插彂閫佸埌鎵撳嵃鏈�"); + } catch (PrinterException e) { + JOptionPane.showMessageDialog(null, "鎵撳嵃澶辫触: " + e.getMessage()); + e.printStackTrace(); + } + } + } + + + /** + * 榛樿鎵撳嵃鏈烘墦鍗颁簩缁寸爜 + */ + private static void printBarcode2(BufferedImage image) throws Exception { + // 1. 灏咮ufferedImage杞崲涓哄瓧鑺傛暟缁� + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + javax.imageio.ImageIO.write(image, "png", baos); + byte[] imageData = baos.toByteArray(); + + // 2. 鏌ユ壘鎵撳嵃鏈嶅姟 + PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); + if (services.length == 0) { + throw new Exception("娌℃湁鎵惧埌鍙敤鐨勬墦鍗版満"); + } + + // 3. 閫夋嫨榛樿鎵撳嵃鏈�(涔熷彲浠ヨ鐢ㄦ埛閫夋嫨) + PrintService defaultPrinter = PrintServiceLookup.lookupDefaultPrintService(); + if (defaultPrinter == null) { + defaultPrinter = services[0]; // 浣跨敤绗竴涓壘鍒扮殑鎵撳嵃鏈� + } + + // 4. 鍒涘缓鎵撳嵃浣滀笟 + DocPrintJob job = defaultPrinter.createPrintJob(); + + // 5. 璁剧疆鎵撳嵃灞炴�� + PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); + attributes.add(new Copies(1)); // 鎵撳嵃浠芥暟 + + // 6. 鍒涘缓鎵撳嵃鏂囨。 + DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG; + Doc doc = new SimpleDoc(new ByteArrayInputStream(imageData), flavor, null); + + // 7. 鎵ц鎵撳嵃 + job.print(doc, attributes); + } +} -- Gitblit v1.9.3