From eecdbf01b3c69f47a487cc35c0201dd85f98d439 Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Tue, 18 Jun 2024 15:59:56 +0800 Subject: [PATCH] fix mes stock workshop --- sql/mysql/mesdata.sql | 141 ++++++++++++------ .../service/definition/BpmFormService.java | 2 + .../service/business/CrmBusinessService.java | 2 + .../business/CrmBusinessStatusService.java | 3 + .../service/contact/CrmContactService.java | 2 + .../service/contract/CrmContractService.java | 2 + .../service/customer/CrmCustomerService.java | 2 + .../product/CrmProductCategoryService.java | 2 + .../service/product/CrmProductService.java | 2 + .../receivable/CrmReceivableService.java | 2 + .../stock/ErpStockRecordBizTypeEnum.java | 5 +- .../admin/product/ErpProductController.java | 29 ++-- .../admin/stock/ErpStockOutController.java | 37 ++++- .../stock/vo/out/ErpStockOutPageReqVO.java | 7 + .../admin/stock/vo/out/ErpStockOutRespVO.java | 6 + .../stock/vo/out/ErpStockOutSaveReqVO.java | 4 + .../admin/stock/vo/out/StockOutTypeEnum.java | 26 ++++ .../dal/dataobject/stock/ErpStockOutDO.java | 5 + .../dal/mysql/product/ErpProductMapper.java | 9 +- .../dal/mysql/stock/ErpStockOutMapper.java | 12 +- .../service/finance/ErpAccountService.java | 2 + .../product/ErpProductCategoryService.java | 2 + .../service/product/ErpProductService.java | 5 + .../product/ErpProductServiceImpl.java | 9 +- .../product/ErpProductUnitService.java | 2 + .../erp/service/sale/ErpCustomerService.java | 2 + .../erp/service/stock/ErpStockOutService.java | 1 + .../service/stock/ErpStockOutServiceImpl.java | 8 +- .../service/stock/ErpWarehouseService.java | 2 + .../module/member/api/user/MemberUserApi.java | 1 + .../stockworkshop/MesStockOutController.java | 68 +++++++++ .../vo/StockWorkShopTypeEnum.java | 25 ++++ .../stockworkshop/StockWorkshopMapper.java | 3 + .../module/mes/service/plan/PlanService.java | 2 + .../stockworkshop/MesStockOutService.java | 23 +++ .../stockworkshop/MesStockOutServiceImpl.java | 122 +++++++++++++++ .../stockworkshop/StockWorkshopService.java | 2 + .../StockWorkshopServiceImpl.java | 51 ++++++- .../module/pay/service/app/PayAppService.java | 1 + .../yudao/module/system/api/dept/DeptApi.java | 2 + .../module/system/api/user/AdminUserApi.java | 6 +- .../system/service/dept/DeptService.java | 6 +- 42 files changed, 557 insertions(+), 88 deletions(-) create mode 100644 yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/StockOutTypeEnum.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/MesStockOutController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkShopTypeEnum.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java diff --git a/sql/mysql/mesdata.sql b/sql/mysql/mesdata.sql index f54020fe55..0c8a486662 100644 --- a/sql/mysql/mesdata.sql +++ b/sql/mysql/mesdata.sql @@ -132,17 +132,17 @@ CREATE TABLE `mes_machine_component` CREATE TABLE `mes_stock_workshop` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', - `item_id` bigint NOT NULL COMMENT '原料编号', - `count` decimal(24,6) NOT NULL COMMENT '库存数量', - `category_id` bigint DEFAULT NULL COMMENT '分类', - - `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `item_id` bigint NOT NULL COMMENT '原料编号', + `count` decimal(24, 6) NOT NULL COMMENT '库存数量', + `category_id` bigint DEFAULT NULL COMMENT '分类', + + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 @@ -151,22 +151,22 @@ CREATE TABLE `mes_stock_workshop` CREATE TABLE `mes_stock_workshop_detail` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', - `item_id` bigint NOT NULL COMMENT '原料id', - `count` decimal(24,6) NOT NULL COMMENT '数量', - `detail_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '明细类别', - `item_requisition_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '领料单', - `item_requisition_detail_id` bigint NOT NULL COMMENT '领料明细id', - `feeding_record_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料单', - `feeding_record_id` bigint NOT NULL COMMENT '投料id', - `user_id` bigint NOT NULL COMMENT '操作人员', - `operate_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '单据时间', - `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `item_id` bigint NOT NULL COMMENT '原料id', + `count` decimal(24, 6) NOT NULL COMMENT '数量', + `detail_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '明细类别', + `item_requisition_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '领料单', + `item_requisition_detail_id` bigint NOT NULL COMMENT '领料明细id', + `feeding_record_code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料单', + `feeding_record_id` bigint NOT NULL COMMENT '投料id', + `user_id` bigint NOT NULL COMMENT '操作人员', + `operate_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '单据时间', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 @@ -176,26 +176,75 @@ CREATE TABLE `mes_stock_workshop_detail` CREATE TABLE `mes_feeding_record` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', - `feeding_record_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '单号', - `product_id` bigint COMMENT '产品id', - `plan_id` bigint COMMENT '计划id', - `item_id` bigint COMMENT '原料id', - `feeding_pipeline` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '制浆线', - `feeding_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料类型', - `weight` decimal(24, 6) DEFAULT NULL COMMENT '重量', - `feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间', - `user_id` bigint DEFAULT NULL COMMENT '记录人', - `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注', - `record_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '状态', - `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `feeding_record_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '单号', + `plan_id` bigint DEFAULT NULL COMMENT '计划id', + `feeding_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '投料类型', + `feeding_pipeline` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '制浆线', + `feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间', + `record_status` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '状态', + `product_id` bigint DEFAULT NULL COMMENT '产品id', + `item_id` bigint DEFAULT NULL COMMENT '原料id', + `weight` decimal(24, 6) DEFAULT NULL COMMENT '重量', + `user_id` bigint DEFAULT NULL COMMENT '记录人', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '备注', + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 2 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + ROW_FORMAT = DYNAMIC COMMENT ='投料记录'; + +CREATE TABLE `mes_feeding_record_detail` +( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `record_id` bigint DEFAULT NULL COMMENT '记录id', + `item_id` bigint DEFAULT NULL COMMENT '原料id', + `weight` decimal(24, 6) DEFAULT NULL COMMENT '重量', + `unit_id` bigint DEFAULT NULL COMMENT '单位', + `user_id` bigint DEFAULT NULL COMMENT '记录人', + `feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间', + + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB + AUTO_INCREMENT = 2 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + ROW_FORMAT = DYNAMIC COMMENT ='投料记录明细'; + +CREATE TABLE `mes_feeding_record_plan` +( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', + `record_id` bigint DEFAULT NULL COMMENT '记录id', + `record_detail_id` bigint DEFAULT NULL COMMENT '记录明细id', + `plan_id` bigint DEFAULT NULL COMMENT '计划id', + `item_id` bigint DEFAULT NULL COMMENT '原料id', + `weight` decimal(24, 6) DEFAULT NULL COMMENT '重量', + `unit_id` bigint DEFAULT NULL COMMENT '单位', + `user_id` bigint DEFAULT NULL COMMENT '记录人', + `feeding_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '投料时间', + + `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB + AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci - ROW_FORMAT = DYNAMIC COMMENT ='投料记录'; \ No newline at end of file + ROW_FORMAT = DYNAMIC COMMENT ='投料记录分配计划'; \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.java index cf421e1906..3e03cb62b2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmFormService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.bpm.dal.dataobject.definition.BpmFormDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -71,6 +72,7 @@ public interface BpmFormService { * @return 动态表单 Map */ default Map getFormMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return CollectionUtils.convertMap(this.getFormList(ids), BpmFormDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessService.java index d03da429fd..a4ccfeba11 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessService.java @@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.crm.enums.business.CrmBusinessEndStatusEnum; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -114,6 +115,7 @@ public interface CrmBusinessService { * @return 商机 Map */ default Map getBusinessMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getBusinessList(ids), CrmBusinessDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessStatusService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessStatusService.java index 285e984d22..a248d23593 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessStatusService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessStatusService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusType import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -87,6 +88,7 @@ public interface CrmBusinessStatusService { * @return 商机状态组 Map */ default Map getBusinessStatusTypeMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getBusinessStatusTypeList(ids), CrmBusinessStatusTypeDO::getId); } @@ -113,6 +115,7 @@ public interface CrmBusinessStatusService { * @return 商机状态 Map */ default Map getBusinessStatusMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getBusinessStatusList(ids), CrmBusinessStatusDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java index 24273db2f1..5e74d14f41 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -110,6 +111,7 @@ public interface CrmContactService { * @return 联系人 Map */ default Map getContactMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getContactList(ids), CrmContactDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java index f7a686759f..dc0689f2c0 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -111,6 +112,7 @@ public interface CrmContractService { * @return 合同 Map */ default Map getContractMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getContractList(ids), CrmContractDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java index 3a133be963..7cfbeed380 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.crm.service.customer.bo.CrmCustomerCreateReqBO; import javax.validation.Valid; import java.time.LocalDateTime; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -84,6 +85,7 @@ public interface CrmCustomerService { * @return 客户 Map */ default Map getCustomerMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getCustomerList(ids), CrmCustomerDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java index c82f97c4a7..e854e15a7a 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -71,6 +72,7 @@ public interface CrmProductCategoryService { * @return 产品分类 Map */ default Map getProductCategoryMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductCategoryList(ids), CrmProductCategoryDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java index d2f6aa580a..09e2d9f7ad 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -64,6 +65,7 @@ public interface CrmProductService { * @return 产品 Map */ default Map getProductMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductList(ids), CrmProductDO::getId); } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java index 287927f5bd..8187bff02d 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; import javax.validation.Valid; import java.math.BigDecimal; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -82,6 +83,7 @@ public interface CrmReceivableService { * @return 回款 Map */ default Map getReceivableMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getReceivableList(ids), CrmReceivableDO::getId); } diff --git a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java index 559bf4ccf7..e47d56af2e 100644 --- a/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java +++ b/yudao-module-erp/yudao-module-erp-api/src/main/java/cn/iocoder/yudao/module/erp/enums/stock/ErpStockRecordBizTypeEnum.java @@ -17,7 +17,10 @@ public enum ErpStockRecordBizTypeEnum implements IntArrayValuable { OTHER_IN(10, "其它入库"), OTHER_IN_CANCEL(11, "其它入库(作废)"), - + MES_ITEM_OUT(23, "领料出库"), + MES_ITEM_OUT_CANCEL(24, "领料出库(作废)"), + MES_PRODUCT_IN(13, "生产入库"), + MES_PRODUCT_IN_CANCEL(14, "生产入库(作废)"), OTHER_OUT(20, "其它出库"), OTHER_OUT_CANCEL(21, "其它出库(作废)"), diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java index 1d15a21aee..fd6def3351 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java @@ -43,14 +43,14 @@ public class ErpProductController { @PostMapping("/create") @Operation(summary = "创建产品") - @PreAuthorize("@ss.hasPermission('erp:product:create')") + //@PreAuthorize("@ss.hasPermission('erp:product:create')") public CommonResult createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) { return success(productService.createProduct(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新产品") - @PreAuthorize("@ss.hasPermission('erp:product:update')") + //@PreAuthorize("@ss.hasPermission('erp:product:update')") public CommonResult updateProduct(@Valid @RequestBody ProductSaveReqVO updateReqVO) { productService.updateProduct(updateReqVO); return success(true); @@ -59,7 +59,7 @@ public class ErpProductController { @DeleteMapping("/delete") @Operation(summary = "删除产品") @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('erp:product:delete')") + //@PreAuthorize("@ss.hasPermission('erp:product:delete')") public CommonResult deleteProduct(@RequestParam("id") Long id) { productService.deleteProduct(id); return success(true); @@ -68,7 +68,7 @@ public class ErpProductController { @GetMapping("/get") @Operation(summary = "获得产品") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:product:query')") + //@PreAuthorize("@ss.hasPermission('erp:product:query')") public CommonResult getProduct(@RequestParam("id") Long id) { ErpProductDO product = productService.getProduct(id); return success(BeanUtils.toBean(product, ErpProductRespVO.class)); @@ -76,7 +76,7 @@ public class ErpProductController { @GetMapping("/page") @Operation(summary = "获得产品分页") - @PreAuthorize("@ss.hasPermission('erp:product:query')") + //@PreAuthorize("@ss.hasPermission('erp:product:query')") public CommonResult> getProductPage(@Valid ErpProductPageReqVO pageReqVO) { return success(productService.getProductVOPage(pageReqVO)); } @@ -113,16 +113,13 @@ public class ErpProductController { @GetMapping("/simple-list-order") @Operation(summary = "获得采购商品精简列表", description = "不包含产品,主要用于前端的下拉选项") public CommonResult> getOrderSimpleList() { - List list1 = productService.getProductVOListByCategory(ProductTypeEnum.ITEM.getTypeId()); - List list2 = productService.getProductVOListByCategory(ProductTypeEnum.TOOL.getTypeId()); - List list3 = productService.getProductVOListByCategory(ProductTypeEnum.HAOCAI.getTypeId()); - List list4 = productService.getProductVOListByCategory(ProductTypeEnum.GUANJJ.getTypeId()); - - List list = new ArrayList<>(); - list.addAll(list3); - list.addAll(list1); - list.addAll(list2); - list.addAll(list4); + List categorys = new ArrayList<>(); + categorys.add(ProductTypeEnum.ITEM.getTypeId()); + categorys.add(ProductTypeEnum.TOOL.getTypeId()); + categorys.add(ProductTypeEnum.HAOCAI.getTypeId()); + categorys.add(ProductTypeEnum.GUANJJ.getTypeId()); + List productDOList = productService.selectByCategorys(categorys); + List list = productService.buildProductVOList(productDOList); return success(convertList(list, product -> new ErpProductRespVO().setId(product.getId()) .setName(product.getName()).setBarCode(product.getBarCode()) @@ -132,7 +129,7 @@ public class ErpProductController { } @GetMapping("/export-excel") @Operation(summary = "导出产品 Excel") - @PreAuthorize("@ss.hasPermission('erp:product:export')") + //@PreAuthorize("@ss.hasPermission('erp:product:export')") @ApiAccessLog(operateType = EXPORT) public void exportProductExcel(@Valid ErpProductPageReqVO pageReqVO, HttpServletResponse response) throws IOException { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java index 7b207b3f32..efd7331b38 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProduc import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.StockOutTypeEnum; import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; @@ -34,6 +35,7 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -62,14 +64,14 @@ public class ErpStockOutController { @PostMapping("/create") @Operation(summary = "创建其它出库单") - @PreAuthorize("@ss.hasPermission('erp:stock-out:create')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:create')") public CommonResult createStockOut(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) { return success(stockOutService.createStockOut(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新其它出库单") - @PreAuthorize("@ss.hasPermission('erp:stock-out:update')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:update')") public CommonResult updateStockOut(@Valid @RequestBody ErpStockOutSaveReqVO updateReqVO) { stockOutService.updateStockOut(updateReqVO); return success(true); @@ -77,7 +79,7 @@ public class ErpStockOutController { @PutMapping("/update-status") @Operation(summary = "更新其它出库单的状态") - @PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')") public CommonResult updateStockOutStatus(@RequestParam("id") Long id, @RequestParam("status") Integer status) { stockOutService.updateStockOutStatus(id, status); @@ -87,7 +89,7 @@ public class ErpStockOutController { @DeleteMapping("/delete") @Operation(summary = "删除其它出库单") @Parameter(name = "ids", description = "编号数组", required = true) - @PreAuthorize("@ss.hasPermission('erp:stock-out:delete')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:delete')") public CommonResult deleteStockOut(@RequestParam("ids") List ids) { stockOutService.deleteStockOut(ids); return success(true); @@ -96,7 +98,7 @@ public class ErpStockOutController { @GetMapping("/get") @Operation(summary = "获得其它出库单") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('erp:stock-out:query')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:query')") public CommonResult getStockOut(@RequestParam("id") Long id) { ErpStockOutDO stockOut = stockOutService.getStockOut(id); if (stockOut == null) { @@ -116,15 +118,18 @@ public class ErpStockOutController { @GetMapping("/page") @Operation(summary = "获得其它出库单分页") - @PreAuthorize("@ss.hasPermission('erp:stock-out:query')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:query')") public CommonResult> getStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) { + List list = new ArrayList<>(); + list.add(StockOutTypeEnum.产品出库.getValue()); + list.add(StockOutTypeEnum.关键件出库.getValue()); + list.add(StockOutTypeEnum.其他出库.getValue()); PageResult pageResult = stockOutService.getStockOutPage(pageReqVO); return success(buildStockOutVOPageResult(pageResult)); } - @GetMapping("/export-excel") @Operation(summary = "导出其它出库单 Excel") - @PreAuthorize("@ss.hasPermission('erp:stock-out:export')") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:export')") @ApiAccessLog(operateType = EXPORT) public void exportStockOutExcel(@Valid ErpStockOutPageReqVO pageReqVO, HttpServletResponse response) throws IOException { @@ -162,4 +167,20 @@ public class ErpStockOutController { }); } + @PostMapping("/createMesStockOut") + @Operation(summary = "创建生产领料出库单") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:create')") + public CommonResult createMesStockout(@Valid @RequestBody ErpStockOutSaveReqVO createReqVO) { + createReqVO.setOutType(StockOutTypeEnum.原料出库.getValue()); + return success(stockOutService.createStockOut(createReqVO)); + } + @GetMapping("/pageMesStockOut") + @Operation(summary = "获得生产领料出库单分页") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:query')") + public CommonResult> getMesStockOutPage(@Valid ErpStockOutPageReqVO pageReqVO) { + pageReqVO.setOutType(StockOutTypeEnum.原料出库.getValue()); + PageResult pageResult = stockOutService.getStockOutPage(pageReqVO); + return success(buildStockOutVOPageResult(pageResult)); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java index 5f6558b19e..fe6970bcc0 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutPageReqVO.java @@ -10,6 +10,7 @@ import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -24,6 +25,12 @@ public class ErpStockOutPageReqVO extends PageParam { @Schema(description = "客户编号", example = "3113") private Long customerId; + @Schema(description = "负责人id", example = "3113") + private Long responserId; + @Schema(description = "出库类型", example = "随便") + private String outType; + @Schema(description = "出库类型", example = "随便") + private List outTypeList; @Schema(description = "出库时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java index 22a88e7c93..a575f4bd5d 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutRespVO.java @@ -31,6 +31,12 @@ public class ErpStockOutRespVO { @Schema(description = "客户名称", example = "芋道") @ExcelProperty("客户名称") private String customerName; + @Schema(description = "负责人id", example = "3113") + private Long responserId; + @Schema(description = "负责人", example = "3113") + private String responserName; + @Schema(description = "出库类型", example = "随便") + private String outType; @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("出库时间") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java index 263058709e..24f5995ef2 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/ErpStockOutSaveReqVO.java @@ -19,6 +19,10 @@ public class ErpStockOutSaveReqVO { @Schema(description = "客户编号", example = "3113") private Long customerId; + @Schema(description = "负责人id", example = "3113") + private Long responserId; + @Schema(description = "出库类型", example = "随便") + private String outType; @Schema(description = "出库时间", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "出库时间不能为空") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/StockOutTypeEnum.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/StockOutTypeEnum.java new file mode 100644 index 0000000000..423329468a --- /dev/null +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/vo/out/StockOutTypeEnum.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum StockOutTypeEnum { + + 其他出库("其他出库"), + 关键件出库("关键件出库"), + 原料出库("原料出库"), + 产品出库("产品出库"); + + private final String value; + + // 一个可选的方法,用于根据整数值获取对应的枚举实例 + public static StockOutTypeEnum fromValue(String value) { + for (StockOutTypeEnum status : StockOutTypeEnum.values()) { + if (status.getValue().equals(value)) { + return status; + } + } + throw new IllegalArgumentException("Unknown value: " + value); + } +} \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java index e0b337adbc..3f0d3de435 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/stock/ErpStockOutDO.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.math.BigDecimal; @@ -39,6 +40,10 @@ public class ErpStockOutDO extends BaseDO { * TODO 芋艿:待关联 */ private Long customerId; + //@Schema(description = "负责人id", example = "3113") + private Long responserId; + //@Schema(description = "出库类型", example = "随便") + private String outType; /** * 出库时间 */ diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java index 1e0eb261ea..8a60e95fe5 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/product/ErpProductMapper.java @@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.ArrayList; import java.util.List; /** @@ -41,5 +43,10 @@ public interface ErpProductMapper extends BaseMapperX { return selectList(ErpProductDO::getStatus, CommonStatusEnum.ENABLE.getStatus(), ErpProductDO::getCategoryId, categoryId); } - + /**查询不同类型的产品**/ + default List selectByCategorys(List categoryIds){ + return selectList(new QueryWrapper() + .eq("is_enable", true) + .in("category_id" ,categoryIds)); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java index a73dd3ccff..1fb9b962a1 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockOutMapper.java @@ -4,11 +4,15 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * ERP 其它出库单 Mapper * @@ -21,6 +25,9 @@ public interface ErpStockOutMapper extends BaseMapperX { MPJLambdaWrapperX query = new MPJLambdaWrapperX() .likeIfPresent(ErpStockOutDO::getNo, reqVO.getNo()) .eqIfPresent(ErpStockOutDO::getCustomerId, reqVO.getCustomerId()) + .eqIfPresent(ErpStockOutDO::getResponserId, reqVO.getResponserId()) + .eqIfPresent(ErpStockOutDO::getOutType, reqVO.getOutType()) + .inIfPresent(ErpStockOutDO::getOutType, reqVO.getOutTypeList()) .betweenIfPresent(ErpStockOutDO::getOutTime, reqVO.getOutTime()) .eqIfPresent(ErpStockOutDO::getStatus, reqVO.getStatus()) .likeIfPresent(ErpStockOutDO::getRemark, reqVO.getRemark()) @@ -43,5 +50,8 @@ public interface ErpStockOutMapper extends BaseMapperX { default ErpStockOutDO selectByNo(String no) { return selectOne(ErpStockOutDO::getNo, no); } - + default List selectByOutType(List outTypes){ + return selectList(new QueryWrapper() + .in("out_type" ,outTypes)); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java index 9226e15c6e..d7d46792b4 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpAccountService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -88,6 +89,7 @@ public interface ErpAccountService { * @return 结算账户 Map */ default Map getAccountMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getAccountList(ids), ErpAccountDO::getId); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java index 609bc4161a..629f58bd35 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductCategoryService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -71,6 +72,7 @@ public interface ErpProductCategoryService { * @return 产品分类 Map */ default Map getProductCategoryMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductCategoryList(ids), ErpProductCategoryDO::getId); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java index 0869629f09..ac7005db1a 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductService.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -67,6 +68,7 @@ public interface ErpProductService { */ List getProductVOListByStatus(Integer status); List getProductVOListByCategory(Integer categoryId); + List buildProductVOList(List list); /** * 获得产品 VO 列表 * @@ -82,6 +84,7 @@ public interface ErpProductService { * @return 产品 VO Map */ default Map getProductVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductVOList(ids), ErpProductRespVO::getId); } @@ -116,6 +119,8 @@ public interface ErpProductService { */ List getProductList(Collection ids); default Map getProductMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductList(ids), ErpProductDO::getId); } + List selectByCategorys(List categoryIds); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java index 1fd99d110f..5457310878 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductServiceImpl.java @@ -127,8 +127,8 @@ public class ErpProductServiceImpl implements ErpProductService { PageResult pageResult = productMapper.selectPage(pageReqVO); return new PageResult<>(buildProductVOList(pageResult.getList()), pageResult.getTotal()); } - - private List buildProductVOList(List list) { + @Override + public List buildProductVOList(List list) { if (CollUtil.isEmpty(list)) { return Collections.emptyList(); } @@ -157,4 +157,9 @@ public class ErpProductServiceImpl implements ErpProductService { public List getProductList(Collection ids) { return productMapper.selectBatchIds(ids); } + @Override + public + List selectByCategorys(List categoryIds){ + return productMapper.selectByCategorys(categoryIds); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java index 93776adacc..b6a98dc006 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -80,6 +81,7 @@ public interface ErpProductUnitService { * @return 产品单位 Map */ default Map getProductUnitMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getProductUnitList(ids), ErpProductUnitDO::getId); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java index e70c090391..7059753150 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/sale/ErpCustomerService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,6 +73,7 @@ public interface ErpCustomerService { * @return 客户 Map */ default Map getCustomerMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getCustomerList(ids), ErpCustomerDO::getId); } diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java index ffd17fca1c..a55390e3cc 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutService.java @@ -80,5 +80,6 @@ public interface ErpStockOutService { * @return 其它出库单项 List */ List getStockOutItemListByOutIds(Collection outIds); + List selectByOutType(List outTypes); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java index 646bb5869a..06faf7463f 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java @@ -66,7 +66,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { // 1.1 校验出库项的有效性 List stockOutItems = validateStockOutItems(createReqVO.getItems()); // 1.2 校验客户 - customerService.validateCustomer(createReqVO.getCustomerId()); + //customerService.validateCustomer(createReqVO.getCustomerId()); // 1.3 生成出库单号,并校验唯一性 String no = noRedisDAO.generate(ErpNoRedisDAO.STOCK_OUT_NO_PREFIX); if (stockOutMapper.selectByNo(no) != null) { @@ -225,5 +225,11 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { } return stockOutItemMapper.selectListByOutIds(outIds); } + @Override + public + List selectByOutType(List outTypes){ + return stockOutMapper.selectByOutType(outTypes); + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java index 2d6f96fb3a..42f4932630 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpWarehouseService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpWarehouseDO; import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -88,6 +89,7 @@ public interface ErpWarehouseService { * @return 仓库 Map */ default Map getWarehouseMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getWarehouseList(ids), ErpWarehouseDO::getId); } diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java index c9fb801007..e6e08e494e 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/user/MemberUserApi.java @@ -38,6 +38,7 @@ public interface MemberUserApi { * @return 会员用户 Map */ default Map getUserMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); List list = getUserList(ids); return convertMap(list, MemberUserRespDTO::getId); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/MesStockOutController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/MesStockOutController.java new file mode 100644 index 0000000000..bbf6432c95 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/MesStockOutController.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.StockOutTypeEnum; +import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.erp.service.product.ErpProductService; +import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; +import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService; +import cn.iocoder.yudao.module.erp.service.stock.ErpStockService; +import cn.iocoder.yudao.module.mes.service.stockworkshop.MesStockOutService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - ERP 其它出库单") +@RestController +@RequestMapping("/mes/stock-out") +@Validated +public class MesStockOutController { + + @Resource + private ErpStockOutService stockOutService; + @Resource + private ErpStockService stockService; + @Resource + private MesStockOutService mesStockOutService; + + @PutMapping("/mes-update-status") + @Operation(summary = "更新其它出库单的状态") + //@PreAuthorize("@ss.hasPermission('erp:stock-out:update-status')") + public CommonResult updateMesStockOutStatus(@RequestParam("id") Long id, + @RequestParam("status") Integer status) { + mesStockOutService.updateMesStockOutStatus(id, status); + return success(true); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkShopTypeEnum.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkShopTypeEnum.java new file mode 100644 index 0000000000..66966f5888 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/stockworkshop/vo/StockWorkShopTypeEnum.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum StockWorkShopTypeEnum { + + 投料出库("out"), + 领料入库("in"), + 损耗调整("clear"); + + private final String value; + + // 一个可选的方法,用于根据整数值获取对应的枚举实例 + public static StockWorkShopTypeEnum fromValue(String value) { + for (StockWorkShopTypeEnum status : StockWorkShopTypeEnum.values()) { + if (status.getValue().equals(value)) { + return status; + } + } + throw new IllegalArgumentException("Unknown value: " + value); + } +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockworkshop/StockWorkshopMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockworkshop/StockWorkshopMapper.java index 488e7ca952..199f94295f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockworkshop/StockWorkshopMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/stockworkshop/StockWorkshopMapper.java @@ -41,4 +41,7 @@ public interface StockWorkshopMapper extends BaseMapperX { } return BigDecimal.valueOf(MapUtil.getDouble(result.get(0), "sumCount", 0D)); } + default StockWorkshopDO selectByItemId(Long itemId){ + return selectOne("item_id", itemId); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java index 3522b601b4..227306eb5a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanService.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.mes.service.itemrequisition.entity.ItemRequisitio import javax.validation.Valid; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -67,6 +68,7 @@ public interface PlanService { List getPlanList(Collection ids); default Map getPlanMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); return convertMap(getPlanList(ids), PlanDO::getId); } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutService.java new file mode 100644 index 0000000000..5adf53c028 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutService.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.mes.service.stockworkshop; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + +/** + * ERP 其它出库单 Service 接口 + * + * @author 芋道源码 + */ +public interface MesStockOutService { + + + //生产领料审批、反审批 + void updateMesStockOutStatus(Long id, Integer status); +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java new file mode 100644 index 0000000000..9be2e44319 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/MesStockOutServiceImpl.java @@ -0,0 +1,122 @@ +package cn.iocoder.yudao.module.mes.service.stockworkshop; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutItemMapper; +import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutMapper; +import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; +import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; +import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; +import cn.iocoder.yudao.module.erp.service.product.ErpProductService; +import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; +import cn.iocoder.yudao.module.erp.service.stock.ErpStockRecordService; +import cn.iocoder.yudao.module.erp.service.stock.ErpWarehouseService; +import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; +import cn.iocoder.yudao.module.mes.controller.admin.stockworkshop.vo.StockWorkShopTypeEnum; +import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; +import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; + +// TODO 芋艿:记录操作日志 + +/** + * ERP 其它出库单 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class MesStockOutServiceImpl implements MesStockOutService { + + @Resource + private ErpStockOutMapper stockOutMapper; + @Resource + private ErpStockOutItemMapper stockOutItemMapper; + + @Resource + private ErpProductService productService; + + @Resource + private ErpStockRecordService stockRecordService; + + @Resource + private StockWorkshopService stockWorkshopService; + @Resource + private StockWorkshopDetailService workshopDetailService; + + private ErpStockOutDO validateStockOutExists(Long id) { + ErpStockOutDO stockOut = stockOutMapper.selectById(id); + if (stockOut == null) { + throw exception(STOCK_OUT_NOT_EXISTS); + } + return stockOut; + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMesStockOutStatus(Long id, Integer status) { + boolean approve = ErpAuditStatus.APPROVE.getStatus().equals(status); + // 1.1 校验存在 + ErpStockOutDO stockOut = validateStockOutExists(id); + // 1.2 校验状态 + if (stockOut.getStatus().equals(status)) { + throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL); + } + + // 2. 更新状态 + int updateCount = stockOutMapper.updateByIdAndStatus(id, stockOut.getStatus(), + new ErpStockOutDO().setStatus(status)); + if (updateCount == 0) { + throw exception(approve ? STOCK_OUT_APPROVE_FAIL : STOCK_OUT_PROCESS_FAIL); + } + + // 3. 变更库存 + List stockOutItems = stockOutItemMapper.selectListByOutId(id); + Integer bizType = approve ? ErpStockRecordBizTypeEnum.MES_ITEM_OUT.getType() + : ErpStockRecordBizTypeEnum.MES_ITEM_OUT_CANCEL.getType(); + + stockOutItems.forEach(stockOutItem -> { + BigDecimal count = approve ? stockOutItem.getCount().negate() : stockOutItem.getCount(); + ErpProductDO productDO = productService.getProduct(stockOutItem.getProductId()); + stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( + stockOutItem.getProductId(),productDO.getCategoryId(), stockOutItem.getWarehouseId(), count, + bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo())); + + }); + //变更车间仓库存 + // 1.2 产品信息 + Map productMap = productService.getProductVOMap( + convertSet(stockOutItems, ErpStockOutItemDO::getProductId)); + + stockOutItems.forEach(stockOutItem -> { + Long categoryId = productMap.get(stockOutItem.getProductId()).getCategoryId(); + StockWorkshopDO workshopDO = new StockWorkshopDO(null, stockOutItem.getProductId(), + stockOutItem.getCount(),categoryId); + stockWorkshopService.updateStock(workshopDO, StockWorkShopTypeEnum.领料入库.getValue(), + stockOut.getId(), stockOut.getNo() ); + + }); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java index af9cb06a64..dbf9997ba5 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopService.java @@ -64,4 +64,6 @@ public interface StockWorkshopService { */ BigDecimal getStockCount(Long productId); + //更新车间仓库存,itemId不存在则新增 + Long updateStock(StockWorkshopDO other, String detailType , Long id, String code); } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java index fac67bf475..c2d8c71171 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/stockworkshop/StockWorkshopServiceImpl.java @@ -1,5 +1,10 @@ package cn.iocoder.yudao.module.mes.service.stockworkshop; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.module.mes.dal.dataobject.feedingrecord.FeedingRecordDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.stockworkshop.StockWorkshopDetailDO; +import cn.iocoder.yudao.module.mes.dal.mysql.stockworkshop.StockWorkshopDetailMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -30,14 +35,16 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { @Resource private StockWorkshopMapper stockWorkshopMapper; - + @Resource + private StockWorkshopDetailService workshopDetailService; + @Resource + private StockWorkshopDetailMapper detailMapper; @Override public Long createStockWorkshop(StockWorkshopSaveReqVO createReqVO) { // 插入 StockWorkshopDO stockWorkshop = BeanUtils.toBean(createReqVO, StockWorkshopDO.class); - stockWorkshopMapper.insert(stockWorkshop); + return updateStock(stockWorkshop,StockWorkShopTypeEnum.损耗调整.getValue(), null,null); // 返回 - return stockWorkshop.getId(); } @Override @@ -49,10 +56,14 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { stockWorkshopMapper.updateById(updateObj); } + //删除车间仓库存,则先做一次损耗调整为0,再删除记录 @Override public void deleteStockWorkshop(Long id) { // 校验存在 - validateStockWorkshopExists(id); + StockWorkshopDO stockWorkshop = stockWorkshopMapper.selectById(id); + stockWorkshop.setCount(stockWorkshop.getCount().multiply(BigDecimal.valueOf(-1))); + + updateStock(stockWorkshop,StockWorkShopTypeEnum.损耗调整.getValue(), null,null); // 删除 stockWorkshopMapper.deleteById(id); } @@ -78,5 +89,37 @@ public class StockWorkshopServiceImpl implements StockWorkshopService { BigDecimal count = stockWorkshopMapper.selectSumByProductId(productId); return count != null ? count : BigDecimal.ZERO; } + //更新车间仓库存,itemId不存在则新增 + @Override + @Transactional(rollbackFor = Exception.class) + public Long updateStock(StockWorkshopDO other, String detailType , Long id, String code){ + if(other ==null || other.getId() == null) + throw exception(STOCK_WORKSHOP_NOT_EXISTS); + Long result =null; + StockWorkshopDO old = stockWorkshopMapper.selectByItemId(other.getItemId()); + if(old!=null){ + old.setCount(old.getCount().add(other.getCount())); + stockWorkshopMapper.updateById(old); + result = old.getId(); + } + else { + result = (long)stockWorkshopMapper.insert(other); + } + //更新明细 + StockWorkshopDetailDO detailDO = new StockWorkshopDetailDO() + .setDetailType(detailType) + .setItemId(other.getItemId()) + .setCount(other.getCount()); + if(detailType.equals(StockWorkShopTypeEnum.领料入库.getValue())){ + detailDO.setItemRequisitionCode(code); + detailDO.setItemRequisitionDetailId(id); + } + else if(detailType.equals(StockWorkShopTypeEnum.投料出库.getValue())){ + detailDO.setFeedingRecordCode(code); + detailDO.setFeedingRecordId(id); + } + detailMapper.insert(detailDO); + return result; + } } \ No newline at end of file diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppService.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppService.java index 4f9e289d6c..65cfbfc98a 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppService.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/app/PayAppService.java @@ -88,6 +88,7 @@ public interface PayAppService { * @return 商户 Map */ default Map getAppMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); List list = getAppList(ids); return CollectionUtils.convertMap(list, PayAppDO::getId); } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java index bdc3ba59bc..352b24f98a 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -46,6 +47,7 @@ public interface DeptApi { * @return 部门 Map */ default Map getDeptMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); List list = getDeptList(ids); return CollectionUtils.convertMap(list, DeptRespDTO::getId); } diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java index 507fb4b3e7..3fd8a94a38 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java @@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.system.api.user; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Admin 用户 API 接口 @@ -62,6 +59,7 @@ public interface AdminUserApi { * @return 用户 Map */ default Map getUserMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); List users = getUserList(ids); return CollectionUtils.convertMap(users, AdminUserRespDTO::getId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java index 11cb5f42ef..cb9e71f78e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java @@ -5,10 +5,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqV import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * 部门 Service 接口 @@ -70,6 +67,7 @@ public interface DeptService { * @return 部门 Map */ default Map getDeptMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); List list = getDeptList(ids); return CollectionUtils.convertMap(list, DeptDO::getId); }