diff --git a/mhd_wms/pom.xml b/mhd_wms/pom.xml
new file mode 100644
index 000000000..ce92b5309
--- /dev/null
+++ b/mhd_wms/pom.xml
@@ -0,0 +1,170 @@
+
+
+ 4.0.0
+
+ mhd
+ com.mhd
+ 3.6.0
+
+ com.mhd
+ mhd_wms
+
+ mhd_wms
+ mhd_wms 仓储
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ bcpkix-jdk15on
+ org.bouncycastle
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+ io.github.openfeign
+ feign-httpclient
+
+
+ org.springframework.cloud
+ spring-cloud-loadbalancer
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+ com.alibaba.csp
+ sentinel-datasource-nacos
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+
+
+
+ com.mhd
+ mhd-common-core
+
+
+
+ com.mhd
+ mhd-common-log
+
+
+
+ com.mhd
+ mhd-common-redis
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.3.2
+
+
+
+ com.alibaba
+ druid-spring-boot-starter
+ 1.2.11
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-sleuth
+
+
+
+
+ com.mhd
+ mhd-common-security
+
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+ com.mhd
+ mhd-api-system
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.1.1.RELEASE
+
+
+
+ repackage
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+
+
diff --git a/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java
new file mode 100644
index 000000000..8d1ba04b1
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/MhdWmsApplication.java
@@ -0,0 +1,21 @@
+package com.mhd.wms;
+
+import com.alicp.jetcache.anno.config.EnableMethodCache;
+import com.mhd.common.security.annotation.EnableRyFeignClients;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+@SpringBootApplication
+@EnableRyFeignClients
+@EnableDiscoveryClient
+@MapperScan("com.mhd.wms.domain.**.mapper")
+@EnableMethodCache(basePackages = "com.mhd.platform.domain.**.cache")
+public class MhdWmsApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MhdWmsApplication.class, args);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java
new file mode 100644
index 000000000..4878cd60d
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/commonSettings/CommonSettingsApplicationService.java
@@ -0,0 +1,87 @@
+package com.mhd.wms.application.service.commonSettings;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO;
+import com.mhd.wms.domain.commonSettings.service.CommonSettingsDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 常用设置ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+@Service
+@Slf4j
+public class CommonSettingsApplicationService {
+ @Autowired
+ private CommonSettingsDomainService commonSettingsDomainService;
+
+
+ /**
+ * 分页查询常用设置列表
+ */
+
+ public List queryList(CommonSettingsDO commonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return commonSettingsDomainService.queryList(commonSettingsDO);
+ }
+
+
+ /**
+ * 新增常用设置
+ */
+ public Boolean insert(CommonSettingsDO commonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return commonSettingsDomainService.insert(commonSettingsDO);
+ }
+
+ /**
+ * 修改常用设置
+ */
+ public Boolean update(CommonSettingsDO commonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ commonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return commonSettingsDomainService.update(commonSettingsDO);
+ }
+
+ /**
+ * 批量删除常用设置
+ */
+ public boolean delete(Long[] commonSettingsIds) {
+ return commonSettingsDomainService.delete(commonSettingsIds);
+ }
+
+ /**
+ * 获取常用设置详细信息
+ */
+ public CommonSettingsPO getInfo(Long commonSettingsId)
+ {
+ return commonSettingsDomainService.getInfo(commonSettingsId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java
new file mode 100644
index 000000000..d7e19657e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/containerUsageRecord/ContainerUsageRecordApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.containerUsageRecord;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO;
+import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO;
+import com.mhd.wms.domain.containerUsageRecord.service.ContainerUsageRecordDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 容器使用记录ApplicationService
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+@Service
+@Slf4j
+public class ContainerUsageRecordApplicationService {
+ @Autowired
+ private ContainerUsageRecordDomainService containerUsageRecordDomainService;
+
+
+ /**
+ * 分页查询容器使用记录列表
+ */
+
+ public List queryList(ContainerUsageRecordDO containerUsageRecordDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ containerUsageRecordDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return containerUsageRecordDomainService.queryList(containerUsageRecordDO);
+ }
+
+
+ /**
+ * 新增容器使用记录
+ */
+ public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) {
+
+ return containerUsageRecordDomainService.insert(containerUsageRecordDO);
+ }
+
+ /**
+ * 修改容器使用记录
+ */
+ public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) {
+ return containerUsageRecordDomainService.update(containerUsageRecordDO);
+ }
+
+ /**
+ * 批量删除容器使用记录
+ */
+ public boolean delete(String[] ids) {
+ return containerUsageRecordDomainService.delete(ids);
+ }
+
+ /**
+ * 获取容器使用记录详细信息
+ */
+ public ContainerUsageRecordPO getInfo(String id)
+ {
+ return containerUsageRecordDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java
new file mode 100644
index 000000000..e0a904dfb
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/deliveTask/DeliveTaskApplicationService.java
@@ -0,0 +1,112 @@
+package com.mhd.wms.application.service.deliveTask;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+import com.mhd.wms.domain.deliveTask.service.DeliveTaskDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 下发任务ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+@Service
+@Slf4j
+public class DeliveTaskApplicationService {
+ @Autowired
+ private DeliveTaskDomainService deliveTaskDomainService;
+
+
+ /**
+ * 分页查询下发任务列表
+ */
+
+ public List queryList(DeliveTaskDO deliveTaskDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return deliveTaskDomainService.queryList(deliveTaskDO);
+ }
+
+ public List queryListApp(DeliveTaskDO deliveTaskDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ deliveTaskDO.setOperatorsBy(loginUser.getUserid());
+ }
+ }
+ return deliveTaskDomainService.queryListApp(deliveTaskDO);
+ }
+
+ /**
+ * 批量 新增下发任务
+ */
+ public Boolean batchInsert(List deliveTaskDOList) {
+
+ return deliveTaskDomainService.batchInsert(deliveTaskDOList);
+ }
+
+ /**
+ * 批量删除下发任务
+ */
+ public boolean delete(Long[] deliverTaskIds) {
+ return deliveTaskDomainService.delete(deliverTaskIds);
+ }
+
+ /**
+ * 获取下发任务详细信息
+ */
+ public DeliveTaskPO getInfo(Long deliverTaskId)
+ {
+ return deliveTaskDomainService.getInfo(deliverTaskId);
+ }
+ /**
+ * 任务下发接收操作
+ */
+ public int receive(Long deliverTaskId)
+ {
+ return deliveTaskDomainService.receive(deliverTaskId);
+ }
+ /**
+ * 任务下发接收操作
+ */
+ public int refuse(Long deliverTaskId)
+ {
+ return deliveTaskDomainService.refuse(deliverTaskId);
+ }
+
+ /**
+ * 工作台查询
+ */
+ public DeliveTaskSumPO workbenchQuery()
+ {
+ return deliveTaskDomainService.workbenchQuery();
+ }
+
+ public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ deliveTaskDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ deliveTaskDO.setOperatorsBy(loginUser.getUserid());
+ }
+ }
+ return deliveTaskDomainService.querySum(deliveTaskDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java
new file mode 100644
index 000000000..34cf8d9ab
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/differentManage/DifferentManageApplicationService.java
@@ -0,0 +1,87 @@
+package com.mhd.wms.application.service.differentManage;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO;
+import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO;
+import com.mhd.wms.domain.differentManage.service.DifferentManageDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 差异单ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+@Service
+@Slf4j
+public class DifferentManageApplicationService {
+ @Autowired
+ private DifferentManageDomainService differentManageDomainService;
+
+
+ /**
+ * 分页查询差异单列表
+ */
+
+ public List queryList(DifferentManageDO differentManageDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null) {
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1) {
+ differentManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ differentManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return differentManageDomainService.queryList(differentManageDO);
+ }
+
+
+ /**
+ * 新增差异单
+ */
+ public Boolean insert(DifferentManageDO differentManageDO) {
+
+ return differentManageDomainService.insert(differentManageDO);
+ }
+
+ /**
+ * 修改差异单
+ */
+ public Boolean update(DifferentManageDO differentManageDO) {
+ return differentManageDomainService.update(differentManageDO);
+ }
+
+ /**
+ * 批量删除差异单
+ */
+ public boolean delete(Long[] differentManageIds) {
+ return differentManageDomainService.delete(differentManageIds);
+ }
+
+ /**
+ * 获取差异单详细信息
+ */
+ public DifferentManagePO getInfo(Long differentManageId) {
+ return differentManageDomainService.getInfo(differentManageId);
+ }
+
+ public Boolean resetDifferent(DifferentManageDO differentManageDO){
+ return differentManageDomainService.resetDifferent(differentManageDO);
+ }
+ public Boolean differentRollback(DifferentManageDO differentManageDO){
+ return differentManageDomainService.differentRollback(differentManageDO);
+ }
+
+ public DifferentManagePO getDifferentManageDO(Long differentManageId){
+ return differentManageDomainService.getDifferentManageDO(differentManageId);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java
new file mode 100644
index 000000000..e8e544bc7
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/handoverTaskOrder/HandoverTaskOrderApplicationService.java
@@ -0,0 +1,151 @@
+package com.mhd.wms.application.service.handoverTaskOrder;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.DateUtils;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.domain.PlatformFeignPO;
+import com.mhd.system.api.domain.PlatformUseTimeFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
+import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
+import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.util.List;
+
+/**
+ * 交接作业单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class HandoverTaskOrderApplicationService {
+ @Autowired
+ private HandoverTaskOrderDomainService handoverTaskOrderDomainService;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询交接作业单列表
+ */
+
+ public List queryList(HandoverTaskOrderDO handoverTaskOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ handoverTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ handoverTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return handoverTaskOrderDomainService.queryList(handoverTaskOrderDO);
+ }
+
+
+ /**
+ * 新增交接作业单
+ */
+ public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO) {
+
+ return handoverTaskOrderDomainService.insert(handoverTaskOrderDO);
+ }
+
+ /**
+ * 修改交接作业单
+ */
+ public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO) {
+ return handoverTaskOrderDomainService.update(handoverTaskOrderDO);
+ }
+
+ /**
+ * 批量删除交接作业单
+ */
+ public boolean delete(Long[] outTaskOrderIds) {
+ return handoverTaskOrderDomainService.delete(outTaskOrderIds);
+ }
+
+ /**
+ * 获取交接作业单详细信息
+ */
+ public HandoverTaskOrderPO getInfo(Long outTaskOrderId)
+ {
+ return handoverTaskOrderDomainService.getInfo(outTaskOrderId);
+ }
+
+ /**
+ * 分配月台
+ */
+ public Boolean allocationPlatform(HandoverTaskOrderDO handoverTaskOrderDO) {
+ //封装月台信息
+ platformParam(handoverTaskOrderDO);
+ return handoverTaskOrderDomainService.allocationPlatform(handoverTaskOrderDO);
+ }
+
+ /**
+ * @description 释放月台
+ * @author ZhouGY
+ * @date 2024/5/22 15:19
+ * @param handoverTaskOrderDO
+ * @return Boolean
+ */
+ public Boolean releasePlatform(HandoverTaskOrderDO handoverTaskOrderDO){
+ return handoverTaskOrderDomainService.releasePlatform(handoverTaskOrderDO);
+ }
+
+ /**
+ * @description 完成交接
+ * @author ZhouGY
+ * @date 2024/5/31 14:23
+ * @param handoverTaskOrderDO
+ * @return Boolean
+ */
+ public Boolean completeHandover(HandoverTaskOrderDO handoverTaskOrderDO){
+ return handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO);
+ }
+
+
+
+ /**
+ * @description 封装月台信息
+ * @author ZhouGY
+ * @date 2024/5/13 10:45
+ * @param handoverTaskOrderDO
+ */
+ private void platformParam(HandoverTaskOrderDO handoverTaskOrderDO){
+ //封装月台信息
+ AjaxResult ajaxResult = systemServiceFeign.getPlatformInfoByPlatformId(handoverTaskOrderDO.getPlatformId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取月台信息失败");
+ }
+ PlatformFeignPO platformFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), PlatformFeignPO.class);
+ handoverTaskOrderDO.setPlatformCode(platformFeignPO.getPlatformCode());
+ handoverTaskOrderDO.setPlatformName(platformFeignPO.getPlatformName());
+
+ //封装月台使用时间信息
+ AjaxResult ajaxResult2 = systemServiceFeign.getPlatformUseTimeInfoByPlatformUseTimeId(handoverTaskOrderDO.getPlatformId());
+ if(!"200".equals(String.valueOf(ajaxResult2.get("code")))){
+ throw new ServiceException("获取月台使用时间信息失败");
+ }
+ PlatformUseTimeFeignPO platformUseTimeFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult2.get("data")), PlatformUseTimeFeignPO.class);
+ try {
+ handoverTaskOrderDO.setPlatformUseStartTime(DateUtils.parseDate(platformUseTimeFeignPO.getStartTime(), "HH:mm"));
+ handoverTaskOrderDO.setPlatformUseEndTime(DateUtils.parseDate(platformUseTimeFeignPO.getEndTime(), "HH:mm"));
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java
new file mode 100644
index 000000000..4d399367f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetail/InMaterialDetailApplicationService.java
@@ -0,0 +1,73 @@
+package com.mhd.wms.application.service.inMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
+import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
+import com.mhd.wms.domain.inMaterialDetail.service.InMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class InMaterialDetailApplicationService {
+ @Autowired
+ private InMaterialDetailDomainService inMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询物料明细列表
+ */
+
+ public List queryList(InMaterialDetailDO inMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inMaterialDetailDomainService.queryList(inMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增物料明细
+ */
+ public Boolean insert(InMaterialDetailDO inMaterialDetailDO) {
+
+ return inMaterialDetailDomainService.insert(inMaterialDetailDO);
+ }
+
+ /**
+ * 修改物料明细
+ */
+ public Boolean update(InMaterialDetailDO inMaterialDetailDO) {
+ return inMaterialDetailDomainService.update(inMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除物料明细
+ */
+ public boolean delete(Long[] materialDetailIds) {
+ return inMaterialDetailDomainService.delete(materialDetailIds);
+ }
+
+ /**
+ * 获取物料明细详细信息
+ */
+ public InMaterialDetailPO getInfo(Long materialDetailId)
+ {
+ return inMaterialDetailDomainService.getInfo(materialDetailId);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java
new file mode 100644
index 000000000..1714ae290
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inMaterialDetailSerialNumber/InMaterialDetailSerialNumberApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.inMaterialDetailSerialNumber;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.po.InMaterialDetailSerialNumberPO;
+import com.mhd.wms.domain.inMaterialDetailSerialNumber.repository.todo.InMaterialDetailSerialNumberDO;
+import com.mhd.wms.domain.inMaterialDetailSerialNumber.service.InMaterialDetailSerialNumberDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料明细序列号ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class InMaterialDetailSerialNumberApplicationService {
+ @Autowired
+ private InMaterialDetailSerialNumberDomainService inMaterialDetailSerialNumberDomainService;
+
+
+ /**
+ * 分页查询物料明细序列号列表
+ */
+
+ public List queryList(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ InMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inMaterialDetailSerialNumberDomainService.queryList(InMaterialDetailSerialNumberDO);
+ }
+
+
+ /**
+ * 新增物料明细序列号
+ */
+ public Boolean insert(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) {
+
+ return inMaterialDetailSerialNumberDomainService.insert(InMaterialDetailSerialNumberDO);
+ }
+
+ /**
+ * 修改物料明细序列号
+ */
+ public Boolean update(InMaterialDetailSerialNumberDO InMaterialDetailSerialNumberDO) {
+ return inMaterialDetailSerialNumberDomainService.update(InMaterialDetailSerialNumberDO);
+ }
+
+ /**
+ * 批量删除物料明细序列号
+ */
+ public boolean delete(Long[] materialDetailSerialNumberIds) {
+ return inMaterialDetailSerialNumberDomainService.delete(materialDetailSerialNumberIds);
+ }
+
+ /**
+ * 获取物料明细序列号详细信息
+ */
+ public InMaterialDetailSerialNumberPO getInfo(Long materialDetailSerialNumberId)
+ {
+ return inMaterialDetailSerialNumberDomainService.getInfo(materialDetailSerialNumberId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java
new file mode 100644
index 000000000..a9547a025
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inOrderAbnormal/InOrderAbnormalApplicationService.java
@@ -0,0 +1,78 @@
+package com.mhd.wms.application.service.inOrderAbnormal;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inOrderAbnormal.repository.po.InOrderAbnormalPO;
+import com.mhd.wms.domain.inOrderAbnormal.repository.todo.InOrderAbnormalDO;
+import com.mhd.wms.domain.inOrderAbnormal.service.InOrderAbnormalDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 入库异常单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class InOrderAbnormalApplicationService {
+ @Autowired
+ private InOrderAbnormalDomainService inOrderAbnormalDomainService;
+
+
+ /**
+ * 分页查询入库异常单列表
+ */
+
+ public List queryList(InOrderAbnormalDO inOrderAbnormalDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ inOrderAbnormalDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inOrderAbnormalDomainService.queryList(inOrderAbnormalDO);
+ }
+
+
+ /**
+ * 新增入库异常单
+ */
+ public Boolean insert(InOrderAbnormalDO inOrderAbnormalDO) {
+
+ return inOrderAbnormalDomainService.insert(inOrderAbnormalDO);
+ }
+
+ /**
+ * 修改入库异常单
+ */
+ public Boolean update(InOrderAbnormalDO inOrderAbnormalDO) {
+ return inOrderAbnormalDomainService.update(inOrderAbnormalDO);
+ }
+
+ /**
+ * 批量删除入库异常单
+ */
+ public boolean delete(Long[] inOrderAbnormalIds) {
+ return inOrderAbnormalDomainService.delete(inOrderAbnormalIds);
+ }
+
+ /**
+ * 获取入库异常单详细信息
+ */
+ public InOrderAbnormalPO getInfo(Long inOrderAbnormalId)
+ {
+ return inOrderAbnormalDomainService.getInfo(inOrderAbnormalId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java
new file mode 100644
index 000000000..e376cc272
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAdjustmentRecord/InventoryAdjustmentRecordApplicationService.java
@@ -0,0 +1,102 @@
+package com.mhd.wms.application.service.inventoryAdjustmentRecord;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.po.InventoryAdjustmentRecordPO;
+import com.mhd.wms.domain.inventoryAdjustmentRecord.repository.todo.InventoryAdjustmentRecordDO;
+import com.mhd.wms.domain.inventoryAdjustmentRecord.service.InventoryAdjustmentRecordDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 库存调整记录ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-17
+ */
+@Service
+@Slf4j
+public class InventoryAdjustmentRecordApplicationService {
+ @Autowired
+ private InventoryAdjustmentRecordDomainService inventoryAdjustmentRecordDomainService;
+
+
+ /**
+ * 分页查询库存调整记录列表
+ */
+
+ public List queryList(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryAdjustmentRecordDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ inventoryAdjustmentRecordDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryAdjustmentRecordDomainService.queryList(inventoryAdjustmentRecordDO);
+ }
+
+
+ /**
+ * 新增库存调整记录
+ */
+ public Boolean insert(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+
+ return inventoryAdjustmentRecordDomainService.insert(inventoryAdjustmentRecordDO);
+ }
+
+ /**
+ * 修改库存调整记录
+ */
+ public Boolean update(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+ return inventoryAdjustmentRecordDomainService.update(inventoryAdjustmentRecordDO);
+ }
+
+ /**
+ * 批量删除库存调整记录
+ */
+ public boolean delete(Long[] inventoryAdjustmentIds) {
+ return inventoryAdjustmentRecordDomainService.delete(inventoryAdjustmentIds);
+ }
+
+ /**
+ * 获取库存调整记录详细信息
+ */
+ public InventoryAdjustmentRecordPO getInfo(Long inventoryAdjustmentId)
+ {
+ return inventoryAdjustmentRecordDomainService.getInfo(inventoryAdjustmentId);
+ }
+
+ /**
+ * @description:库存调整
+ * @param inventoryAdjustmentRecordDO
+ * @return: java.lang.Boolean
+ * @author: lianzj
+ * @time: 2024-07-18 9:29:40
+ */
+ public Boolean inventoryAdjust(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+ return inventoryAdjustmentRecordDomainService.inventoryAdjust(inventoryAdjustmentRecordDO);
+ }
+
+ /**
+ * @description:库存冻结
+ * @param inventoryAdjustmentRecordDO
+ * @return: java.lang.Boolean
+ * @author: lianzj
+ * @time: 2024-07-18 14:58:15
+ */
+ public Boolean inventoryFrozen(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+ return inventoryAdjustmentRecordDomainService.inventoryFrozen(inventoryAdjustmentRecordDO);
+ }
+
+ public Boolean inventoryFrozenForAll(InventoryAdjustmentRecordDO inventoryAdjustmentRecordDO) {
+ return inventoryAdjustmentRecordDomainService.inventoryFrozenForAll(inventoryAdjustmentRecordDO);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java
new file mode 100644
index 000000000..45042d97b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRule/InventoryAllocationRuleApplicationService.java
@@ -0,0 +1,244 @@
+package com.mhd.wms.application.service.inventoryAllocationRule;
+
+import cn.hutool.json.JSONUtil;
+import com.github.pagehelper.util.StringUtil;
+import com.mhd.common.core.domain.po.SysDictDataVo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryAllocationRule.repository.po.InventoryAllocationRulePO;
+import com.mhd.wms.domain.inventoryAllocationRule.repository.todo.InventoryAllocationRuleDO;
+import com.mhd.wms.domain.inventoryAllocationRule.service.InventoryAllocationRuleDomainService;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.service.InventoryAllocationRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 库存分配规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class InventoryAllocationRuleApplicationService {
+ @Autowired
+ private InventoryAllocationRuleDomainService inventoryAllocationRuleDomainService;
+
+ @Resource
+ private InventoryAllocationRuleDetailDomainService inventoryAllocationRuleDetailDomainService;
+
+ @Resource
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询库存分配规则列表
+ */
+
+ public List queryList(InventoryAllocationRuleDO inventoryAllocationRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryAllocationRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inventoryAllocationRuleDomainService.queryList(inventoryAllocationRuleDO);
+ }
+
+
+ /**
+ * 新增库存分配规则
+ */
+
+ @Transactional
+ public Boolean insert(InventoryAllocationRuleDO inventoryAllocationRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryAllocationRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ Long id = inventoryAllocationRuleDomainService.insertToId(inventoryAllocationRuleDO);
+ //根据ID查询所有的库存分配规则明细
+ Long[] ids = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleId(id);
+ //删除当前的库存分配规则明细信息
+ inventoryAllocationRuleDetailDomainService.delete(ids);
+ //批量新增所有的库存分配规则明细
+ List inventoryAllocationRuleDetailDOS = inventoryAllocationRuleDO.getInventoryAllocationRuleDetailDOS();
+ inventoryAllocationRuleDetailDOS.stream().forEach(inventoryAllocationRuleDetailDO -> {
+ //库位种类 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationKindId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位种类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationKindId())) {
+ throw new ServiceException("库位种类未找到");
+ }
+ inventoryAllocationRuleDetailDO.setLocationKind(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationKindId()));
+ }
+ //库位种类 end
+ //库位分类 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationTypeId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setLocationType(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationTypeId()));
+ }
+ //库位分类 end
+ //混放策略 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMixingSlgId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.CONFUSION_STRATEGY.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMixingSlgId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setMixingSlg(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMixingSlgId()));
+ }
+ //混放策略 end
+ //物料状态 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMaterialStatusId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMaterialStatusId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setMaterialStatus(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMaterialStatusId()));
+ }
+ //物料状态 end
+ inventoryAllocationRuleDetailDO.setInventoryAllocationRuleId(id);
+
+ });
+ return inventoryAllocationRuleDetailDomainService.batchInsert(inventoryAllocationRuleDetailDOS);
+ }
+
+ /**
+ * 修改库存分配规则
+ */
+ public Boolean update(InventoryAllocationRuleDO inventoryAllocationRuleDO) {
+ inventoryAllocationRuleDomainService.update(inventoryAllocationRuleDO);
+ //根据ID查询所有的库存分配规则明细
+ Long[] ids = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleId(inventoryAllocationRuleDO.getId());
+ //删除当前的库存分配规则明细信息
+ inventoryAllocationRuleDetailDomainService.delete(ids);
+ //批量新增所有的库存分配规则明细
+ List inventoryAllocationRuleDetailDOS = inventoryAllocationRuleDO.getInventoryAllocationRuleDetailDOS();
+ inventoryAllocationRuleDetailDOS.stream().forEach(inventoryAllocationRuleDetailDO -> {
+ //库位种类 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationKindId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位种类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationKindId())) {
+ throw new ServiceException("库位种类未找到");
+ }
+ inventoryAllocationRuleDetailDO.setLocationKind(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationKindId()));
+ }
+ //库位种类 end
+ //库位分类 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getLocationTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getLocationTypeId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setLocationType(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getLocationTypeId()));
+ }
+ //库位分类 end
+ //混放策略 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMixingSlgId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.CONFUSION_STRATEGY.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMixingSlgId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setMixingSlg(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMixingSlgId()));
+ }
+ //混放策略 end
+ //物料状态 start
+ if(StringUtil.isNotEmpty(inventoryAllocationRuleDetailDO.getMaterialStatusId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(inventoryAllocationRuleDetailDO.getMaterialStatusId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ inventoryAllocationRuleDetailDO.setMaterialStatus(transportTypeDictMap.get(inventoryAllocationRuleDetailDO.getMaterialStatusId()));
+ }
+ inventoryAllocationRuleDetailDO.setInventoryAllocationRuleId(inventoryAllocationRuleDO.getId());
+ });
+ return inventoryAllocationRuleDetailDomainService.batchInsert(inventoryAllocationRuleDetailDOS);
+ }
+
+ /**
+ * 批量删除库存分配规则
+ */
+ @Transactional
+ public boolean delete(Long[] ids) {
+ inventoryAllocationRuleDomainService.delete(ids);
+ //根据库存分配规则ID查询所有的库存分配规则明细信息
+ Long[] inventoryAllocationRuleDetailIds = inventoryAllocationRuleDetailDomainService.selectIdsByInventoryAllocationRuleIds(ids);
+ return inventoryAllocationRuleDetailDomainService.delete(inventoryAllocationRuleDetailIds);
+ }
+
+ /**
+ * 获取库存分配规则详细信息
+ */
+ public InventoryAllocationRulePO getInfo(Long id)
+ {
+ InventoryAllocationRulePO inventoryAllocationRulePO = inventoryAllocationRuleDomainService.getInfo(id);
+ //根据库存分配ID查询库存分配明细信息
+ List inventoryAllocationRuleDetailPOS =
+ inventoryAllocationRuleDetailDomainService.selectListByInventoryAllocationRuleId(id);
+
+ inventoryAllocationRulePO.setInventoryAllocationRuleDetailList(inventoryAllocationRuleDetailPOS);
+ return inventoryAllocationRulePO;
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java
new file mode 100644
index 000000000..742f8509c
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryAllocationRuleDetail/InventoryAllocationRuleDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.inventoryAllocationRuleDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.po.InventoryAllocationRuleDetailPO;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.repository.todo.InventoryAllocationRuleDetailDO;
+import com.mhd.wms.domain.inventoryAllocationRuleDetail.service.InventoryAllocationRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 库存规则分配明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class InventoryAllocationRuleDetailApplicationService {
+ @Autowired
+ private InventoryAllocationRuleDetailDomainService inventoryAllocationRuleDetailDomainService;
+
+
+ /**
+ * 分页查询库存规则分配明细列表
+ */
+
+ public List queryList(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryAllocationRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inventoryAllocationRuleDetailDomainService.queryList(inventoryAllocationRuleDetailDO);
+ }
+
+
+ /**
+ * 新增库存规则分配明细
+ */
+ public Boolean insert(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) {
+
+ return inventoryAllocationRuleDetailDomainService.insert(inventoryAllocationRuleDetailDO);
+ }
+
+ /**
+ * 修改库存规则分配明细
+ */
+ public Boolean update(InventoryAllocationRuleDetailDO inventoryAllocationRuleDetailDO) {
+ return inventoryAllocationRuleDetailDomainService.update(inventoryAllocationRuleDetailDO);
+ }
+
+ /**
+ * 批量删除库存规则分配明细
+ */
+ public boolean delete(Long[] ids) {
+ return inventoryAllocationRuleDetailDomainService.delete(ids);
+ }
+
+ /**
+ * 获取库存规则分配明细详细信息
+ */
+ public InventoryAllocationRuleDetailPO getInfo(Long id)
+ {
+ return inventoryAllocationRuleDetailDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java
new file mode 100644
index 000000000..1d66b320e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingDetail/InventoryStandingDetailApplicationService.java
@@ -0,0 +1,62 @@
+package com.mhd.wms.application.service.inventoryStandingDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryStandingDetail.repository.po.InventoryStandingDetailPO;
+import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO;
+import com.mhd.wms.domain.inventoryStandingDetail.service.InventoryStandingDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 库存台账追溯详情ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-13
+ */
+@Service
+@Slf4j
+public class InventoryStandingDetailApplicationService {
+ @Autowired
+ private InventoryStandingDetailDomainService inventoryStandingDetailDomainService;
+
+
+ /**
+ * 分页查询库存台账追溯详情列表
+ */
+
+ public List queryList(InventoryStandingDetailDO inventoryStandingDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryStandingDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ inventoryStandingDetailDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryStandingDetailDomainService.queryList(inventoryStandingDetailDO);
+ }
+
+ /**
+ * 批量删除库存台账追溯详情
+ */
+ public boolean delete(Long[] inventoryStandingDetailIds) {
+ return inventoryStandingDetailDomainService.delete(inventoryStandingDetailIds);
+ }
+
+ /**
+ * 获取库存台账追溯详情详细信息
+ */
+ public InventoryStandingDetailPO getInfo(Long inventoryStandingDetailId)
+ {
+ return inventoryStandingDetailDomainService.getInfo(inventoryStandingDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java
new file mode 100644
index 000000000..c3b6c1d51
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryStandingReport/InventoryStandingReportApplicationService.java
@@ -0,0 +1,83 @@
+package com.mhd.wms.application.service.inventoryStandingReport;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryStandingReport.repository.po.InventoryStandingReportPO;
+import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStandingReportDO;
+import com.mhd.wms.domain.inventoryStandingReport.service.InventoryStandingReportDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 库存台账报ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-12
+ */
+@Service
+@Slf4j
+public class InventoryStandingReportApplicationService {
+ @Autowired
+ private InventoryStandingReportDomainService inventoryStandingReportDomainService;
+
+
+ /**
+ * 分页查询库存台账报列表
+ */
+
+ public List queryList(InventoryStandingReportDO inventoryStandingReportDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryStandingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ inventoryStandingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryStandingReportDomainService.queryList(inventoryStandingReportDO);
+ }
+
+
+ /**
+ * 新增库存台账报
+ */
+ public Boolean insert(InventoryStandingReportDO inventoryStandingReportDO) {
+
+ return inventoryStandingReportDomainService.insert(inventoryStandingReportDO);
+ }
+
+ /**
+ * 修改库存台账报
+ */
+ public Boolean update(InventoryStandingReportDO inventoryStandingReportDO) {
+ return inventoryStandingReportDomainService.update(inventoryStandingReportDO);
+ }
+
+ /**
+ * 批量删除库存台账报
+ */
+ public boolean delete(Long[] inventoryStandingIds) {
+ return inventoryStandingReportDomainService.delete(inventoryStandingIds);
+ }
+
+ /**
+ * 获取库存台账报详细信息
+ */
+ public InventoryStandingReportPO getInfo(Long inventoryStandingId)
+ {
+ return inventoryStandingReportDomainService.getInfo(inventoryStandingId);
+ }
+
+
+ public InventoryStandingReportPO getInventoryStandingInfo(InventoryStandingReportDO inventoryStandingReportDO)
+ {
+ return inventoryStandingReportDomainService.getInventoryStandingInfo(inventoryStandingReportDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java
new file mode 100644
index 000000000..25ff80ce0
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRule/InventoryTurnoverRuleApplicationService.java
@@ -0,0 +1,119 @@
+package com.mhd.wms.application.service.inventoryTurnoverRule;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryTurnoverRule.repository.po.InventoryTurnoverRulePO;
+import com.mhd.wms.domain.inventoryTurnoverRule.repository.todo.InventoryTurnoverRuleDO;
+import com.mhd.wms.domain.inventoryTurnoverRule.service.InventoryTurnoverRuleDomainService;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.service.InventoryTurnoverRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 库存周转规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class InventoryTurnoverRuleApplicationService {
+ @Autowired
+ private InventoryTurnoverRuleDomainService inventoryTurnoverRuleDomainService;
+
+
+ @Resource
+ private InventoryTurnoverRuleDetailDomainService inventoryTurnoverRuleDetailDomainService;
+
+
+ /**
+ * 分页查询库存周转规则列表
+ */
+
+ public List queryList(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryTurnoverRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inventoryTurnoverRuleDomainService.queryList(inventoryTurnoverRuleDO);
+ }
+
+
+ /**
+ * 新增库存周转规则
+ */
+ @Transactional
+ public Boolean insert(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryTurnoverRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ Long inventoryTurnoverRuleId = inventoryTurnoverRuleDomainService.insertData(inventoryTurnoverRuleDO);
+ //根据周转规则明细ID查询出原有的数据
+ Long[] ids = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleId);
+ inventoryTurnoverRuleDetailDomainService.delete(ids);//根据周转规则明细ID删除旧数据
+ List inventoryTurnoverRuleDetailDOS = inventoryTurnoverRuleDO.getInventoryTurnoverRuleDetailDOS();
+ inventoryTurnoverRuleDetailDOS.stream().forEach(inventoryTurnoverRuleDetailDO -> {
+ inventoryTurnoverRuleDetailDO.setInventoryTurnoverRuleId(inventoryTurnoverRuleId);
+ });
+ return inventoryTurnoverRuleDetailDomainService.batchInsert(inventoryTurnoverRuleDetailDOS);
+ }
+
+ /**
+ * 修改库存周转规则
+ */
+ @Transactional
+ public Boolean update(InventoryTurnoverRuleDO inventoryTurnoverRuleDO) {
+ inventoryTurnoverRuleDomainService.update(inventoryTurnoverRuleDO);
+ //根据周转规则明细ID查询出原有的数据
+ Long[] ids = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleId(inventoryTurnoverRuleDO.getId());
+ inventoryTurnoverRuleDetailDomainService.delete(ids);//根据周转规则明细ID删除旧数据
+ List inventoryTurnoverRuleDetailDOS = inventoryTurnoverRuleDO.getInventoryTurnoverRuleDetailDOS();
+ inventoryTurnoverRuleDetailDOS.stream().forEach(inventoryTurnoverRuleDetailDO -> {
+ inventoryTurnoverRuleDetailDO.setInventoryTurnoverRuleId(inventoryTurnoverRuleDO.getId());
+ });
+ return inventoryTurnoverRuleDetailDomainService.batchInsert(inventoryTurnoverRuleDetailDOS);
+ }
+
+ /**
+ * 批量删除库存周转规则
+ */
+ @Transactional
+ public boolean delete(Long[] ids) {
+ inventoryTurnoverRuleDomainService.delete(ids);
+ //根据周转规则明细ID查询出原有的数据
+ Long[] inventoryTurnoverRuleIds = inventoryTurnoverRuleDetailDomainService.selectIdsByInventoryTurnoverRuleIds(ids);
+ return inventoryTurnoverRuleDetailDomainService.delete(inventoryTurnoverRuleIds);//根据周转规则明细ID删除旧数据;
+ }
+
+ /**
+ * 获取库存周转规则详细信息
+ */
+ public InventoryTurnoverRulePO getInfo(Long id)
+ {
+
+ InventoryTurnoverRulePO inventoryTurnoverRulePO = inventoryTurnoverRuleDomainService.getInfo(id);
+ //根据周转规则ID获取明细信息
+ List inventoryTurnoverRuleDetailPOList =
+ inventoryTurnoverRuleDetailDomainService.selectListByInventoryTurnoverRuleId(id);
+
+ inventoryTurnoverRulePO.setInventoryTurnoverRuleDetailList(inventoryTurnoverRuleDetailPOList);
+
+ return inventoryTurnoverRulePO;
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java
new file mode 100644
index 000000000..f100ad06e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryTurnoverRuleDetail/InventoryTurnoverRuleDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.inventoryTurnoverRuleDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.po.InventoryTurnoverRuleDetailPO;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.repository.todo.InventoryTurnoverRuleDetailDO;
+import com.mhd.wms.domain.inventoryTurnoverRuleDetail.service.InventoryTurnoverRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 库存周转规则明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class InventoryTurnoverRuleDetailApplicationService {
+ @Autowired
+ private InventoryTurnoverRuleDetailDomainService inventoryTurnoverRuleDetailDomainService;
+
+
+ /**
+ * 分页查询库存周转规则明细列表
+ */
+
+ public List queryList(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryTurnoverRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return inventoryTurnoverRuleDetailDomainService.queryList(inventoryTurnoverRuleDetailDO);
+ }
+
+
+ /**
+ * 新增库存周转规则明细
+ */
+ public Boolean insert(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) {
+
+ return inventoryTurnoverRuleDetailDomainService.insert(inventoryTurnoverRuleDetailDO);
+ }
+
+ /**
+ * 修改库存周转规则明细
+ */
+ public Boolean update(InventoryTurnoverRuleDetailDO inventoryTurnoverRuleDetailDO) {
+ return inventoryTurnoverRuleDetailDomainService.update(inventoryTurnoverRuleDetailDO);
+ }
+
+ /**
+ * 批量删除库存周转规则明细
+ */
+ public boolean delete(Long[] ids) {
+ return inventoryTurnoverRuleDetailDomainService.delete(ids);
+ }
+
+ /**
+ * 获取库存周转规则明细详细信息
+ */
+ public InventoryTurnoverRuleDetailPO getInfo(Long id)
+ {
+ return inventoryTurnoverRuleDetailDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java
new file mode 100644
index 000000000..750620c28
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/inventoryWarningAnalyze/InventoryWarningAnalyzeApplicationService.java
@@ -0,0 +1,199 @@
+package com.mhd.wms.application.service.inventoryWarningAnalyze;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mhd.common.core.utils.OrderSequence;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryWarningAnalyze.entity.InventoryWarningAnalyze;
+import com.mhd.wms.domain.inventoryWarningAnalyze.repository.po.InventoryWarningAnalyzePO;
+import com.mhd.wms.domain.inventoryWarningAnalyze.repository.todo.InventoryWarningAnalyzeDO;
+import com.mhd.wms.domain.inventoryWarningAnalyze.service.InventoryWarningAnalyzeDomainService;
+import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
+import com.mhd.wms.domain.materialBaseInfo.service.MaterialBaseInfoDomainService;
+import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO;
+import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
+import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService;
+import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO;
+import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 库存预警分析ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-24
+ */
+@Service
+@Slf4j
+public class InventoryWarningAnalyzeApplicationService {
+ @Autowired
+ private InventoryWarningAnalyzeDomainService inventoryWarningAnalyzeDomainService;
+
+ @Resource
+ private MaterialInventoryDomainService materialInventoryDomainService;
+
+ @Resource
+ private MaterialInventoryWarningDomainService materialInventoryWarningDomainService;
+
+ @Resource
+ private MaterialBaseInfoDomainService materialBaseInfoDomainService;
+
+ /**
+ * 分页查询库存预警分析列表
+ */
+
+ public List queryList(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ inventoryWarningAnalyzeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ inventoryWarningAnalyzeDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ List inventoryWarningAnalyzePOS = inventoryWarningAnalyzeDomainService.queryList(inventoryWarningAnalyzeDO);
+ for (InventoryWarningAnalyzePO inventoryWarningAnalyzePO : inventoryWarningAnalyzePOS) {
+ StringBuilder sb = new StringBuilder();
+ if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getWarehouseName())) {
+ sb.append(inventoryWarningAnalyzePO.getWarehouseName());
+ }
+ if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getStorageName())) {
+ sb.append("-").append(inventoryWarningAnalyzePO.getStorageName());
+ }
+ if (ObjectUtil.isNotEmpty(inventoryWarningAnalyzePO.getStorageLocationName())) {
+ sb.append("-").append(inventoryWarningAnalyzePO.getStorageLocationName());
+ }
+ inventoryWarningAnalyzePO.setEarlyWarningPosition(sb.toString());
+ }
+ return inventoryWarningAnalyzePOS;
+ }
+
+
+ /**
+ * 新增库存预警分析
+ */
+ public Boolean insert(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) {
+
+ return inventoryWarningAnalyzeDomainService.insert(inventoryWarningAnalyzeDO);
+ }
+
+ /**
+ * 修改库存预警分析
+ */
+ public Boolean update(InventoryWarningAnalyzeDO inventoryWarningAnalyzeDO) {
+ return inventoryWarningAnalyzeDomainService.update(inventoryWarningAnalyzeDO);
+ }
+
+ /**
+ * 批量删除库存预警分析
+ */
+ public boolean delete(Long[] inventoryWarningAnalyzeIds) {
+ return inventoryWarningAnalyzeDomainService.delete(inventoryWarningAnalyzeIds);
+ }
+
+ /**
+ * 获取库存预警分析详细信息
+ */
+ public InventoryWarningAnalyzePO getInfo(Long inventoryWarningAnalyzeId)
+ {
+ return inventoryWarningAnalyzeDomainService.getInfo(inventoryWarningAnalyzeId);
+ }
+
+
+
+ public void inventoryWarningTask() {
+ //查询所有的物料库存预警信息 未删除的
+ List materialInventoryWarningPOList = materialInventoryWarningDomainService.queryAllList();
+ List analyzeList = new ArrayList<>();
+ for (MaterialInventoryWarningPO materialInventoryWarningPO : materialInventoryWarningPOList) {
+ //根据 物料基础信息id、仓库id、库区id、库位id、一级组织表ID、货主ID 去物料库存表中查询物料信息
+ MaterialInventoryDO materialInventoryDO = new MaterialInventoryDO();
+ materialInventoryDO.setMaterialBaseInfoId(materialInventoryWarningPO.getMaterialBaseInfoId());
+ materialInventoryDO.setWarehouseId(materialInventoryWarningPO.getWarehouseId());
+ materialInventoryDO.setStorageSectionId(materialInventoryWarningPO.getStorageSectionId());
+ materialInventoryDO.setStorageLocationId(materialInventoryWarningPO.getStorageLocationId());
+ materialInventoryDO.setTopOrganizationId(materialInventoryWarningPO.getTopOrganizationId());
+ materialInventoryDO.setShipperId(materialInventoryWarningPO.getShipperId());
+ MaterialInventoryPO materialInventoryPO = materialInventoryDomainService.selectOneByWhere(materialInventoryDO);
+
+ if (ObjectUtil.isNull(materialInventoryPO)) {
+ //如果物料库存为null,则结束本次循环继续下次循环
+ continue;
+ }
+ //获取库位上限和下限
+ BigDecimal minTemperature = materialInventoryWarningPO.getMinTemperature();
+ BigDecimal maxTemperature = materialInventoryWarningPO.getMaxTemperature();
+ //物料信息的当前库存
+ BigDecimal inventoryQuantity = materialInventoryPO.getInventoryQuantity();
+ Integer warningAnalyzeType = 0;//预警类型
+ BigDecimal warningStandardQuantity = BigDecimal.ZERO;
+ if (inventoryQuantity.compareTo(minTemperature) < 0) {//库存不足
+ warningAnalyzeType = 1;
+ warningStandardQuantity = minTemperature;
+ }
+
+ if (inventoryQuantity.compareTo(maxTemperature) > 0) {//库存超限
+ warningAnalyzeType = 2;
+ warningStandardQuantity = maxTemperature;
+ }
+ //如果预警类型不等于0增加库存预警分析表记录
+ if (warningAnalyzeType != 0) {
+ InventoryWarningAnalyze warningAnalyze = new InventoryWarningAnalyze();
+ warningAnalyze.setOrganizationId(materialInventoryPO.getOrganizationId());
+ warningAnalyze.setOrganizationName(materialInventoryPO.getOrganizationName());
+ warningAnalyze.setTopOrganizationId(materialInventoryPO.getTopOrganizationId());
+ warningAnalyze.setMaterialBaseInfoId(materialInventoryPO.getMaterialBaseInfoId());
+ //查询物料信息
+ MaterialBaseInfoPO materialBaseInfoPo = materialBaseInfoDomainService.selectOneByID(materialInventoryPO.getMaterialBaseInfoId());
+ if (ObjectUtil.isNotNull(materialBaseInfoPo)) {
+ warningAnalyze.setMaterialName(materialBaseInfoPo.getMaterialName());
+ warningAnalyze.setMaterialCode(materialBaseInfoPo.getMaterialCode());
+ warningAnalyze.setPackId(materialBaseInfoPo.getPackId());
+ warningAnalyze.setPackCode(materialBaseInfoPo.getPackCode());
+ warningAnalyze.setPackName(materialBaseInfoPo.getPackName());
+ warningAnalyze.setShipperId(materialBaseInfoPo.getShipperId());
+ warningAnalyze.setShipperName(materialBaseInfoPo.getShipperName());
+ warningAnalyze.setShipperCode(materialBaseInfoPo.getShipperCode());
+ warningAnalyze.setBarCode(materialBaseInfoPo.getBarCode());
+ warningAnalyze.setUnitQuantity(materialBaseInfoPo.getUnitNumber());//单位数量
+ }
+ warningAnalyze.setWarehouseId(materialInventoryPO.getWarehouseId());
+ warningAnalyze.setWarehouseCode(materialInventoryPO.getWarehouseCode());
+ warningAnalyze.setWarehouseName(materialInventoryPO.getWarehouseName());
+ warningAnalyze.setStorageSectionId(materialInventoryPO.getStorageSectionId());
+ warningAnalyze.setStorageCode(materialInventoryPO.getStorageCode());
+ warningAnalyze.setStorageName(materialInventoryPO.getStorageName());
+ warningAnalyze.setStorageLocationId(materialInventoryPO.getStorageLocationId());
+ warningAnalyze.setStorageLocationCode(materialInventoryPO.getStorageLocationCode());
+ warningAnalyze.setStorageLocationName(materialInventoryPO.getStorageLocationName());
+ warningAnalyze.setPackDetailId(materialInventoryWarningPO.getPackDetailId());
+ warningAnalyze.setUnitCode(materialInventoryWarningPO.getUnitCode());
+ warningAnalyze.setUnitName(materialInventoryWarningPO.getName());
+ warningAnalyze.setInventoryQuantity(materialInventoryPO.getInventoryQuantity());
+ warningAnalyze.setWarningAnalyzeNumber(OrderSequence.getOrderCode("YJ"));//预警单号
+ warningAnalyze.setWarningAnalyzeType(warningAnalyzeType);
+ warningAnalyze.setWarningStandardQuantity(warningStandardQuantity);//库存标准预警数
+ warningAnalyze.setWarningTime(new Date());
+ warningAnalyze.setRemark("");
+ warningAnalyze.setCreateTime(new Date());
+ warningAnalyze.setUpdateTime(new Date());
+ warningAnalyze.setDelFlag(1);
+
+ analyzeList.add(warningAnalyze);
+ }
+ }
+
+ inventoryWarningAnalyzeDomainService.batchInsert(analyzeList);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java
new file mode 100644
index 000000000..16c4b9847
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigationManage/InvestigationManageApplicationService.java
@@ -0,0 +1,237 @@
+package com.mhd.wms.application.service.investigationManage;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.WarehouseFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.investigationManage.repository.po.InvestigationManagePO;
+import com.mhd.wms.domain.investigationManage.repository.todo.InvestigationManageDO;
+import com.mhd.wms.domain.investigationManage.service.InvestigationManageDomainService;
+import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO;
+import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO;
+import com.mhd.wms.domain.investigetionManageDetail.service.InvestigetionManageDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 盘点管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-10
+ */
+@Service
+@Slf4j
+public class InvestigationManageApplicationService {
+ @Autowired
+ private InvestigationManageDomainService investigationManageDomainService;
+ @Autowired
+ private InvestigetionManageDetailDomainService investigetionManageDetailDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询盘点管理列表
+ */
+
+ public List queryList(InvestigationManageDO investigationManageDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null) {
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1) {
+ investigationManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ investigationManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return investigationManageDomainService.queryList(investigationManageDO);
+ }
+
+
+ /**
+ * 新增盘点管理
+ */
+ public Boolean insert(InvestigationManageDO investigationManageDO) {
+ //封装仓库信息
+ warehouseParam(investigationManageDO);
+ return investigationManageDomainService.insert(investigationManageDO);
+ }
+
+ /**
+ * 修改盘点管理
+ */
+ public Boolean update(InvestigationManageDO investigationManageDO) {
+ //封装仓库信息
+ warehouseParam(investigationManageDO);
+ return investigationManageDomainService.update(investigationManageDO);
+ }
+
+ /**
+ * 批量删除盘点管理
+ */
+ public boolean delete(Long[] investigationManageIds) {
+ return investigationManageDomainService.delete(investigationManageIds);
+ }
+
+ /**
+ * 获取盘点管理详细信息
+ */
+ public InvestigationManagePO getInfo(Long investigationManageId) {
+ return investigationManageDomainService.getInfo(investigationManageId);
+ }
+
+ /**
+ * 审核
+ */
+ public Boolean auditState(InvestigationManageDO investigationManageDO){
+ return investigationManageDomainService.auditState(investigationManageDO);
+ }
+
+ public Boolean taskDistribution(InvestigationManageDO investigationManageDO){
+ //设置作业人员信息
+ operatorsParam(investigationManageDO);
+ return investigationManageDomainService.taskDistribution(investigationManageDO);
+ }
+
+ public Boolean investigationCount(InvestigationManageDO investigationManageDO){
+ return investigationManageDomainService.investigationCount(investigationManageDO);
+ }
+
+ /**
+ * 完成盘点
+ */
+ public Boolean finishInvestigation(Long investigationManageId){
+ return investigationManageDomainService.finishInvestigation(investigationManageId);
+ }
+
+
+ /**
+ * 按库位拣货 获取拣货作业单详细信息
+ */
+ public InvestigationManagePO getInfoByStorageLocation(Long investigationManageId)
+ {
+ return investigationManageDomainService.getInfoByStorageLocation(investigationManageId);
+ }
+
+ /**
+ *按物料拣货 获取拣货作业单详细信息
+ */
+ public InvestigationManagePO getInfoByMaterial(Long investigationManageId)
+ {
+ return investigationManageDomainService.getInfoByMaterial(investigationManageId);
+ }
+
+ /**
+ * @description 按物料分组 盘点
+ * @author ZhouGY
+ * @date 2024/7/20 15:07
+ * @param investigationManageDO
+ * @return InvestigationManagePO
+ */
+ public Boolean investigationPickingByMaterial(InvestigationManageDO investigationManageDO){
+ InvestigationManageDO assembleInvestigationManageDO = assembleParamByInvestigationManage(investigationManageDO);
+ return investigationManageDomainService.investigationPickingByMaterial(assembleInvestigationManageDO);
+ }
+
+ /**
+ * @description 盘点 装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param investigationManageDO
+ * @return Boolean
+ */
+ private InvestigationManageDO assembleParamByInvestigationManage(InvestigationManageDO investigationManageDO) {
+ InvestigationManagePO investigationManagePO = investigationManageDomainService.getInfo(investigationManageDO.getInvestigationManageId());
+ if (investigationManagePO == null){
+ throw new ServiceException("盘点单不存在");
+ }
+ if (investigationManagePO.getInvestigationStatus() > 3) {
+ throw new ServiceException("盘点单已盘点完成");
+ }
+ InvestigationManageDO returnInvestigationManageDO = new InvestigationManageDO();
+ returnInvestigationManageDO.setUpdateTime(investigationManageDO.getUpdateTime());
+ returnInvestigationManageDO.setInvestigationManageId(investigationManagePO.getInvestigationManageId());
+ returnInvestigationManageDO.setOrganizationId(investigationManagePO.getOrganizationId());
+ returnInvestigationManageDO.setOrganizationName(investigationManagePO.getOrganizationName());
+ returnInvestigationManageDO.setTopOrganizationId(investigationManagePO.getTopOrganizationId());
+ returnInvestigationManageDO.setInvestigationNumber(investigationManagePO.getInvestigationNumber());
+ InvestigetionManageDetailDO investigetionManageDetailDOByQuery = new InvestigetionManageDetailDO();
+ investigetionManageDetailDOByQuery.setInvestigationNumber(investigationManagePO.getInvestigationNumber());
+ List investigetionManageDetailPODbList = investigetionManageDetailDomainService.queryList(investigetionManageDetailDOByQuery);
+ Map taskPickingMaterialDetailDbMap = investigetionManageDetailPODbList.stream().collect(Collectors.toMap(InvestigetionManageDetailPO::getInvestigationManageDetailId, Function.identity()));
+ List returnInvestigetionManageDetailDOList = new ArrayList<>();
+ for (InvestigetionManageDetailDO investigetionManageDetailDO : investigationManageDO.getInvestigetionManageDetailList()){
+ //设置物料更多属性信息
+ InvestigetionManageDetailPO investigetionManageDetailPO = taskPickingMaterialDetailDbMap.get(investigetionManageDetailDO.getInvestigationManageDetailId());
+ if (investigetionManageDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (ObjectUtil.isNull(investigetionManageDetailDO.getInvestigationQuantity()) || investigetionManageDetailDO.getInvestigationQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进盘点直接跳过
+ continue;
+ }
+ InvestigetionManageDetailDO returnInvestigetionManageDetailDO = new InvestigetionManageDetailDO();
+ BeanUtils.copyProperties(investigetionManageDetailPO, returnInvestigetionManageDetailDO);
+ returnInvestigetionManageDetailDO.setInvestigationQuantity(investigetionManageDetailDO.getInvestigationQuantity());
+ returnInvestigetionManageDetailDOList.add(returnInvestigetionManageDetailDO);
+ }
+ returnInvestigationManageDO.setInvestigetionManageDetailList(returnInvestigetionManageDetailDOList);
+ return returnInvestigationManageDO;
+ }
+
+
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param investigationManageDO
+ */
+ private void operatorsParam(InvestigationManageDO investigationManageDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(investigationManageDO.getOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ investigationManageDO.setOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 封装仓库信息
+ * @author ZhouGY
+ * @date 2024/5/10 20:28
+ * @param investigationManageDO
+ */
+ private void warehouseParam(InvestigationManageDO investigationManageDO){
+ if (ObjectUtil.isNull(investigationManageDO.getWarehouseId())){
+ throw new ServiceException("仓库信息不能为空");
+ }
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(investigationManageDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ investigationManageDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ investigationManageDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java
new file mode 100644
index 000000000..b614dc095
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/investigetionManageDetail/InvestigetionManageDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.investigetionManageDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO;
+import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO;
+import com.mhd.wms.domain.investigetionManageDetail.service.InvestigetionManageDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 盘点详情管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-10
+ */
+@Service
+@Slf4j
+public class InvestigetionManageDetailApplicationService {
+ @Autowired
+ private InvestigetionManageDetailDomainService investigetionManageDetailDomainService;
+
+
+ /**
+ * 分页查询盘点详情管理列表
+ */
+
+ public List queryList(InvestigetionManageDetailDO investigetionManageDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ investigetionManageDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return investigetionManageDetailDomainService.queryList(investigetionManageDetailDO);
+ }
+
+
+ /**
+ * 新增盘点详情管理
+ */
+ public Boolean insert(InvestigetionManageDetailDO investigetionManageDetailDO) {
+
+ return investigetionManageDetailDomainService.insert(investigetionManageDetailDO);
+ }
+
+ /**
+ * 修改盘点详情管理
+ */
+ public Boolean update(InvestigetionManageDetailDO investigetionManageDetailDO) {
+ return investigetionManageDetailDomainService.update(investigetionManageDetailDO);
+ }
+
+ /**
+ * 批量删除盘点详情管理
+ */
+ public boolean delete(Long[] investigationManageDetailIds) {
+ return investigetionManageDetailDomainService.delete(investigationManageDetailIds);
+ }
+
+ /**
+ * 获取盘点详情管理详细信息
+ */
+ public InvestigetionManageDetailPO getInfo(Long investigationManageDetailId)
+ {
+ return investigetionManageDetailDomainService.getInfo(investigationManageDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java
new file mode 100644
index 000000000..93879fc4d
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBarCode/MaterialBarCodeApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.materialBarCode;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialBarCode.repository.po.MaterialBarCodePO;
+import com.mhd.wms.domain.materialBarCode.repository.todo.MaterialBarCodeDO;
+import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料条码信息ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialBarCodeApplicationService {
+ @Autowired
+ private MaterialBarCodeDomainService materialBarCodeDomainService;
+
+
+ /**
+ * 分页查询物料条码信息列表
+ */
+
+ public List queryList(MaterialBarCodeDO materialBarCodeDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialBarCodeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialBarCodeDomainService.queryList(materialBarCodeDO);
+ }
+
+
+ /**
+ * 新增物料条码信息
+ */
+ public Boolean insert(MaterialBarCodeDO materialBarCodeDO) {
+
+ return materialBarCodeDomainService.insert(materialBarCodeDO);
+ }
+
+ /**
+ * 修改物料条码信息
+ */
+ public Boolean update(MaterialBarCodeDO materialBarCodeDO) {
+ return materialBarCodeDomainService.update(materialBarCodeDO);
+ }
+
+ /**
+ * 批量删除物料条码信息
+ */
+ public boolean delete(Long[] materialBarCodeIds) {
+ return materialBarCodeDomainService.delete(materialBarCodeIds);
+ }
+
+ /**
+ * 获取物料条码信息详细信息
+ */
+ public MaterialBarCodePO getInfo(Long materialBarCodeId)
+ {
+ return materialBarCodeDomainService.getInfo(materialBarCodeId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java
new file mode 100644
index 000000000..37aac16d1
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialBaseInfo/MaterialBaseInfoApplicationService.java
@@ -0,0 +1,135 @@
+package com.mhd.wms.application.service.materialBaseInfo;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialBarCode.service.MaterialBarCodeDomainService;
+import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
+import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO;
+import com.mhd.wms.domain.materialBaseInfo.service.MaterialBaseInfoDomainService;
+import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO;
+import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService;
+import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO;
+import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService;
+import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
+import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO;
+import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 物料基础信息ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialBaseInfoApplicationService {
+ @Autowired
+ private MaterialBaseInfoDomainService materialBaseInfoDomainService;
+ @Autowired
+ private MaterialGoodsRuleDomainService materialGoodsRuleDomainService;
+ @Autowired
+ private MaterialCommonDomainService materialCommonDomainService;
+ @Autowired
+ private MaterialWarehouseControlDomainService materialWarehouseControlDomainService;
+ @Autowired
+ private MaterialInventoryWarningDomainService materialInventoryWarningDomainService;
+ @Autowired
+ private MaterialBarCodeDomainService materialBarCodeDomainService;
+
+
+ /**
+ * 分页查询物料基础信息列表
+ */
+
+ public List queryList(MaterialBaseInfoDO materialBaseInfoDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialBaseInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialBaseInfoDomainService.queryList(materialBaseInfoDO);
+ }
+
+
+ /**
+ * 新增物料基础信息
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean insert(MaterialBaseInfoDO materialBaseInfoDO) {
+ Long materialBaseInfoId = materialBaseInfoDomainService.insert(materialBaseInfoDO);
+ materialBaseInfoDO.setMaterialBaseInfoId(materialBaseInfoId);
+ //商品规则
+ MaterialGoodsRuleDO materialGoodsRuleDO = materialBaseInfoDO.getMaterialGoodsRule();
+ materialGoodsRuleDO.setMaterialBaseInfoId(materialBaseInfoId);
+ materialGoodsRuleDomainService.insert(materialGoodsRuleDO);
+ //公共信息
+ MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon();
+ materialCommonDO.setMaterialBaseInfoId(materialBaseInfoId);
+ materialCommonDomainService.insert(materialCommonDO);
+ //仓库控制信息
+ MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl();
+ materialWarehouseControlDO.setMaterialBaseInfoId(materialBaseInfoId);
+ materialWarehouseControlDomainService.insert(materialWarehouseControlDO);
+ //库存预警
+ materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO);
+ //条码信息
+ materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO);
+ return true;
+ }
+
+ /**
+ * 修改物料基础信息
+ */
+ public Boolean update(MaterialBaseInfoDO materialBaseInfoDO) {
+ materialBaseInfoDomainService.update(materialBaseInfoDO);
+ //商品规则
+ MaterialGoodsRuleDO materialGoodsRuleDO = materialBaseInfoDO.getMaterialGoodsRule();
+ materialGoodsRuleDomainService.update(materialGoodsRuleDO);
+ //公共信息
+ MaterialCommonDO materialCommonDO = materialBaseInfoDO.getMaterialCommon();
+ materialCommonDomainService.update(materialCommonDO);
+ //仓库控制信息
+ MaterialWarehouseControlDO materialWarehouseControlDO = materialBaseInfoDO.getMaterialWarehouseControl();
+ materialWarehouseControlDomainService.update(materialWarehouseControlDO);
+ //库存预警
+ materialInventoryWarningDomainService.batchInsertOrUpdate(materialBaseInfoDO);
+ //条码信息
+ materialBarCodeDomainService.batchInsertOrUpdate(materialBaseInfoDO);
+ return true;
+ }
+
+ /**
+ * 批量删除物料基础信息
+ */
+ public boolean delete(Long[] materialBaseInfoIds) {
+ return materialBaseInfoDomainService.delete(materialBaseInfoIds);
+ }
+
+ /**
+ * 获取物料基础信息详细信息
+ */
+ public MaterialBaseInfoPO getInfo(Long materialBaseInfoId)
+ {
+ return materialBaseInfoDomainService.getInfo(materialBaseInfoId);
+ }
+
+ /**
+ * @description 无单收货单 根据物料信息获取明细
+ * @author ZhouGY
+ * @date 2024/7/16 22:18
+ * @param materialBaseInfoDO
+ * @return MaterialBaseInfoPO
+ */
+ public MaterialBaseInfoPO getInfoByNoOrderReceipt(MaterialBaseInfoDO materialBaseInfoDO){
+ return materialBaseInfoDomainService.getInfoByNoOrderReceipt(materialBaseInfoDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java
new file mode 100644
index 000000000..db45d91da
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialCommon/MaterialCommonApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.materialCommon;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialCommon.repository.po.MaterialCommonPO;
+import com.mhd.wms.domain.materialCommon.repository.todo.MaterialCommonDO;
+import com.mhd.wms.domain.materialCommon.service.MaterialCommonDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料公共信息ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialCommonApplicationService {
+ @Autowired
+ private MaterialCommonDomainService materialCommonDomainService;
+
+
+ /**
+ * 分页查询物料公共信息列表
+ */
+
+ public List queryList(MaterialCommonDO materialCommonDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialCommonDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialCommonDomainService.queryList(materialCommonDO);
+ }
+
+
+ /**
+ * 新增物料公共信息
+ */
+ public Boolean insert(MaterialCommonDO materialCommonDO) {
+
+ return materialCommonDomainService.insert(materialCommonDO);
+ }
+
+ /**
+ * 修改物料公共信息
+ */
+ public Boolean update(MaterialCommonDO materialCommonDO) {
+ return materialCommonDomainService.update(materialCommonDO);
+ }
+
+ /**
+ * 批量删除物料公共信息
+ */
+ public boolean delete(Long[] materialCommonIds) {
+ return materialCommonDomainService.delete(materialCommonIds);
+ }
+
+ /**
+ * 获取物料公共信息详细信息
+ */
+ public MaterialCommonPO getInfo(Long materialCommonId)
+ {
+ return materialCommonDomainService.getInfo(materialCommonId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java
new file mode 100644
index 000000000..9cad4cdc7
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialGoodsRule/MaterialGoodsRuleApplicationService.java
@@ -0,0 +1,81 @@
+package com.mhd.wms.application.service.materialGoodsRule;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO;
+import com.mhd.wms.domain.materialGoodsRule.repository.todo.MaterialGoodsRuleDO;
+import com.mhd.wms.domain.materialGoodsRule.service.MaterialGoodsRuleDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料商品规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialGoodsRuleApplicationService {
+ @Autowired
+ private MaterialGoodsRuleDomainService materialGoodsRuleDomainService;
+
+
+ /**
+ * 分页查询物料商品规则列表
+ */
+
+ public List queryList(MaterialGoodsRuleDO materialGoodsRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialGoodsRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialGoodsRuleDomainService.queryList(materialGoodsRuleDO);
+ }
+
+
+ /**
+ * 新增物料商品规则
+ */
+ public Boolean insert(MaterialGoodsRuleDO materialGoodsRuleDO) {
+
+ return materialGoodsRuleDomainService.insert(materialGoodsRuleDO);
+ }
+
+ /**
+ * 修改物料商品规则
+ */
+ public Boolean update(MaterialGoodsRuleDO materialGoodsRuleDO) {
+ return materialGoodsRuleDomainService.update(materialGoodsRuleDO);
+ }
+
+ /**
+ * 批量删除物料商品规则
+ */
+ public boolean delete(Long[] materialGoodsRuleIds) {
+ return materialGoodsRuleDomainService.delete(materialGoodsRuleIds);
+ }
+
+ /**
+ * 获取物料商品规则详细信息
+ */
+ public MaterialGoodsRulePO getInfo(Long materialGoodsRuleId)
+ {
+ return materialGoodsRuleDomainService.getInfo(materialGoodsRuleId);
+ }
+
+ /**
+ * 根据 物料基础信息id 获取物料商品规则详细信息
+ */
+ public MaterialGoodsRulePO getInfoByMaterialBaseInfoIds(Long materialBaseInfoId)
+ {
+ return materialGoodsRuleDomainService.getInfoByMaterialBaseInfoIds(materialBaseInfoId);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java
new file mode 100644
index 000000000..44d7ca251
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventory/MaterialInventoryApplicationService.java
@@ -0,0 +1,126 @@
+package com.mhd.wms.application.service.materialInventory;
+
+import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO;
+import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO;
+import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
+import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryQueryListDO;
+import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 物料库存ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-29
+ */
+@Service
+@Slf4j
+public class MaterialInventoryApplicationService {
+ @Autowired
+ private MaterialInventoryDomainService materialInventoryDomainService;
+
+
+ /**
+ * 分页查询物料库存列表
+ */
+
+ public List queryList(MaterialInventoryDO materialInventoryDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ materialInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return materialInventoryDomainService.queryList(materialInventoryDO);
+ }
+
+ public BigDecimal sumInventoryQuantity(MaterialInventoryDO materialInventoryDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ materialInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ List materialInventoryPOS = materialInventoryDomainService.queryList(materialInventoryDO);
+ if (CollectionUtils.isNotEmpty(materialInventoryPOS)){
+ return materialInventoryPOS.stream().map(MaterialInventoryPO::getAllocationQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+ }
+ return BigDecimal.ZERO;
+ }
+
+ /**
+ * 新增物料库存
+ */
+ public Boolean insert(MaterialInventoryDO materialInventoryDO) {
+
+ return materialInventoryDomainService.insert(materialInventoryDO);
+ }
+
+ /**
+ * 修改物料库存
+ */
+ public Boolean update(MaterialInventoryDO materialInventoryDO) {
+ return materialInventoryDomainService.update(materialInventoryDO);
+ }
+
+ /**
+ * 批量删除物料库存
+ */
+ public boolean delete(Long[] materialInventoryIds) {
+ return materialInventoryDomainService.delete(materialInventoryIds);
+ }
+
+ /**
+ * 获取物料库存详细信息
+ */
+ public MaterialInventoryPO getInfo(Long materialInventoryId)
+ {
+ return materialInventoryDomainService.getInfo(materialInventoryId);
+ }
+
+ /**
+ * @description 根据库位Id和物料基础信息Id 获取物料库存详细信息
+ * @author ZhouGY
+ * @date 2024/5/29 17:15
+ * @param storageLocationId
+ * @param materialBaseInfoId
+ * @return BigDecimal
+ */
+ public BigDecimal getInventoryByStorageLocationIdAndMaterialBaseInfoId(Long storageLocationId, Long materialBaseInfoId) {
+ return materialInventoryDomainService.getInventoryByStorageLocationIdAndMaterialBaseInfoId(storageLocationId, materialBaseInfoId);
+ }
+
+ /**
+ * @description:库存查询列表
+ * @param materialInventoryQueryListDO
+ * @return: java.util.List
+ * @author: lianzj
+ * @time: 2024-07-16 14:43:38
+ */
+ public List materialQueryList(MaterialInventoryQueryListDO materialInventoryQueryListDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialInventoryQueryListDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialInventoryDomainService.materialQueryList(materialInventoryQueryListDO);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java
new file mode 100644
index 000000000..4a91423fa
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialInventoryWarning/MaterialInventoryWarningApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.materialInventoryWarning;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialInventoryWarning.repository.po.MaterialInventoryWarningPO;
+import com.mhd.wms.domain.materialInventoryWarning.repository.todo.MaterialInventoryWarningDO;
+import com.mhd.wms.domain.materialInventoryWarning.service.MaterialInventoryWarningDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料库存预警ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialInventoryWarningApplicationService {
+ @Autowired
+ private MaterialInventoryWarningDomainService materialInventoryWarningDomainService;
+
+
+ /**
+ * 分页查询物料库存预警列表
+ */
+
+ public List queryList(MaterialInventoryWarningDO materialInventoryWarningDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialInventoryWarningDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialInventoryWarningDomainService.queryList(materialInventoryWarningDO);
+ }
+
+
+ /**
+ * 新增物料库存预警
+ */
+ public Boolean insert(MaterialInventoryWarningDO materialInventoryWarningDO) {
+
+ return materialInventoryWarningDomainService.insert(materialInventoryWarningDO);
+ }
+
+ /**
+ * 修改物料库存预警
+ */
+ public Boolean update(MaterialInventoryWarningDO materialInventoryWarningDO) {
+ return materialInventoryWarningDomainService.update(materialInventoryWarningDO);
+ }
+
+ /**
+ * 批量删除物料库存预警
+ */
+ public boolean delete(Long[] materialInventoryWarningIds) {
+ return materialInventoryWarningDomainService.delete(materialInventoryWarningIds);
+ }
+
+ /**
+ * 获取物料库存预警详细信息
+ */
+ public MaterialInventoryWarningPO getInfo(Long materialInventoryWarningId)
+ {
+ return materialInventoryWarningDomainService.getInfo(materialInventoryWarningId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java
new file mode 100644
index 000000000..ece095aac
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialMoreDetail/MaterialMoreDetailApplicationService.java
@@ -0,0 +1,73 @@
+package com.mhd.wms.application.service.materialMoreDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
+import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料更多属性明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class MaterialMoreDetailApplicationService {
+ @Autowired
+ private com.mhd.wms.domain.materialMoreDetail.service.MaterialMoreDetailDomainService MaterialMoreDetailDomainService;
+
+
+ /**
+ * 分页查询物料更多属性明细列表
+ */
+
+ public List queryList(MaterialMoreDetailDO materialMoreDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialMoreDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return MaterialMoreDetailDomainService.queryList(materialMoreDetailDO);
+ }
+
+
+ /**
+ * 新增物料更多属性明细
+ */
+ public Boolean insert(MaterialMoreDetailDO materialMoreDetailDO) {
+
+ return MaterialMoreDetailDomainService.insert(materialMoreDetailDO);
+ }
+
+ /**
+ * 修改物料更多属性明细
+ */
+ public Boolean update(MaterialMoreDetailDO materialMoreDetailDO) {
+ return MaterialMoreDetailDomainService.update(materialMoreDetailDO);
+ }
+
+ /**
+ * 批量删除物料更多属性明细
+ */
+ public boolean delete(Long[] materialMoreDetailIds) {
+ return MaterialMoreDetailDomainService.delete(materialMoreDetailIds);
+ }
+
+ /**
+ * 获取物料更多属性明细详细信息
+ */
+ public MaterialMoreDetailPO getInfo(Long materialMoreDetailId)
+ {
+ return MaterialMoreDetailDomainService.getInfo(materialMoreDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java
new file mode 100644
index 000000000..3956fbf93
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/materialWarehouseControl/MaterialWarehouseControlApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.materialWarehouseControl;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
+import com.mhd.wms.domain.materialWarehouseControl.repository.todo.MaterialWarehouseControlDO;
+import com.mhd.wms.domain.materialWarehouseControl.service.MaterialWarehouseControlDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 仓库控制信息ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class MaterialWarehouseControlApplicationService {
+ @Autowired
+ private MaterialWarehouseControlDomainService materialWarehouseControlDomainService;
+
+
+ /**
+ * 分页查询仓库控制信息列表
+ */
+
+ public List queryList(MaterialWarehouseControlDO materialWarehouseControlDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ materialWarehouseControlDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return materialWarehouseControlDomainService.queryList(materialWarehouseControlDO);
+ }
+
+
+ /**
+ * 新增仓库控制信息
+ */
+ public Boolean insert(MaterialWarehouseControlDO materialWarehouseControlDO) {
+
+ return materialWarehouseControlDomainService.insert(materialWarehouseControlDO);
+ }
+
+ /**
+ * 修改仓库控制信息
+ */
+ public Boolean update(MaterialWarehouseControlDO materialWarehouseControlDO) {
+ return materialWarehouseControlDomainService.update(materialWarehouseControlDO);
+ }
+
+ /**
+ * 批量删除仓库控制信息
+ */
+ public boolean delete(Long[] materialWarehouseControlIds) {
+ return materialWarehouseControlDomainService.delete(materialWarehouseControlIds);
+ }
+
+ /**
+ * 获取仓库控制信息详细信息
+ */
+ public MaterialWarehouseControlPO getInfo(Long materialWarehouseControlId)
+ {
+ return materialWarehouseControlDomainService.getInfo(materialWarehouseControlId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java
new file mode 100644
index 000000000..2b20afe8a
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManage/MobilizeManageApplicationService.java
@@ -0,0 +1,85 @@
+package com.mhd.wms.application.service.mobilizeManage;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.mobilizeManage.repository.po.MobilizeManagePO;
+import com.mhd.wms.domain.mobilizeManage.repository.todo.MobilizeManageDO;
+import com.mhd.wms.domain.mobilizeManage.service.MobilizeManageDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 调拨管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-08
+ */
+@Service
+@Slf4j
+public class MobilizeManageApplicationService {
+ @Autowired
+ private MobilizeManageDomainService mobilizeManageDomainService;
+
+
+ /**
+ * 分页查询调拨管理列表
+ */
+
+ public List queryList(MobilizeManageDO mobilizeManageDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ mobilizeManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ mobilizeManageDO.setOutWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return mobilizeManageDomainService.queryList(mobilizeManageDO);
+ }
+
+
+ /**
+ * 新增调拨管理
+ */
+ public Boolean insert(MobilizeManageDO mobilizeManageDO) {
+
+ return mobilizeManageDomainService.insert(mobilizeManageDO);
+ }
+
+ /**
+ * 修改调拨管理
+ */
+ public Boolean update(MobilizeManageDO mobilizeManageDO) throws Exception{
+ return mobilizeManageDomainService.update(mobilizeManageDO);
+ }
+
+ /**
+ * 批量删除调拨管理
+ */
+ public boolean delete(Long[] mobilizeManageIds) {
+ return mobilizeManageDomainService.delete(mobilizeManageIds);
+ }
+
+ /**
+ * 获取调拨管理详细信息
+ */
+ public MobilizeManagePO getInfo(Long mobilizeManageId)
+ {
+ return mobilizeManageDomainService.getInfo(mobilizeManageId);
+ }
+
+ /**
+ * 审核调拨单
+ */
+ public Boolean auditMobilizeManage(MobilizeManageDO mobilizeManageDO)
+ {
+ return mobilizeManageDomainService.auditMobilizeManage(mobilizeManageDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java
new file mode 100644
index 000000000..bb81cf97b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/mobilizeManageDetail/MobilizeManageDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.mobilizeManageDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.mobilizeManageDetail.repository.po.MobilizeManageDetailPO;
+import com.mhd.wms.domain.mobilizeManageDetail.repository.todo.MobilizeManageDetailDO;
+import com.mhd.wms.domain.mobilizeManageDetail.service.MobilizeManageDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 调拨管理详情ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-08
+ */
+@Service
+@Slf4j
+public class MobilizeManageDetailApplicationService {
+ @Autowired
+ private MobilizeManageDetailDomainService mobilizeManageDetailDomainService;
+
+
+ /**
+ * 分页查询调拨管理详情列表
+ */
+
+ public List queryList(MobilizeManageDetailDO mobilizeManageDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ mobilizeManageDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return mobilizeManageDetailDomainService.queryList(mobilizeManageDetailDO);
+ }
+
+
+ /**
+ * 新增调拨管理详情
+ */
+ public Boolean insert(MobilizeManageDetailDO mobilizeManageDetailDO) {
+
+ return mobilizeManageDetailDomainService.insert(mobilizeManageDetailDO);
+ }
+
+ /**
+ * 修改调拨管理详情
+ */
+ public Boolean update(MobilizeManageDetailDO mobilizeManageDetailDO) {
+ return mobilizeManageDetailDomainService.update(mobilizeManageDetailDO);
+ }
+
+ /**
+ * 批量删除调拨管理详情
+ */
+ public boolean delete(Long[] mobilizeMaterialDetails) {
+ return mobilizeManageDetailDomainService.delete(mobilizeMaterialDetails);
+ }
+
+ /**
+ * 获取调拨管理详情详细信息
+ */
+ public MobilizeManageDetailPO getInfo(Long mobilizeMaterialDetail)
+ {
+ return mobilizeManageDetailDomainService.getInfo(mobilizeMaterialDetail);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java
new file mode 100644
index 000000000..6a9dadc3f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeMaterialDetail/NoticeMaterialDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.noticeMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.noticeMaterialDetail.repository.po.NoticeMaterialDetailPO;
+import com.mhd.wms.domain.noticeMaterialDetail.repository.todo.NoticeMaterialDetailDO;
+import com.mhd.wms.domain.noticeMaterialDetail.service.NoticeMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-17
+ */
+@Service
+@Slf4j
+public class NoticeMaterialDetailApplicationService {
+ @Autowired
+ private NoticeMaterialDetailDomainService noticeMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询物料明细列表
+ */
+
+ public List queryList(NoticeMaterialDetailDO noticeMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ noticeMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return noticeMaterialDetailDomainService.queryList(noticeMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增物料明细
+ */
+ public Boolean insert(NoticeMaterialDetailDO noticeMaterialDetailDO) {
+
+ return noticeMaterialDetailDomainService.insert(noticeMaterialDetailDO);
+ }
+
+ /**
+ * 修改物料明细
+ */
+ public Boolean update(NoticeMaterialDetailDO noticeMaterialDetailDO) {
+ return noticeMaterialDetailDomainService.update(noticeMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除物料明细
+ */
+ public boolean delete(Long[] noticeMaterialDetailIds) {
+ return noticeMaterialDetailDomainService.delete(noticeMaterialDetailIds);
+ }
+
+ /**
+ * 获取物料明细详细信息
+ */
+ public NoticeMaterialDetailPO getInfo(Long noticeMaterialDetailId)
+ {
+ return noticeMaterialDetailDomainService.getInfo(noticeMaterialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java
new file mode 100644
index 000000000..2096ab5da
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/noticeOrder/NoticeOrderApplicationService.java
@@ -0,0 +1,222 @@
+package com.mhd.wms.application.service.noticeOrder;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.SysDictData;
+import com.mhd.system.api.domain.WarehouseFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.noticeOrder.repository.po.NoticeOrderPO;
+import com.mhd.wms.domain.noticeOrder.repository.todo.NoticeOrderDO;
+import com.mhd.wms.domain.noticeOrder.service.NoticeOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 入库通知单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class NoticeOrderApplicationService {
+ @Autowired
+ private NoticeOrderDomainService noticeOrderDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询入库通知单列表
+ */
+
+ public List queryList(NoticeOrderDO noticeOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ noticeOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ noticeOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return noticeOrderDomainService.queryList(noticeOrderDO);
+ }
+
+
+ /**
+ * 新增入库通知单
+ */
+ public Boolean insert(NoticeOrderDO noticeOrderDO) {
+ //设置仓库
+ setWarehouseInfo(noticeOrderDO);
+ //设置货主信息
+ shipperParam(noticeOrderDO);
+ //设置供应商信息
+ supplierParam(noticeOrderDO);
+ //设置数据字典键值
+ setDataDict(noticeOrderDO);
+ return noticeOrderDomainService.insert(noticeOrderDO);
+ }
+
+ /**
+ * 修改入库通知单
+ */
+ public Boolean update(NoticeOrderDO noticeOrderDO) {
+ return noticeOrderDomainService.update(noticeOrderDO);
+ }
+
+ /**
+ * 批量删除入库通知单
+ */
+ public boolean delete(Long[] noticeIds) {
+ return noticeOrderDomainService.delete(noticeIds);
+ }
+
+ /**
+ * 获取入库通知单详细信息
+ */
+ public NoticeOrderPO getInfo(Long noticeId)
+ {
+ return noticeOrderDomainService.getInfo(noticeId);
+ }
+
+ /**
+ * @description 作废入库通知单
+ * @author ZhouGY
+ * @date 2024/5/22 10:14
+ * @param noticeIds
+ * @return List
+ */
+ public Boolean nullifyByIds(Long[] noticeIds) {
+ return noticeOrderDomainService.nullifyByIds(noticeIds);
+ }
+
+
+ /**
+ * @description 生成入库单
+ * @author ZhouGY
+ * @date 2024/5/22 10:14
+ * @param noticeIds
+ * @return List
+ */
+ public Boolean generateStockInOrder(Long[] noticeIds) {
+ return noticeOrderDomainService.generateStockInOrder(noticeIds);
+ }
+
+ /**
+ * @description 生成出库单
+ * @author ZhouGY
+ * @date 2024/5/28 11:14
+ * @param noticeIds
+ * @return Boolean
+ */
+ public Boolean generateStockOutOrder(Long[] noticeIds) {
+ return noticeOrderDomainService.generateStockOutOrder(noticeIds);
+ }
+
+
+ /**
+ * @description 设置仓库信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param noticeOrderDO
+ */
+ private void setWarehouseInfo(NoticeOrderDO noticeOrderDO) {
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(noticeOrderDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ noticeOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ noticeOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+
+ /**
+ * @description 封装货主信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param noticeOrderDO
+ */
+ private void shipperParam(NoticeOrderDO noticeOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(noticeOrderDO.getShipperId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取货主信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ noticeOrderDO.setShipperCode(userPo.getUserMemberCode());
+ noticeOrderDO.setShipperName(userPo.getUserName());
+ }
+
+ /**
+ * @description 封装供应商信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param noticeOrderDO
+ */
+ private void supplierParam(NoticeOrderDO noticeOrderDO){
+ if (ObjectUtil.isNotNull(noticeOrderDO.getSupplierId())){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(noticeOrderDO.getSupplierId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取供应商信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ noticeOrderDO.setSupplierName(userPo.getUserName());
+ }
+ }
+
+ /**
+ * @description 设置数据字典键值
+ * @author ZhouGY
+ * @date 2024/4/7 14:33
+ * @param noticeOrderDO
+ */
+ private void setDataDict(NoticeOrderDO noticeOrderDO){
+ if (noticeOrderDO.getType() == 1){
+ //翻译单据类型
+ AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.DOCUMENT_TYPE.getCode());
+ if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) {
+ throw new ServiceException("单据类型数据字典不存在");
+ }
+ List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class);
+
+ SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), noticeOrderDO.getOrderTypeCode())).findAny().orElse(null);
+ if (null == documentTypeData) {
+ throw new ServiceException("单据类型【" + noticeOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员");
+ }
+ noticeOrderDO.setOrderTypeName(documentTypeData.getDictLabel());
+ }else {
+ //翻译单据类型
+ AjaxResult outDocumentTypeResult = systemServiceFeign.selectListByDictType(DictCode.OUT_DOCUMENT_TYPE.getCode());
+ if (!"200".equals(String.valueOf(outDocumentTypeResult.get("code")))) {
+ throw new ServiceException("单据类型数据字典不存在");
+ }
+ List outDocumentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(outDocumentTypeResult.get("data")), SysDictData.class);
+
+ SysDictData outDocumentTypeData = outDocumentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), noticeOrderDO.getOrderTypeCode())).findAny().orElse(null);
+ if (null == outDocumentTypeData) {
+ throw new ServiceException("单据类型【" + noticeOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员");
+ }
+ noticeOrderDO.setOrderTypeName(outDocumentTypeData.getDictLabel());
+ }
+
+
+
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java
new file mode 100644
index 000000000..37bca6d6d
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/outMaterialDetailSerialNumber/OutMaterialDetailSerialNumberApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.outMaterialDetailSerialNumber;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO;
+import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO;
+import com.mhd.wms.domain.outMaterialDetailSerialNumber.service.OutMaterialDetailSerialNumberDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 出库单物料明细序列号ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-03
+ */
+@Service
+@Slf4j
+public class OutMaterialDetailSerialNumberApplicationService {
+ @Autowired
+ private OutMaterialDetailSerialNumberDomainService outMaterialDetailSerialNumberDomainService;
+
+
+ /**
+ * 分页查询出库单物料明细序列号列表
+ */
+
+ public List queryList(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ outMaterialDetailSerialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return outMaterialDetailSerialNumberDomainService.queryList(outMaterialDetailSerialNumberDO);
+ }
+
+
+ /**
+ * 新增出库单物料明细序列号
+ */
+ public Boolean insert(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) {
+
+ return outMaterialDetailSerialNumberDomainService.insert(outMaterialDetailSerialNumberDO);
+ }
+
+ /**
+ * 修改出库单物料明细序列号
+ */
+ public Boolean update(OutMaterialDetailSerialNumberDO outMaterialDetailSerialNumberDO) {
+ return outMaterialDetailSerialNumberDomainService.update(outMaterialDetailSerialNumberDO);
+ }
+
+ /**
+ * 批量删除出库单物料明细序列号
+ */
+ public boolean delete(Long[] outMaterialDetailSerialNumberIds) {
+ return outMaterialDetailSerialNumberDomainService.delete(outMaterialDetailSerialNumberIds);
+ }
+
+ /**
+ * 获取出库单物料明细序列号详细信息
+ */
+ public OutMaterialDetailSerialNumberPO getInfo(Long outMaterialDetailSerialNumberId)
+ {
+ return outMaterialDetailSerialNumberDomainService.getInfo(outMaterialDetailSerialNumberId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java
new file mode 100644
index 000000000..fa7ea2f63
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/outOrderAbnormal/OutOrderAbnormalApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.outOrderAbnormal;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.outOrderAbnormal.repository.po.OutOrderAbnormalPO;
+import com.mhd.wms.domain.outOrderAbnormal.repository.todo.OutOrderAbnormalDO;
+import com.mhd.wms.domain.outOrderAbnormal.service.OutOrderAbnormalDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 出库异常单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class OutOrderAbnormalApplicationService {
+ @Autowired
+ private OutOrderAbnormalDomainService outOrderAbnormalDomainService;
+
+
+ /**
+ * 分页查询出库异常单列表
+ */
+
+ public List queryList(OutOrderAbnormalDO outOrderAbnormalDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ outOrderAbnormalDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return outOrderAbnormalDomainService.queryList(outOrderAbnormalDO);
+ }
+
+
+ /**
+ * 新增出库异常单
+ */
+ public Boolean insert(OutOrderAbnormalDO outOrderAbnormalDO) {
+
+ return outOrderAbnormalDomainService.insert(outOrderAbnormalDO);
+ }
+
+ /**
+ * 修改出库异常单
+ */
+ public Boolean update(OutOrderAbnormalDO outOrderAbnormalDO) {
+ return outOrderAbnormalDomainService.update(outOrderAbnormalDO);
+ }
+
+ /**
+ * 批量删除出库异常单
+ */
+ public boolean delete(Long[] outOrderAbnormalIds) {
+ return outOrderAbnormalDomainService.delete(outOrderAbnormalIds);
+ }
+
+ /**
+ * 获取出库异常单详细信息
+ */
+ public OutOrderAbnormalPO getInfo(Long outOrderAbnormalId)
+ {
+ return outOrderAbnormalDomainService.getInfo(outOrderAbnormalId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java
new file mode 100644
index 000000000..377caec36
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/overStock/OverStockApplicationService.java
@@ -0,0 +1,170 @@
+package com.mhd.wms.application.service.overStock;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO;
+import com.mhd.wms.domain.overStock.repository.po.OverStockPO;
+import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockDetailPO;
+import com.mhd.wms.domain.overStock.repository.po.QueryOrderOverStockPO;
+import com.mhd.wms.domain.overStock.repository.todo.ExecuteOverStockDO;
+import com.mhd.wms.domain.overStock.repository.todo.OverStockDO;
+import com.mhd.wms.domain.overStock.repository.todo.QueryOrderOverStockDO;
+import com.mhd.wms.domain.overStock.service.OverStockDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 越库管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-23
+ */
+@Service
+@Slf4j
+public class OverStockApplicationService {
+ @Autowired
+ private OverStockDomainService overStockDomainService;
+
+
+ /**
+ * 分页查询越库管理列表
+ */
+
+ public List queryList(OverStockDO overStockDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ overStockDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return overStockDomainService.queryList(overStockDO);
+ }
+
+
+ /**
+ * 新增越库管理
+ */
+ public Boolean insert(OverStockDO overStockDO) {
+
+ return overStockDomainService.insert(overStockDO);
+ }
+
+ /**
+ * 修改越库管理
+ */
+ public Boolean update(OverStockDO overStockDO) {
+ return overStockDomainService.update(overStockDO);
+ }
+
+ /**
+ * 批量删除越库管理
+ */
+ public boolean delete(Long[] overStockIds) {
+ return overStockDomainService.delete(overStockIds);
+ }
+
+ /**
+ * 获取越库管理详细信息
+ */
+ public OverStockPO getInfo(Long overStockId)
+ {
+ return overStockDomainService.getInfo(overStockId);
+ }
+
+
+ /**
+ * @description:查询单据越库列表
+ * @param queryOrderOverStockDO
+ * @return: java.util.List
+ * @author: lianzj
+ * @time: 2024-07-23 17:25:53
+ */
+ public List getByInAndOutOrder(QueryOrderOverStockDO queryOrderOverStockDO) {
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(SecurityUtils.getLoginUser().getUserid());
+ queryOrderOverStockDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ return overStockDomainService.getByInAndOutOrder(queryOrderOverStockDO);
+ }
+
+ /**
+ * @description 获取越库单据详情
+ * @author ZhouGY
+ * @date 2024/7/25 18:03
+ * @param queryOrderOverStockDO
+ * @return QueryOrderOverStockDetailPO
+ */
+ public QueryOrderOverStockDetailPO getByOrderDetail(QueryOrderOverStockDO queryOrderOverStockDO){
+ return overStockDomainService.getByOrderDetail(queryOrderOverStockDO);
+ }
+
+ /**
+ * @description:查询越库管理入库出库详情列表
+ * @param overStockDO
+ * @return: com.mhd.wms.domain.overStock.repository.po.OverStockInOrderOutOrderListPO
+ * @author: lianzj
+ * @time: 2024-07-26 10:03:03
+ */
+ public OverStockInOrderOutOrderListPO overStockInOrderOutOrderDetailList(OverStockDO overStockDO) {
+ return overStockDomainService.overStockInOrderOutOrderDetailList(overStockDO);
+ }
+
+ /**
+ * @description:执行越库
+ * @param executeOverStockDO
+ * @return: java.lang.String
+ * @author: lianzj
+ * @time: 2024-07-26 15:09:14
+ */
+ public boolean executeOverStock(ExecuteOverStockDO executeOverStockDO) {
+ return overStockDomainService.executeOverStock(executeOverStockDO);
+ }
+
+ /**
+ * @description:取消越库标记(分拨)
+ * @param executeOverStockDO
+ * @return: java.lang.String
+ * @author: lianzj
+ * @time: 2024-07-26 15:55:59
+ */
+ public boolean cancelOverStock(ExecuteOverStockDO executeOverStockDO) {
+ return overStockDomainService.cancelOverStock(executeOverStockDO);
+ }
+
+ /**
+ * @description:取消越库任务(直接)
+ * @param overStockIds
+ * @return: boolean
+ * @author: lianzj
+ * @time: 2024-07-27 11:25:15
+ */
+ public boolean cancelOverStockDirectByIds(Long[] overStockIds) {
+ return overStockDomainService.cancelOverStockDirectByIds(overStockIds);
+ }
+
+ /**
+ * @description:取消越库标记(分拨)
+ * @param overStockIds
+ * @return: boolean
+ * @author: lianzj
+ * @time: 2024-07-27 15:33:40
+ */
+ public boolean cancelOverStockSignByIds(Long[] overStockIds) {
+ return overStockDomainService.cancelOverStockSignByIds(overStockIds);
+ }
+
+ /**
+ * @description:执行越库
+ * @param overStockIds
+ * @return: boolean
+ * @author: lianzj
+ * @time: 2024-07-27 15:37:03
+ */
+ public boolean executeOverStockByIds(Long[] overStockIds) {
+ return overStockDomainService.executeOverStockByIds(overStockIds);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java
new file mode 100644
index 000000000..46b85242b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/pickingOrder/PickingOrderApplicationService.java
@@ -0,0 +1,250 @@
+package com.mhd.wms.application.service.pickingOrder;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.StorageLocationFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
+import com.mhd.wms.domain.pickingMaterialDetail.repository.todo.PickingMaterialDetailDO;
+import com.mhd.wms.domain.pickingMaterialDetail.service.PickingMaterialDetailDomainService;
+import com.mhd.wms.domain.pickingOrder.repository.po.PickingOrderPO;
+import com.mhd.wms.domain.pickingOrder.repository.todo.PickingOrderDO;
+import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 拣货单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class PickingOrderApplicationService {
+ @Autowired
+ private PickingOrderDomainService pickingOrderDomainService;
+ @Autowired
+ private PickingMaterialDetailDomainService pickingMaterialDetailDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询拣货单列表
+ */
+
+ public List queryList(PickingOrderDO pickingOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ pickingOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ pickingOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return pickingOrderDomainService.queryList(pickingOrderDO);
+ }
+
+
+ /**
+ * 新增拣货单
+ */
+ public Boolean insert(PickingOrderDO pickingOrderDO) {
+
+ return pickingOrderDomainService.insert(pickingOrderDO);
+ }
+
+ /**
+ * 修改拣货单
+ */
+ public Boolean update(PickingOrderDO pickingOrderDO) {
+ return pickingOrderDomainService.update(pickingOrderDO);
+ }
+
+ /**
+ * 批量删除拣货单
+ */
+ public boolean delete(Long[] pickingOrderIds) {
+ return pickingOrderDomainService.delete(pickingOrderIds);
+ }
+
+ /**
+ * 获取拣货单详细信息
+ */
+ public PickingOrderPO getInfoByIdAndType(Long pickingOrderId, Integer type) {
+ return pickingOrderDomainService.getInfoByIdAndType(pickingOrderId, type);
+ }
+
+ /**
+ * @description 整单下发
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param pickingOrderDO
+ * @return Boolean
+ */
+ public Boolean allDistribution(PickingOrderDO pickingOrderDO){
+ //设置作业人员信息
+ operatorsParam(pickingOrderDO);
+ //设置集货库位
+ setStorageLocation(pickingOrderDO);
+ return pickingOrderDomainService.allDistribution(pickingOrderDO);
+ }
+
+
+ /**
+ * @description 明细下发
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param pickingOrderDO
+ * @return Boolean
+ */
+ public Boolean detailDistribution(PickingOrderDO pickingOrderDO){
+ //设置作业人员信息
+ operatorsParam(pickingOrderDO);
+ //设置集货库位
+ setStorageLocation(pickingOrderDO);
+ return pickingOrderDomainService.detailDistribution(pickingOrderDO);
+ }
+ /**
+ * @description 拣货
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param pickingOrderDO
+ * @return Boolean
+ */
+ public Boolean picking(PickingOrderDO pickingOrderDO){
+ PickingOrderDO assemblePickingOrderDO = assembleParamByPickingOrder(pickingOrderDO);
+ return pickingOrderDomainService.picking(assemblePickingOrderDO);
+ }
+
+ /**
+ * @description 完成拣货
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param pickingOrderDO
+ * @return Boolean
+ */
+ public Boolean completePicking(PickingOrderDO pickingOrderDO){
+ return pickingOrderDomainService.completePicking(pickingOrderDO);
+ }
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param pickingOrderDO
+ */
+ private void operatorsParam(PickingOrderDO pickingOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(pickingOrderDO.getOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ pickingOrderDO.setOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 设置集货库位信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param pickingOrderDO
+ */
+ private void setStorageLocation(PickingOrderDO pickingOrderDO) {
+ AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(pickingOrderDO.getStorageLocationId());
+ if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){
+ throw new ServiceException("获取拣货库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class);
+ pickingOrderDO.setWarehouseId(storageLocationFeignPO.getWarehouseId());
+ pickingOrderDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode());
+ pickingOrderDO.setWarehouseName(storageLocationFeignPO.getWarehouseName());
+ pickingOrderDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId());
+ pickingOrderDO.setStorageCode(storageLocationFeignPO.getStorageCode());
+ pickingOrderDO.setStorageName(storageLocationFeignPO.getStorageName());
+ pickingOrderDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId());
+ pickingOrderDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ pickingOrderDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+ }
+
+
+ /**
+ * @description 拣货 装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param pickingOrderDO
+ * @return Boolean
+ */
+ private PickingOrderDO assembleParamByPickingOrder(PickingOrderDO pickingOrderDO) {
+ PickingOrderPO pickingOrderPO = pickingOrderDomainService.getInfoByIdAndType(pickingOrderDO.getPickingOrderId(), pickingOrderDO.getType());
+ if (pickingOrderPO == null){
+ throw new ServiceException("拣货单不存在");
+ }
+ if (pickingOrderPO.getStatus() > 2) {
+ throw new ServiceException("拣货单已完成拣货");
+ }
+ if (CollectionUtil.isEmpty(pickingOrderDO.getMaterialDetailList())) {
+ throw new ServiceException("拣货单物料明细不能为空");
+ }
+ PickingOrderDO returnPickingOrderDO = new PickingOrderDO();
+ returnPickingOrderDO.setUpdateTime(pickingOrderDO.getUpdateTime());
+ returnPickingOrderDO.setPickingOrderId(pickingOrderPO.getPickingOrderId());
+ returnPickingOrderDO.setType(pickingOrderPO.getType());
+ returnPickingOrderDO.setOrganizationId(pickingOrderPO.getOrganizationId());
+ returnPickingOrderDO.setOrganizationName(pickingOrderPO.getOrganizationName());
+ returnPickingOrderDO.setTopOrganizationId(pickingOrderPO.getTopOrganizationId());
+ returnPickingOrderDO.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber());
+ PickingMaterialDetailDO pickingMaterialDetailDOByQuery = new PickingMaterialDetailDO();
+ pickingMaterialDetailDOByQuery.setPickingOrderNumber(pickingOrderPO.getPickingOrderNumber());
+ List pickingMaterialDetailPODbList = pickingMaterialDetailDomainService.queryList(pickingMaterialDetailDOByQuery);
+ Map pickingMaterialDetailDbMap = pickingMaterialDetailPODbList.stream().collect(Collectors.toMap(PickingMaterialDetailPO::getMaterialDetailId, Function.identity()));
+ List returnPickingMaterialDetailDOList = new ArrayList<>();
+ for (PickingMaterialDetailDO pickingMaterialDetailDO : pickingOrderDO.getMaterialDetailList()){
+ //设置物料更多属性信息
+ PickingMaterialDetailPO pickingMaterialDetailPO = pickingMaterialDetailDbMap.get(pickingMaterialDetailDO.getMaterialDetailId());
+ if (pickingMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (ObjectUtil.isNull(pickingMaterialDetailDO.getActualQuantity()) || pickingMaterialDetailDO.getActualQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行拣货直接跳过
+ continue;
+ }
+ PickingMaterialDetailDO returnPickingMaterialDetailDO = new PickingMaterialDetailDO();
+ BeanUtils.copyProperties(pickingMaterialDetailPO, returnPickingMaterialDetailDO);
+ returnPickingMaterialDetailDO.setActualQuantity(pickingMaterialDetailDO.getActualQuantity());
+ //是否开启了序列号管理
+ if (pickingMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(pickingMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + pickingMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnPickingMaterialDetailDO.setMaterialDetailSerialNumberList(pickingMaterialDetailDO.getMaterialDetailSerialNumberList());
+ returnPickingMaterialDetailDOList.add(returnPickingMaterialDetailDO);
+ }
+ returnPickingOrderDO.setMaterialDetailList(returnPickingMaterialDetailDOList);
+ return returnPickingOrderDO;
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java
new file mode 100644
index 000000000..1c34ae1f8
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRule/PutawayRuleApplicationService.java
@@ -0,0 +1,260 @@
+package com.mhd.wms.application.service.putawayRule;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.json.JSONUtil;
+import com.github.pagehelper.util.StringUtil;
+import com.mhd.common.core.domain.po.SysDictDataVo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.enums.MasterRuleEnum;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.putawayRule.entity.PutawayRule;
+import com.mhd.wms.domain.putawayRule.repository.po.PutawayRulePO;
+import com.mhd.wms.domain.putawayRule.repository.todo.PutawayRuleDO;
+import com.mhd.wms.domain.putawayRule.service.PutawayRuleDomainService;
+import com.mhd.wms.domain.putawayRuleDetail.entity.PutawayRuleDetail;
+import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO;
+import com.mhd.wms.domain.putawayRuleDetail.service.PutawayRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 上架规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-19
+ */
+@Service
+@Slf4j
+public class PutawayRuleApplicationService {
+ @Autowired
+ private PutawayRuleDomainService putawayRuleDomainService;
+
+ @Resource
+ private PutawayRuleDetailDomainService putawayRuleDetailDomainService;
+
+ @Resource
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询上架规则列表
+ */
+
+ public List queryList(PutawayRuleDO putawayRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ putawayRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return putawayRuleDomainService.queryList(putawayRuleDO);
+ }
+
+
+ /**
+ * 新增上架规则
+ */
+ @Transactional
+ public Boolean insert(PutawayRuleDO putawayRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ putawayRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ PutawayRule putawayRule= putawayRuleDomainService.save(putawayRuleDO);
+ //删除当前上架规则明细
+ putawayRuleDetailDomainService.deleteByPutawayRuleId(putawayRule.getId());
+
+ List putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS();
+
+ List putawayRuleDetails = putawayRuleDetailDOS.stream().map(putawayRuleDetailDO -> {
+ PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail();
+ putawayRuleDetailDO.setMainRule(MasterRuleEnum.ENUM_VALUE1.getDesById(putawayRuleDetailDO.getMainRuleId()));
+ //库位空间数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getStorageSpaceLimitTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.LOCATION_SPACE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位空间)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getStorageSpaceLimitTypeId());
+ String storageSpaceLimitType = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位空间未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setStorageSpaceLimitType(storageSpaceLimitType);
+ }
+ //库位空间数据字典 end
+
+
+ //库位分类数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位分类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationTypeId());
+ String locationType = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位分类未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setLocationType(locationType);
+ }
+ //库位分类数据字典 end
+ //库位种类数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationKindId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位种类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationKindId());
+ String locationKind = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位种类未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setLocationKind(locationKind);
+ }
+ //库位种类数据字典 end
+ BeanUtils.copyProperties(putawayRuleDetailDO, putawayRuleDetail);
+ putawayRuleDetail.setPutawayRuleId(putawayRule.getId());
+ return putawayRuleDetail;
+
+ }).collect(Collectors.toList());
+
+ return putawayRuleDetailDomainService.saveBatch(putawayRuleDetails);
+ }
+
+ /**
+ * 修改上架规则
+ */
+ public Boolean update(PutawayRuleDO putawayRuleDO) {
+ putawayRuleDomainService.update(putawayRuleDO);
+ //删除当前上架规则明细
+ putawayRuleDetailDomainService.deleteByPutawayRuleId(putawayRuleDO.getId());
+
+ List putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS();
+
+ List putawayRuleDetails = putawayRuleDetailDOS.stream().map(putawayRuleDetailDO -> {
+ PutawayRuleDetail putawayRuleDetail = new PutawayRuleDetail();
+
+ putawayRuleDetailDO.setMainRule(MasterRuleEnum.ENUM_VALUE1.getDesById(putawayRuleDetailDO.getMainRuleId()));
+ //库位空间数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getStorageSpaceLimitTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.LOCATION_SPACE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位空间)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getStorageSpaceLimitTypeId());
+ String storageSpaceLimitType = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位空间未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setStorageSpaceLimitType(storageSpaceLimitType);
+ }
+ //库位空间数据字典 end
+
+
+ //库位分类数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_CLASSIFICATION.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位分类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationTypeId());
+ String locationType = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位分类未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setLocationType(locationType);
+ }
+ //库位分类数据字典 end
+ //库位种类数据字典 start
+ if(StringUtil.isNotEmpty(putawayRuleDetailDO.getLocationKindId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.STORAGE_LOCATION_TYPE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(库位种类)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ List strings1 = Convert.toList(String.class, putawayRuleDetailDO.getLocationKindId());
+ String locationKind = strings1.stream().map(s -> {
+ if (!transportTypeDictMap.containsKey(s)) {
+ throw new ServiceException("库位种类未找到");
+ }
+ return transportTypeDictMap.get(s);
+ }).collect(Collectors.joining(","));
+
+ putawayRuleDetailDO.setLocationKind(locationKind);
+ }
+ //库位种类数据字典 end
+ BeanUtils.copyProperties(putawayRuleDetailDO, putawayRuleDetail);
+ putawayRuleDetail.setPutawayRuleId(putawayRuleDO.getId());
+ return putawayRuleDetail;
+
+ }).collect(Collectors.toList());
+
+ return putawayRuleDetailDomainService.saveBatch(putawayRuleDetails);
+ }
+
+ /**
+ * 批量删除上架规则
+ */
+ @Transactional
+ public boolean delete(Long[] ids) {
+ putawayRuleDomainService.delete(ids);
+ //
+ List putawayRleDetailIds = putawayRuleDetailDomainService.selectListByPutawayRuleId(ids);
+
+
+ return putawayRuleDetailDomainService.delete(putawayRleDetailIds.toArray(new Long[putawayRleDetailIds.size()]));
+ }
+
+ /**
+ * 获取上架规则详细信息
+ */
+ public PutawayRulePO getInfo(Long id)
+ {
+ return putawayRuleDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java
new file mode 100644
index 000000000..3409c1a5c
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/putawayRuleDetail/PutawayRuleDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.putawayRuleDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.putawayRuleDetail.repository.po.PutawayRuleDetailPO;
+import com.mhd.wms.domain.putawayRuleDetail.repository.todo.PutawayRuleDetailDO;
+import com.mhd.wms.domain.putawayRuleDetail.service.PutawayRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 上架规则明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+@Service
+@Slf4j
+public class PutawayRuleDetailApplicationService {
+ @Autowired
+ private PutawayRuleDetailDomainService putawayRuleDetailDomainService;
+
+
+ /**
+ * 分页查询上架规则明细列表
+ */
+
+ public List queryList(PutawayRuleDetailDO putawayRuleDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ putawayRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return putawayRuleDetailDomainService.queryList(putawayRuleDetailDO);
+ }
+
+
+ /**
+ * 新增上架规则明细
+ */
+ public Boolean insert(PutawayRuleDetailDO putawayRuleDetailDO) {
+
+ return putawayRuleDetailDomainService.insert(putawayRuleDetailDO);
+ }
+
+ /**
+ * 修改上架规则明细
+ */
+ public Boolean update(PutawayRuleDetailDO putawayRuleDetailDO) {
+ return putawayRuleDetailDomainService.update(putawayRuleDetailDO);
+ }
+
+ /**
+ * 批量删除上架规则明细
+ */
+ public boolean delete(Long[] ids) {
+ return putawayRuleDetailDomainService.delete(ids);
+ }
+
+ /**
+ * 获取上架规则明细详细信息
+ */
+ public PutawayRuleDetailPO getInfo(Long id)
+ {
+ return putawayRuleDetailDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java
new file mode 100644
index 000000000..2a2653226
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRule/QcRuleApplicationService.java
@@ -0,0 +1,141 @@
+package com.mhd.wms.application.service.qcRule;
+
+import cn.hutool.json.JSONUtil;
+import com.github.pagehelper.util.StringUtil;
+import com.mhd.common.core.domain.po.SysDictDataVo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.qcRule.repository.po.QcRulePO;
+import com.mhd.wms.domain.qcRule.repository.todo.QcRuleDO;
+import com.mhd.wms.domain.qcRule.service.QcRuleDomainService;
+import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO;
+import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO;
+import com.mhd.wms.domain.qcRuleDetail.service.QcRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 质检规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class QcRuleApplicationService {
+ @Autowired
+ private QcRuleDomainService qcRuleDomainService;
+
+ @Resource
+ private QcRuleDetailDomainService qcRuleDetailDomainService;
+
+ @Resource
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询质检规则列表
+ */
+
+ public List queryList(QcRuleDO qcRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ qcRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return qcRuleDomainService.queryList(qcRuleDO);
+ }
+
+
+ /**
+ * 新增质检规则
+ */
+ @Transactional
+ public Boolean insert(QcRuleDO qcRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ qcRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+
+ Long id = qcRuleDomainService.insertToId(qcRuleDO);
+ //根据ID查询质检规则明细
+ Long[] ids = qcRuleDetailDomainService.selectIdsByQcRuleId(id);
+ //删除质检规则明细ID
+ qcRuleDetailDomainService.delete(ids);
+ List qcRuleDetailDOS = qcRuleDO.getQcRuleDetailDOS();
+ qcRuleDetailDOS.stream().forEach(qcRuleDetailDO -> {
+ if(StringUtil.isNotEmpty(qcRuleDetailDO.getNumTypeId())){
+ AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.NUM_TYPE.getCode());
+ if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
+ throw new ServiceException("字典信息(数量类型)获取失败");
+ }
+ List transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
+ Map transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
+ if (!transportTypeDictMap.containsKey(qcRuleDetailDO.getNumTypeId())) {
+ throw new ServiceException("数量类型未找到");
+ }
+ qcRuleDetailDO.setNumType(transportTypeDictMap.get(qcRuleDetailDO.getNumTypeId()));
+ }
+ qcRuleDetailDO.setQcRuleId(id);
+ });
+ return qcRuleDetailDomainService.batchInsert(qcRuleDetailDOS);
+ }
+
+ /**
+ * 修改质检规则
+ */
+ @Transactional
+ public Boolean update(QcRuleDO qcRuleDO) {
+ qcRuleDomainService.update(qcRuleDO);
+ //根据ID查询质检规则明细
+ Long[] ids = qcRuleDetailDomainService.selectIdsByQcRuleId(qcRuleDO.getId());
+ //删除质检规则明细ID
+ qcRuleDetailDomainService.delete(ids);
+ List qcRuleDetailDOS = qcRuleDO.getQcRuleDetailDOS();
+ qcRuleDetailDOS.stream().forEach(qcRuleDetailDO -> {
+ qcRuleDetailDO.setQcRuleId(qcRuleDO.getId());
+ });
+ return qcRuleDetailDomainService.batchInsert(qcRuleDetailDOS);
+
+ }
+
+ /**
+ * 批量删除质检规则
+ */
+ @Transactional
+ public boolean delete(Long[] ids) {
+ qcRuleDomainService.delete(ids);
+ //根据质检规则ID集合查询所有的质检规则明细
+ Long[] qcRuleDetailIds = qcRuleDetailDomainService.selectListByQcRuleIds(ids);
+ return qcRuleDetailDomainService.delete(qcRuleDetailIds);
+ }
+
+ /**
+ * 获取质检规则详细信息
+ */
+ public QcRulePO getInfo(Long id)
+ {
+ QcRulePO qcRulePO = qcRuleDomainService.getInfo(id);
+ List qcRuleDetailPOS = qcRuleDetailDomainService.selectListByQcRuleId(id);
+ qcRulePO.setQcRuleDetailList(qcRuleDetailPOS);
+ return qcRulePO;
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java
new file mode 100644
index 000000000..324feafc3
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qcRuleDetail/QcRuleDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.qcRuleDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.qcRuleDetail.repository.po.QcRuleDetailPO;
+import com.mhd.wms.domain.qcRuleDetail.repository.todo.QcRuleDetailDO;
+import com.mhd.wms.domain.qcRuleDetail.service.QcRuleDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 质检规则明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-22
+ */
+@Service
+@Slf4j
+public class QcRuleDetailApplicationService {
+ @Autowired
+ private QcRuleDetailDomainService qcRuleDetailDomainService;
+
+
+ /**
+ * 分页查询质检规则明细列表
+ */
+
+ public List queryList(QcRuleDetailDO qcRuleDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ qcRuleDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return qcRuleDetailDomainService.queryList(qcRuleDetailDO);
+ }
+
+
+ /**
+ * 新增质检规则明细
+ */
+ public Boolean insert(QcRuleDetailDO qcRuleDetailDO) {
+
+ return qcRuleDetailDomainService.insert(qcRuleDetailDO);
+ }
+
+ /**
+ * 修改质检规则明细
+ */
+ public Boolean update(QcRuleDetailDO qcRuleDetailDO) {
+ return qcRuleDetailDomainService.update(qcRuleDetailDO);
+ }
+
+ /**
+ * 批量删除质检规则明细
+ */
+ public boolean delete(Long[] ids) {
+ return qcRuleDetailDomainService.delete(ids);
+ }
+
+ /**
+ * 获取质检规则明细详细信息
+ */
+ public QcRuleDetailPO getInfo(Long id)
+ {
+ return qcRuleDetailDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java
new file mode 100644
index 000000000..e9ea15b6f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/qualityInspection/QualityInspectionApplicationService.java
@@ -0,0 +1,78 @@
+package com.mhd.wms.application.service.qualityInspection;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.qualityInspection.repository.po.QualityInspectionPO;
+import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO;
+import com.mhd.wms.domain.qualityInspection.service.QualityInspectionDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 质检管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-25
+ */
+@Service
+@Slf4j
+public class QualityInspectionApplicationService {
+ @Autowired
+ private QualityInspectionDomainService qualityInspectionDomainService;
+
+
+ /**
+ * 分页查询质检管理列表
+ */
+
+ public List queryList(QualityInspectionDO qualityInspectionDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ qualityInspectionDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ qualityInspectionDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return qualityInspectionDomainService.queryList(qualityInspectionDO);
+ }
+
+
+ /**
+ * 新增质检管理
+ */
+ public Boolean insert(QualityInspectionDO qualityInspectionDO) {
+
+ return qualityInspectionDomainService.insert(qualityInspectionDO);
+ }
+
+ /**
+ * 修改质检管理
+ */
+ public Boolean update(QualityInspectionDO qualityInspectionDO) {
+ return qualityInspectionDomainService.update(qualityInspectionDO);
+ }
+
+ /**
+ * 批量删除质检管理
+ */
+ public boolean delete(Long[] qualityInspectionIds) {
+ return qualityInspectionDomainService.delete(qualityInspectionIds);
+ }
+
+ /**
+ * 获取质检管理详细信息
+ */
+ public QualityInspectionPO getInfo(Long qualityInspectionId)
+ {
+ return qualityInspectionDomainService.getInfo(qualityInspectionId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java
new file mode 100644
index 000000000..c157e39d5
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/receiptMaterialDetail/ReceiptMaterialDetailApplicationService.java
@@ -0,0 +1,73 @@
+package com.mhd.wms.application.service.receiptMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
+import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
+import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-17
+ */
+@Service
+@Slf4j
+public class ReceiptMaterialDetailApplicationService {
+ @Autowired
+ private ReceiptMaterialDetailDomainService receiptMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询物料明细列表
+ */
+
+ public List queryList(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ receiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDO);
+ }
+
+ /**
+ * 新增物料明细
+ */
+ public Boolean insert(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
+
+ return receiptMaterialDetailDomainService.insert(receiptMaterialDetailDO);
+ }
+
+ /**
+ * 修改物料明细
+ */
+ public Boolean update(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
+ return receiptMaterialDetailDomainService.update(receiptMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除物料明细
+ */
+ public boolean delete(Long[] materialDetailIds) {
+ return receiptMaterialDetailDomainService.delete(materialDetailIds);
+ }
+
+ /**
+ * 获取物料明细详细信息
+ */
+ public ReceiptMaterialDetailPO getInfo(Long materialDetailId)
+ {
+ return receiptMaterialDetailDomainService.getInfo(materialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java
new file mode 100644
index 000000000..fb974610c
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/replenishmentNotice/ReplenishmentNoticeApplicationService.java
@@ -0,0 +1,78 @@
+package com.mhd.wms.application.service.replenishmentNotice;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.replenishmentNotice.repository.po.ReplenishmentNoticePO;
+import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO;
+import com.mhd.wms.domain.replenishmentNotice.service.ReplenishmentNoticeDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 补货通知单ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-11
+ */
+@Service
+@Slf4j
+public class ReplenishmentNoticeApplicationService {
+ @Autowired
+ private ReplenishmentNoticeDomainService replenishmentNoticeDomainService;
+
+
+ /**
+ * 分页查询补货通知单列表
+ */
+
+ public List queryList(ReplenishmentNoticeDO replenishmentNoticeDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ replenishmentNoticeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ replenishmentNoticeDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return replenishmentNoticeDomainService.queryList(replenishmentNoticeDO);
+ }
+
+
+ /**
+ * 新增补货通知单
+ */
+ public Boolean insert(ReplenishmentNoticeDO replenishmentNoticeDO) {
+
+ return replenishmentNoticeDomainService.insert(replenishmentNoticeDO);
+ }
+
+ /**
+ * 修改补货通知单
+ */
+ public Boolean update(ReplenishmentNoticeDO replenishmentNoticeDO) {
+ return replenishmentNoticeDomainService.update(replenishmentNoticeDO);
+ }
+
+ /**
+ * 批量删除补货通知单
+ */
+ public boolean delete(Long[] replenishmentNoticeIds) {
+ return replenishmentNoticeDomainService.delete(replenishmentNoticeIds);
+ }
+
+ /**
+ * 获取补货通知单详细信息
+ */
+ public ReplenishmentNoticePO getInfo(Long replenishmentNoticeId)
+ {
+ return replenishmentNoticeDomainService.getInfo(replenishmentNoticeId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java
new file mode 100644
index 000000000..8d86fdb69
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/serialNumber/SerialNumberApplicationService.java
@@ -0,0 +1,93 @@
+package com.mhd.wms.application.service.serialNumber;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.serialNumber.repository.po.SerialNumberPO;
+import com.mhd.wms.domain.serialNumber.repository.todo.SerialNumberDO;
+import com.mhd.wms.domain.serialNumber.service.SerialNumberDomainService;
+import com.mhd.wms.interfaces.dto.serialNumber.SerialNumberDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 序列号ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-19
+ */
+@Service
+@Slf4j
+public class SerialNumberApplicationService {
+ @Autowired
+ private SerialNumberDomainService serialNumberDomainService;
+
+
+ /**
+ * 分页查询序列号列表
+ */
+
+ public List queryList(SerialNumberDO serialNumberDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ serialNumberDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ serialNumberDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return serialNumberDomainService.queryList(serialNumberDO);
+ }
+
+
+ /**
+ * 新增序列号
+ */
+ public Boolean insert(SerialNumberDO serialNumberDO) {
+
+ return serialNumberDomainService.insert(serialNumberDO);
+ }
+
+ /**
+ * 修改序列号
+ */
+ public Boolean update(SerialNumberDO serialNumberDO) {
+ return serialNumberDomainService.update(serialNumberDO);
+ }
+
+ /**
+ * 批量删除序列号
+ */
+ public boolean delete(Long[] serialNumberIds) {
+ return serialNumberDomainService.delete(serialNumberIds);
+ }
+
+ /**
+ * 获取序列号详细信息
+ */
+ public SerialNumberPO getInfo(Long serialNumberId)
+ {
+ return serialNumberDomainService.getInfo(serialNumberId);
+ }
+
+ public Boolean validationForPicking(SerialNumberDTO serialNumberDTO) {
+ SerialNumberDO serialNumberDO = new SerialNumberDO();
+ serialNumberDO.setSerialNumber(serialNumberDTO.getSerialNumber());
+ serialNumberDO.setMaterialBaseInfoId(serialNumberDTO.getMaterialBaseInfoId());
+ serialNumberDO.setStatus(1);
+ List serialNumberPos = serialNumberDomainService.queryList(serialNumberDO);
+ if (CollectionUtil.isEmpty(serialNumberPos)){
+ throw new RuntimeException("序列号不存在");
+ }else if (serialNumberPos.size() >1) {
+ throw new RuntimeException("数据错误:系统内存在多个相同序列号");
+ }
+ return true;
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java
new file mode 100644
index 000000000..1167944eb
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shelfMaterialDetail/ShelfMaterialDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.shelfMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
+import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
+import com.mhd.wms.domain.shelfMaterialDetail.service.ShelfMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-17
+ */
+@Service
+@Slf4j
+public class ShelfMaterialDetailApplicationService {
+ @Autowired
+ private ShelfMaterialDetailDomainService shelfMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询物料明细列表
+ */
+
+ public List queryList(ShelfMaterialDetailDO shelfMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ shelfMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return shelfMaterialDetailDomainService.queryList(shelfMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增物料明细
+ */
+ public Boolean insert(ShelfMaterialDetailDO shelfMaterialDetailDO) {
+
+ return shelfMaterialDetailDomainService.insert(shelfMaterialDetailDO);
+ }
+
+ /**
+ * 修改物料明细
+ */
+ public Boolean update(ShelfMaterialDetailDO shelfMaterialDetailDO) {
+ return shelfMaterialDetailDomainService.update(shelfMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除物料明细
+ */
+ public boolean delete(Long[] shelfMaterialDetailIds) {
+ return shelfMaterialDetailDomainService.delete(shelfMaterialDetailIds);
+ }
+
+ /**
+ * 获取物料明细详细信息
+ */
+ public ShelfMaterialDetailPO getInfo(Long shelfMaterialDetailId)
+ {
+ return shelfMaterialDetailDomainService.getInfo(shelfMaterialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java
new file mode 100644
index 000000000..6c573a755
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftManage/ShiftManageApplicationService.java
@@ -0,0 +1,436 @@
+package com.mhd.wms.application.service.shiftManage;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.constant.SnowFlakeConstants;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.IgnoreNullUtil;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.utils.uuid.IdGenerator;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.ContainerFeignPO;
+import com.mhd.system.api.domain.StorageLocationFeignPO;
+import com.mhd.system.api.domain.WarehouseFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.shiftManage.repository.po.ShiftManagePO;
+import com.mhd.wms.domain.shiftManage.repository.todo.ContainerShiftDO;
+import com.mhd.wms.domain.shiftManage.repository.todo.ShiftManageDO;
+import com.mhd.wms.domain.shiftManage.service.ShiftManageDomainService;
+import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO;
+import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO;
+import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO;
+import com.mhd.wms.domain.shiftMaterialDetail.service.ShiftMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 移位管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-02
+ */
+@Service
+@Slf4j
+public class ShiftManageApplicationService {
+ @Autowired
+ private ShiftManageDomainService shiftManageDomainService;
+ @Autowired
+ private ShiftMaterialDetailDomainService shiftMaterialDetailDomainService;
+ @Autowired
+ private IdGenerator idGenerator;
+
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+ /**
+ * 分页查询移位管理列表
+ */
+
+ public List queryList(ShiftManageDO shiftManageDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ shiftManageDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ shiftManageDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return shiftManageDomainService.queryList(shiftManageDO);
+ }
+
+ /**
+ * @description app 获取移位详情
+ * @author ZhouGY
+ * @date 2024/7/30 14:20
+ * @param ShiftManageId
+ * @return ShiftManagePO
+ */
+ public ShiftManagePO getInfoByApp(Long ShiftManageId) {
+ return shiftManageDomainService.getInfoByApp(ShiftManageId);
+ }
+
+
+ /**
+ * 新增移位管理
+ */
+ public Boolean insert(ShiftManageDO shiftManageDO) {
+ //设置仓库
+ setWarehouseInfo(shiftManageDO);
+ return shiftManageDomainService.insert(shiftManageDO);
+ }
+
+ /**
+ * 修改移位管理
+ */
+ public Boolean update(ShiftManageDO shiftManageDO) {
+ return shiftManageDomainService.update(shiftManageDO);
+ }
+
+ /**
+ * 批量删除移位管理
+ */
+ public boolean delete(Long[] shiftManageIds) {
+ return shiftManageDomainService.delete(shiftManageIds);
+ }
+
+ /**
+ * 获取移位管理详细信息
+ */
+ public ShiftManagePO getInfo(Long shiftManageId)
+ {
+ return shiftManageDomainService.getInfo(shiftManageId);
+ }
+
+ /**
+ * @description 审核
+ * @author ZhouGY
+ * @date 2024/7/30 14:47
+ * @param shiftManageDO
+ * @return Boolean
+ */
+ public Boolean auditState(ShiftManageDO shiftManageDO){
+ return shiftManageDomainService.auditState(shiftManageDO);
+ }
+
+ /**
+ * @description 任务下发
+ * @author ZhouGY
+ * @date 2024/7/30 14:47
+ * @param shiftManageDO
+ * @return Boolean
+ */
+ public Boolean taskDistribution(ShiftManageDO shiftManageDO){
+ // 设置作业员信息
+ operatorsParam(shiftManageDO);
+ return shiftManageDomainService.taskDistribution(shiftManageDO);
+ }
+
+ /**
+ * 物料移位
+ */
+ public Boolean appMoveFromShiftManage(ShiftManageDO shiftManageDO){
+ List shiftMaterialDetailDOList = shiftManageDO.getShiftMaterialDetailList();
+ shiftMaterialDetailDOList.forEach(shiftMaterialDetailDO -> {
+ List shiftMaterialDetailDOChildrenList1 = shiftMaterialDetailDO.getChildren();
+ ShiftMaterialDetailDO shiftMaterialDetailDOChildren = shiftMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0);
+ shiftMaterialDetailDO.setShiftIoDetailId(shiftMaterialDetailDOChildren.getShiftIoDetailId());
+ shiftMaterialDetailDO.setShiftQuantity(shiftMaterialDetailDOChildren.getShiftQuantity());
+ shiftMaterialDetailDO.setNewWarehouseId(shiftMaterialDetailDOChildren.getNewWarehouseId());
+ shiftMaterialDetailDO.setNewStorageSectionId(shiftMaterialDetailDOChildren.getNewStorageSectionId());
+ shiftMaterialDetailDO.setNewStorageLocationId(shiftMaterialDetailDOChildren.getNewStorageLocationId());
+ shiftMaterialDetailDO.setContainerId(shiftMaterialDetailDOChildren.getContainerId());
+ shiftMaterialDetailDO.setLevel(shiftMaterialDetailDOChildren.getLevel());
+ shiftMaterialDetailDO.setMaterialDetailSerialNumberList(shiftMaterialDetailDOChildren.getMaterialDetailSerialNumberList());
+ //只留二级
+ List shiftMaterialDetailDOChildrenList2 = shiftMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList());
+ shiftMaterialDetailDO.setChildren(shiftMaterialDetailDOChildrenList2);
+ });
+ //移位装配参数
+ ShiftManageDO assembleShiftManageDO = assembleParamByShift(shiftManageDO);
+ return shiftManageDomainService.appMoveFromShiftManage(assembleShiftManageDO);
+ }
+
+ /**
+ * @description PC 完成移位
+ * @author ZhouGY
+ * @date 2024/7/30 14:51
+ * @param shiftManageDO
+ * @return Map
+ */
+ public Boolean finishShiftByPC(ShiftManageDO shiftManageDO){
+ //移位装配参数
+ ShiftManageDO assembleShiftManageDO = assembleParamByShift(shiftManageDO);
+ return shiftManageDomainService.finishShiftByPC(assembleShiftManageDO);
+ }
+
+ /**
+ * @description PDA 完成移位
+ * @author ZhouGY
+ * @date 2024/7/30 14:51
+ * @param shiftManageDO
+ * @return Map
+ */
+ public Boolean finishShift(ShiftManageDO shiftManageDO){
+ return shiftManageDomainService.finishShift(shiftManageDO);
+ }
+
+ /**
+ * @description app 容器移位
+ * @author ZhouGY
+ * @date 2024/7/30 14:24
+ * @param containerShiftDOList
+ * @return Boolean
+ */
+ public Boolean appMoveContainShift(List containerShiftDOList){
+ //设置上架库位、容器信息
+ setStorageLocationInfoByContainer(containerShiftDOList);
+ return shiftManageDomainService.appMoveContainShift(containerShiftDOList);
+ }
+
+ /**
+ * @description 移位装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param shiftManageDO
+ * @return Boolean
+ */
+ private ShiftManageDO assembleParamByShift(ShiftManageDO shiftManageDO) {
+ ShiftManagePO shiftManagePO = shiftManageDomainService.getInfo(shiftManageDO.getShiftManageId());
+ if (shiftManagePO == null){
+ throw new ServiceException("移位单不存在");
+ }
+ if (shiftManagePO.getShiftStatus() > 3) {
+ throw new ServiceException("移位单已完成移位");
+ }
+ ShiftManageDO returnShiftManageDO = new ShiftManageDO();
+ returnShiftManageDO.setUpdateTime(shiftManagePO.getUpdateTime());
+ returnShiftManageDO.setShiftManageId(shiftManagePO.getShiftManageId());
+ returnShiftManageDO.setOrganizationId(shiftManagePO.getOrganizationId());
+ returnShiftManageDO.setOrganizationName(shiftManagePO.getOrganizationName());
+ returnShiftManageDO.setTopOrganizationId(shiftManagePO.getTopOrganizationId());
+ returnShiftManageDO.setShiftNumber(shiftManagePO.getShiftNumber());
+ ShiftMaterialDetailDO shiftMaterialDetailDOByQuery = new ShiftMaterialDetailDO();
+ shiftMaterialDetailDOByQuery.setShiftNumber(shiftManagePO.getShiftNumber());
+ List shiftMaterialDetailPODbList = shiftMaterialDetailDomainService.queryList(shiftMaterialDetailDOByQuery);
+ Map shiftMaterialDetailPODbMap = shiftMaterialDetailPODbList.stream().collect(Collectors.toMap(ShiftMaterialDetailPO::getShiftIoDetailId, Function.identity()));
+ BigDecimal totalShiftQuantity = BigDecimal.ZERO;//移位单当前作业收货数
+ int totalActualReceiptMaterialQuantity = 0;//移位单收货物料种数
+ List returnShiftMaterialDetailDOList = new ArrayList<>();
+ for (ShiftMaterialDetailDO shiftMaterialDetailDO : shiftManageDO.getShiftMaterialDetailList()){
+ //设置物料更多属性信息
+ ShiftMaterialDetailPO shiftMaterialDetailPO = shiftMaterialDetailPODbMap.get(shiftMaterialDetailDO.getShiftIoDetailId());
+ if (shiftMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (shiftMaterialDetailDO.getShiftQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行移位直接跳过
+ continue;
+ }
+ if (shiftMaterialDetailPO.getShiftStatus() == 4){
+ //已完成移位的物料不再支持修改
+ continue;
+ }
+ //设置上架库位、容器信息
+ setStorageLocationInfo(shiftMaterialDetailDO);
+ BigDecimal shiftQuantity = shiftMaterialDetailDO.getShiftQuantity();;//当前作业移位数
+ //判断是否存在子项
+ List returnShiftMaterialDetailDOChildList = new ArrayList<>();
+ List shiftMaterialDetailDOChildList = shiftMaterialDetailDO.getChildren();
+ if (!CollectionUtils.isEmpty(shiftMaterialDetailDOChildList)){
+ for (ShiftMaterialDetailDO shiftMaterialDetailDOChild : shiftMaterialDetailDOChildList){
+ ShiftMaterialDetailDO returnShiftMaterialDetailDOChild = new ShiftMaterialDetailDO();
+ ShiftMaterialDetailPO shiftMaterialDetailPOChildDb = shiftMaterialDetailPODbMap.get(shiftMaterialDetailDOChild.getShiftIoDetailId());
+ if (shiftMaterialDetailPOChildDb == null){
+ BeanUtils.copyProperties(shiftMaterialDetailPO, returnShiftMaterialDetailDOChild, "shiftIoDetailId","createBy","createByName","createTime",
+ "updateBy","updateByName","updateTime");
+ }else {
+ BeanUtils.copyProperties(shiftMaterialDetailPOChildDb, returnShiftMaterialDetailDOChild, "shiftIoDetailId","createBy","createByName","createTime",
+ "updateBy","updateByName","updateTime");
+ }
+ BeanUtils.copyProperties(shiftMaterialDetailDOChild, returnShiftMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(shiftMaterialDetailDOChild));
+ //设置上架库位、容器信息
+ setStorageLocationInfo(returnShiftMaterialDetailDOChild);
+ if (ObjectUtil.isNotNull(returnShiftMaterialDetailDOChild.getShiftIoDetailId()) && returnShiftMaterialDetailDOChild.getShiftIoDetailId() == 0){
+ returnShiftMaterialDetailDOChild.setShiftIoDetailId(null);
+ }
+ returnShiftMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ returnShiftMaterialDetailDOChild.setLevel(2);
+ returnShiftMaterialDetailDOChild.setParentUniqueId(shiftMaterialDetailPO.getUniqueId());
+ //是否开启了序列号管理
+ if (shiftMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(shiftMaterialDetailDOChild.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + shiftMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnShiftMaterialDetailDOChild.setMaterialDetailSerialNumberList(returnShiftMaterialDetailDOChild.getMaterialDetailSerialNumberList());
+ returnShiftMaterialDetailDOChildList.add(returnShiftMaterialDetailDOChild);
+ shiftQuantity = shiftQuantity.add(returnShiftMaterialDetailDOChild.getShiftQuantity());
+ }
+ }
+ //记录移位单移位总数
+ totalShiftQuantity = totalShiftQuantity.add(shiftQuantity);
+ //物料总移位数量
+ shiftMaterialDetailDO.setAlreadyShiftQuantity(shiftQuantity);
+ //判断移位数量是否大于计划数量
+ Integer shiftStatus = judgeShiftQuantity(shiftQuantity, shiftMaterialDetailPO.getQuantity());
+ shiftMaterialDetailDO.setShiftStatus(shiftStatus);
+ if (shiftStatus > 3){
+ totalActualReceiptMaterialQuantity += 1;
+ }
+ ShiftMaterialDetailDO returnShiftMaterialDetailDO = new ShiftMaterialDetailDO();
+ BeanUtils.copyProperties(shiftMaterialDetailPO, returnShiftMaterialDetailDO);
+ BeanUtils.copyProperties(shiftMaterialDetailDO, returnShiftMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shiftMaterialDetailDO));
+ //一级列表 首次收货
+ //是否开启了序列号管理
+ if (shiftMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(shiftMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + shiftMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnShiftMaterialDetailDO.setMaterialDetailSerialNumberList(shiftMaterialDetailDO.getMaterialDetailSerialNumberList());
+ returnShiftMaterialDetailDO.setChildren(returnShiftMaterialDetailDOChildList);
+ returnShiftMaterialDetailDOList.add(returnShiftMaterialDetailDO);
+ }
+ returnShiftManageDO.setShiftQuantity(totalShiftQuantity);
+ returnShiftManageDO.setShiftMaterialDetailList(returnShiftMaterialDetailDOList);
+ returnShiftManageDO.setShiftMaterialQuantity(totalActualReceiptMaterialQuantity);
+ return returnShiftManageDO;
+ }
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param shiftManageDO
+ */
+ private void operatorsParam(ShiftManageDO shiftManageDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(shiftManageDO.getOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ shiftManageDO.setOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 设置仓库信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param shiftManageDO
+ */
+ private void setWarehouseInfo(ShiftManageDO shiftManageDO) {
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(shiftManageDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ shiftManageDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ shiftManageDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+
+ /**
+ * @description 设置上架库位、容器信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param shiftMaterialDetailDO
+ */
+ private void setStorageLocationInfo(ShiftMaterialDetailDO shiftMaterialDetailDO){
+ AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shiftMaterialDetailDO.getNewStorageLocationId());
+ if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){
+ throw new ServiceException("获取上架库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class);
+ shiftMaterialDetailDO.setNewStorageSectionId(storageLocationFeignPO.getStorageSectionId());
+ shiftMaterialDetailDO.setNewStorageCode(storageLocationFeignPO.getStorageCode());
+ shiftMaterialDetailDO.setNewStorageName(storageLocationFeignPO.getStorageName());
+ shiftMaterialDetailDO.setNewStorageLocationId(storageLocationFeignPO.getStorageLocationId());
+ shiftMaterialDetailDO.setNewStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ shiftMaterialDetailDO.setNewStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+
+ //获取容器详情
+ AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shiftMaterialDetailDO.getContainerId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取容器信息失败");
+ }
+ ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
+ shiftMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode());
+ shiftMaterialDetailDO.setContainerType(containerFeignPO.getContainerType());
+ shiftMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName());
+ }
+
+ /**
+ * @description 设置上架库位、容器信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param containerShiftDOList
+ */
+ private void setStorageLocationInfoByContainer(List containerShiftDOList){
+ for (ContainerShiftDO containerShiftDO : containerShiftDOList){
+ List shiftMoveMaterialQuantityList = containerShiftDO.getChildren();
+ if (CollectionUtils.isEmpty(shiftMoveMaterialQuantityList)){
+ continue;
+ }
+ shiftMoveMaterialQuantityList.forEach(shiftMoveMaterialQuantityPO -> {
+ AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shiftMoveMaterialQuantityPO.getNewStorageLocationId());
+ if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){
+ throw new ServiceException("获取上架库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class);
+ shiftMoveMaterialQuantityPO.setNewStorageSectionId(storageLocationFeignPO.getStorageSectionId());
+ shiftMoveMaterialQuantityPO.setNewStorageCode(storageLocationFeignPO.getStorageCode());
+ shiftMoveMaterialQuantityPO.setNewStorageName(storageLocationFeignPO.getStorageName());
+ shiftMoveMaterialQuantityPO.setNewStorageLocationId(storageLocationFeignPO.getStorageLocationId());
+ shiftMoveMaterialQuantityPO.setNewStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ shiftMoveMaterialQuantityPO.setNewStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+
+ //获取容器详情
+ AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shiftMoveMaterialQuantityPO.getContainerId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取容器信息失败");
+ }
+ ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
+ shiftMoveMaterialQuantityPO.setContainerCode(containerFeignPO.getContainerCode());
+ shiftMoveMaterialQuantityPO.setContainerType(containerFeignPO.getContainerType());
+ shiftMoveMaterialQuantityPO.setContainerTypeName(containerFeignPO.getContainerTypeName());
+ });
+ }
+ }
+
+ /**
+ * @description 判断移位数量是否与计划数量相等
+ * @author ZhouGY
+ * @date 2024/6/14 17:50
+ * @param quantity
+ * @param shiftQuantity
+ * @return Integer
+ */
+ private Integer judgeShiftQuantity(BigDecimal shiftQuantity, BigDecimal quantity){
+ if (shiftQuantity.compareTo(quantity) > 0){
+ throw new ServiceException("移位数量不能大于计划数量");
+ } else if (shiftQuantity.compareTo(quantity) == 0) {
+ return 4;
+ } else {
+ return 3;
+ }
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java
new file mode 100644
index 000000000..b5184043f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/shiftMaterialDetail/ShiftMaterialDetailApplicationService.java
@@ -0,0 +1,95 @@
+package com.mhd.wms.application.service.shiftMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMaterialDetailPO;
+import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO;
+import com.mhd.wms.domain.shiftMaterialDetail.service.ShiftMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 移位物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-02
+ */
+@Service
+@Slf4j
+public class ShiftMaterialDetailApplicationService {
+ @Autowired
+ private ShiftMaterialDetailDomainService shiftMaterialDetailDomainService;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+ /**
+ * 分页查询移位物料明细列表
+ */
+ public List queryList(ShiftMaterialDetailDO shiftMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null) {
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1) {
+ shiftMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return shiftMaterialDetailDomainService.queryList(shiftMaterialDetailDO);
+ }
+
+ /**
+ * 分页查询分组移位物料明细列表
+ */
+ public List queryGroupList(ShiftMaterialDetailDO shiftMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null) {
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1) {
+ shiftMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return shiftMaterialDetailDomainService.queryGroupList(shiftMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增移位物料明细
+ */
+ public Boolean insert(ShiftMaterialDetailDO shiftMaterialDetailDO) {
+ return shiftMaterialDetailDomainService.insert(shiftMaterialDetailDO);
+ }
+
+ /**
+ * 修改移位物料明细
+ */
+ public Boolean update(ShiftMaterialDetailDO shiftMaterialDetailDO) {
+ return shiftMaterialDetailDomainService.update(shiftMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除移位物料明细
+ */
+ public boolean delete(Long[] shiftIoDetailIds) {
+ return shiftMaterialDetailDomainService.delete(shiftIoDetailIds);
+ }
+
+ /**
+ * 获取移位物料明细详细信息
+ */
+ public ShiftMaterialDetailPO getInfo(Long shiftIoDetailId) {
+ return shiftMaterialDetailDomainService.getInfo(shiftIoDetailId);
+ }
+
+
+ /**
+ * 物料移位
+ */
+
+ public ShiftMaterialDetailPO getShiftMaterialDetail(ShiftMaterialDetailDO shiftMaterialDetailDO) {
+ return shiftMaterialDetailDomainService.getShiftMaterialDetail(shiftMaterialDetailDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java
new file mode 100644
index 000000000..221e24a65
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingDistributionDetails/SowingDistributionDetailsApplicationService.java
@@ -0,0 +1,165 @@
+package com.mhd.wms.application.service.sowingDistributionDetails;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.domain.StorageLocationFeignPO;
+import com.mhd.system.api.domain.StorageSectionFeignPO;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.sowingDistributionDetails.repository.po.SowingDistributionDetailsPO;
+import com.mhd.wms.domain.sowingDistributionDetails.repository.todo.SowingDistributionDetailsDO;
+import com.mhd.wms.domain.sowingDistributionDetails.service.SowingDistributionDetailsDomainService;
+import com.mhd.wms.domain.stockOutOrder.repository.todo.AllocationByOrderDO;
+import com.mhd.wms.domain.waveOrder.repository.todo.AllocationSowingWallDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 播种分货明细表ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-05
+ */
+@Service
+@Slf4j
+public class SowingDistributionDetailsApplicationService {
+ @Autowired
+ private SowingDistributionDetailsDomainService sowingDistributionDetailsDomainService;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询播种分货明细表列表
+ */
+
+ public List queryList(SowingDistributionDetailsDO sowingDistributionDetailsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ sowingDistributionDetailsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return sowingDistributionDetailsDomainService.queryList(sowingDistributionDetailsDO);
+ }
+
+
+ /**
+ * 新增播种分货明细表
+ */
+ public Boolean insert(SowingDistributionDetailsDO sowingDistributionDetailsDO) {
+
+ return sowingDistributionDetailsDomainService.insert(sowingDistributionDetailsDO);
+ }
+
+ /**
+ * 修改播种分货明细表
+ */
+ public Boolean update(SowingDistributionDetailsDO sowingDistributionDetailsDO) {
+ return sowingDistributionDetailsDomainService.update(sowingDistributionDetailsDO);
+ }
+
+ /**
+ * 批量删除播种分货明细表
+ */
+ public boolean delete(Long[] waveOutOrderRelevanceIds) {
+ return sowingDistributionDetailsDomainService.delete(waveOutOrderRelevanceIds);
+ }
+
+ /**
+ * 获取播种分货明细表详细信息
+ */
+ public SowingDistributionDetailsPO getInfo(Long waveOutOrderRelevanceId)
+ {
+ return sowingDistributionDetailsDomainService.getInfo(waveOutOrderRelevanceId);
+ }
+
+
+ /**
+ * @description 播种分单
+ * @author ZhouGY
+ * @date 2024/6/6 14:43
+ * @param allocationSowingWallDO
+ * @return List
+ */
+ public List allocationSowingWall(AllocationSowingWallDO allocationSowingWallDO){
+ return sowingDistributionDetailsDomainService.allocationSowingWall(allocationSowingWallDO);
+ }
+
+ /**
+ * @description 物料扫码 将物料分配至对应的播种墙
+ * @author ZhouGY
+ * @date 2024/6/6 16:16
+ * @param allocationSowingWallDO
+ * @return WaveOutOrderRelevancePO
+ */
+ public SowingDistributionDetailsPO materialScanCodeAllocationSowing(AllocationSowingWallDO allocationSowingWallDO){
+ return sowingDistributionDetailsDomainService.materialScanCodeAllocationSowing(allocationSowingWallDO);
+ }
+
+ /**
+ * @description 按单分货
+ * @author ZhouGY
+ * @date 2024/6/6 14:43
+ * @param allocationByOrderDO
+ * @return List
+ */
+ public List allocationByOrder(AllocationByOrderDO allocationByOrderDO){
+ return sowingDistributionDetailsDomainService.allocationByOrder(allocationByOrderDO);
+ }
+
+ /**
+ * @description 物料扫码 将物料分配至对应的出库单物料明细
+ * @author ZhouGY
+ * @date 2024/6/6 16:16
+ * @param allocationByOrderDO
+ * @return WaveOutOrderRelevancePO
+ */
+ public SowingDistributionDetailsPO materialScanCodeAllocationByOrder(AllocationByOrderDO allocationByOrderDO){
+ //封装集货库区信息
+ storageSectionParam(allocationByOrderDO);
+ //封装上架库区信息
+ storageLocationParam(allocationByOrderDO);
+ return sowingDistributionDetailsDomainService.materialScanCodeAllocationByOrder(allocationByOrderDO);
+ }
+
+ /**
+ * @description 封装集货库区信息
+ * @author ZhouGY
+ * @date 2024/5/10 20:28
+ * @param allocationByOrderDO
+ */
+ private void storageSectionParam(AllocationByOrderDO allocationByOrderDO){
+ AjaxResult ajaxResult = systemServiceFeign.getStorageSectionInfoByStorageSectionId(allocationByOrderDO.getStorageSectionId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取集货库区信息失败");
+ }
+ StorageSectionFeignPO storageSectionFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageSectionFeignPO.class);
+ allocationByOrderDO.setStorageCode(storageSectionFeignPO.getStorageCode());
+ allocationByOrderDO.setStorageName(storageSectionFeignPO.getStorageName());
+ }
+
+ /**
+ * @description 封装集货库位信息
+ * @author ZhouGY
+ * @date 2024/5/10 20:28
+ * @param allocationByOrderDO
+ */
+ private void storageLocationParam(AllocationByOrderDO allocationByOrderDO){
+ AjaxResult ajaxResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(allocationByOrderDO.getStorageLocationId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取集货库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), StorageLocationFeignPO.class);
+ allocationByOrderDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ allocationByOrderDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java
new file mode 100644
index 000000000..c49c15cca
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/sowingWall/SowingWallApplicationService.java
@@ -0,0 +1,86 @@
+package com.mhd.wms.application.service.sowingWall;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.sowingWall.repository.po.SowingWallPO;
+import com.mhd.wms.domain.sowingWall.repository.todo.SowingWallDO;
+import com.mhd.wms.domain.sowingWall.service.SowingWallDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 播种墙管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class SowingWallApplicationService {
+ @Autowired
+ private SowingWallDomainService sowingWallDomainService;
+
+
+ /**
+ * 分页查询播种墙管理列表
+ */
+
+ public List queryList(SowingWallDO sowingWallDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ sowingWallDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return sowingWallDomainService.queryList(sowingWallDO);
+ }
+
+
+ /**
+ * 新增播种墙管理
+ */
+ public Boolean insert(SowingWallDO sowingWallDO) {
+
+ return sowingWallDomainService.insert(sowingWallDO);
+ }
+
+ /**
+ * 修改播种墙管理
+ */
+ public Boolean update(SowingWallDO sowingWallDO) {
+ return sowingWallDomainService.update(sowingWallDO);
+ }
+
+ /**
+ * 批量删除播种墙管理
+ */
+ public boolean delete(Long[] sowingWallIds) {
+ return sowingWallDomainService.delete(sowingWallIds);
+ }
+
+ /**
+ * 获取播种墙管理详细信息
+ */
+ public SowingWallPO getInfo(Long sowingWallId)
+ {
+ return sowingWallDomainService.getInfo(sowingWallId);
+ }
+
+
+ /**
+ * @description 根据id作废播种墙
+ * @author ZhouGY
+ * @date 2024/5/13 15:48
+ * @param sowingWallIds
+ * @return Boolean
+ */
+ public Boolean nullifyByIds(Long[] sowingWallIds){
+ return sowingWallDomainService.nullifyByIds(sowingWallIds);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java
new file mode 100644
index 000000000..022d8a2d7
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/statementStatistics/StatementStatisticsService.java
@@ -0,0 +1,101 @@
+package com.mhd.wms.application.service.statementStatistics;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inventoryStandingDetail.service.InventoryStandingDetailDomainService;
+import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService;
+import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO;
+import com.mhd.wms.domain.statementStatistics.po.WarehousingReportPO;
+import com.mhd.wms.domain.statementStatistics.todo.ImmediateInventoryDO;
+import com.mhd.wms.domain.statementStatistics.todo.WarehousingReportDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 报表管理ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-07
+ */
+@Service
+@Slf4j
+public class StatementStatisticsService {
+ @Autowired
+ private MaterialInventoryDomainService materialInventoryDomainService;
+ @Autowired
+ private InventoryStandingDetailDomainService inventoryStandingDetailDomainService;
+
+ /**
+ * 分页查询即时库存列表
+ */
+
+ public List queryImmediateInventoryList(ImmediateInventoryDO immediateInventoryDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ immediateInventoryDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ immediateInventoryDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return materialInventoryDomainService.queryImmediateInventoryList(immediateInventoryDO);
+ }
+
+ /**
+ * 分页查询入库日报表列表
+ */
+
+ public List queryWarehousingReportList(WarehousingReportDO warehousingReportDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryStandingDetailDomainService.queryWarehousingReportList(warehousingReportDO);
+ }
+ /**
+ * 分页查询出库日报表列表
+ */
+
+ public List queryOutboundReportList(WarehousingReportDO warehousingReportDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryStandingDetailDomainService.queryOutboundReportList(warehousingReportDO);
+ }
+
+ /**
+ * 分页查询出进出存合并报表列表
+ */
+
+ public List queryWarehousingAndOutboundReportList(WarehousingReportDO warehousingReportDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ warehousingReportDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ warehousingReportDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return inventoryStandingDetailDomainService.queryWarehousingAndOutboundReportList(warehousingReportDO);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java
new file mode 100644
index 000000000..4db45edd8
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInOrder/StockInOrderApplicationService.java
@@ -0,0 +1,228 @@
+package com.mhd.wms.application.service.stockInOrder;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.StringUtils;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.SysDictData;
+import com.mhd.system.api.domain.WarehouseFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
+import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
+import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 入库单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class StockInOrderApplicationService {
+ @Autowired
+ private StockInOrderDomainService stockInOrderDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+
+ /**
+ * 分页查询入库单列表
+ */
+
+ public List queryList(StockInOrderDO stockInOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockInOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockInOrderDomainService.queryList(stockInOrderDO);
+ }
+
+
+ /**
+ * 新增入库单
+ */
+ public Boolean insert(StockInOrderDO stockInOrderDO) {
+ //设置仓库
+ setWarehouseInfo(stockInOrderDO);
+ //设置货主信息
+ shipperParam(stockInOrderDO);
+ //设置供应商信息
+ supplierParam(stockInOrderDO);
+ //设置数据字典键值
+ setDataDict(stockInOrderDO);
+ return stockInOrderDomainService.insert(stockInOrderDO);
+ }
+
+ /**
+ * 修改入库单
+ */
+ public Boolean update(StockInOrderDO stockInOrderDO) {
+ //设置仓库
+ setWarehouseInfo(stockInOrderDO);
+ //设置货主信息
+ shipperParam(stockInOrderDO);
+ //设置供应商信息
+ supplierParam(stockInOrderDO);
+ //设置数据字典键值
+ setDataDict(stockInOrderDO);
+ return stockInOrderDomainService.update(stockInOrderDO);
+ }
+
+ /**
+ * 批量删除入库单
+ */
+ public boolean delete(Long[] inOrderIds) {
+ return stockInOrderDomainService.delete(inOrderIds);
+ }
+
+ /**
+ * 获取入库单详细信息
+ */
+ public StockInOrderPO getInfo(Long inOrderId)
+ {
+ return stockInOrderDomainService.getInfo(inOrderId);
+ }
+
+
+ /**
+ * @description 审核入库单
+ * @author ZhouGY
+ * @date 2024/5/21 13:53
+ * @param stockInOrderDO
+ * @return Boolean
+ */
+ public Boolean auditState(StockInOrderDO stockInOrderDO){
+ return stockInOrderDomainService.auditState(stockInOrderDO);
+ }
+
+ /**
+ * @description 取消入库单
+ * @author ZhouGY
+ * @date 2024/5/21 13:53
+ * @param stockInOrderDO
+ * @return Boolean
+ */
+ public Boolean cancelOrder(StockInOrderDO stockInOrderDO){
+ return stockInOrderDomainService.cancelOrder(stockInOrderDO);
+ }
+
+
+ /**
+ * @description 关闭入库单
+ * @author ZhouGY
+ * @date 2024/5/21 13:53
+ * @param stockInOrderDO
+ * @return Boolean
+ */
+ public Boolean closeOrder(StockInOrderDO stockInOrderDO){
+ return stockInOrderDomainService.closeOrder(stockInOrderDO);
+ }
+
+ /**
+ * @description 设置仓库信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param stockInOrderDO
+ */
+ private void setWarehouseInfo(StockInOrderDO stockInOrderDO) {
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ stockInOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ stockInOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+
+ /**
+ * @description 封装货主信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockInOrderDO
+ */
+ private void shipperParam(StockInOrderDO stockInOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockInOrderDO.getShipperId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取货主信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockInOrderDO.setShipperCode(userPo.getUserMemberCode());
+ stockInOrderDO.setShipperName(userPo.getUserName());
+ }
+
+ /**
+ * @description 封装供应商信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockInOrderDO
+ */
+ private void supplierParam(StockInOrderDO stockInOrderDO){
+ if (ObjectUtil.isNotNull(stockInOrderDO.getSupplierId())){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockInOrderDO.getSupplierId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取供应商信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockInOrderDO.setSupplierName(userPo.getUserName());
+ }
+ }
+
+ /**
+ * @description 设置数据字典键值
+ * @author ZhouGY
+ * @date 2024/4/7 14:33
+ * @param stockInOrderDO
+ */
+ private void setDataDict(StockInOrderDO stockInOrderDO){
+ //翻译单据类型
+ AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.DOCUMENT_TYPE.getCode());
+ if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) {
+ throw new ServiceException("单据类型数据字典不存在");
+ }
+ List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class);
+
+ SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockInOrderDO.getOrderTypeCode())).findAny().orElse(null);
+ if (null == documentTypeData) {
+ throw new ServiceException("单据类型【" + stockInOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员");
+ }
+ stockInOrderDO.setOrderTypeName(documentTypeData.getDictLabel());
+
+ //翻译优先级别类型
+ if (StringUtils.isNotBlank(stockInOrderDO.getPriorityLevelCode())){
+ AjaxResult priorityLevelResult = systemServiceFeign.selectListByDictType(DictCode.PRIORITY_LEVEL.getCode());
+ if (!"200".equals(String.valueOf(priorityLevelResult.get("code")))) {
+ throw new ServiceException("优先级别类型数据字典不存在");
+ }
+ List priorityLevelDataList = JSON.parseArray(JSONUtil.toJsonStr(priorityLevelResult.get("data")), SysDictData.class);
+
+ SysDictData priorityLevelData = priorityLevelDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockInOrderDO.getPriorityLevelCode())).findAny().orElse(null);
+ if (null == priorityLevelData) {
+ throw new ServiceException("优先级别类型【" + stockInOrderDO.getPriorityLevelCode() + "】数据字典不存在 请联系管理员");
+ }
+ stockInOrderDO.setPriorityLevelName(priorityLevelData.getDictLabel());
+ }
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java
new file mode 100644
index 000000000..1424b7e18
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockInTaskOrder/StockInTaskOrderApplicationService.java
@@ -0,0 +1,78 @@
+package com.mhd.wms.application.service.stockInTaskOrder;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.stockInTaskOrder.repository.po.StockInTaskOrderPO;
+import com.mhd.wms.domain.stockInTaskOrder.repository.todo.StockInTaskOrderDO;
+import com.mhd.wms.domain.stockInTaskOrder.service.StockInTaskOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 入库作业单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class StockInTaskOrderApplicationService {
+ @Autowired
+ private StockInTaskOrderDomainService stockInTaskOrderDomainService;
+
+
+ /**
+ * 分页查询入库作业单列表
+ */
+
+ public List queryList(StockInTaskOrderDO stockInTaskOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockInTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockInTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockInTaskOrderDomainService.queryList(stockInTaskOrderDO);
+ }
+
+
+ /**
+ * 新增入库作业单
+ */
+ public Boolean insert(StockInTaskOrderDO stockInTaskOrderDO) {
+
+ return stockInTaskOrderDomainService.insert(stockInTaskOrderDO);
+ }
+
+ /**
+ * 修改入库作业单
+ */
+ public Boolean update(StockInTaskOrderDO stockInTaskOrderDO) {
+ return stockInTaskOrderDomainService.update(stockInTaskOrderDO);
+ }
+
+ /**
+ * 批量删除入库作业单
+ */
+ public boolean delete(Long[] inTaskOrderIds) {
+ return stockInTaskOrderDomainService.delete(inTaskOrderIds);
+ }
+
+ /**
+ * 获取入库作业单详细信息
+ */
+ public StockInTaskOrderPO getInfo(Long inTaskOrderId)
+ {
+ return stockInTaskOrderDomainService.getInfo(inTaskOrderId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java
new file mode 100644
index 000000000..28e3f82d8
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutOrder/StockOutOrderApplicationService.java
@@ -0,0 +1,524 @@
+package com.mhd.wms.application.service.stockOutOrder;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.constant.SnowFlakeConstants;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.IgnoreNullUtil;
+import com.mhd.common.core.utils.StringUtils;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.utils.uuid.IdGenerator;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.StorageLocationFeignPO;
+import com.mhd.system.api.domain.SysDictData;
+import com.mhd.system.api.domain.WarehouseFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO;
+import com.mhd.wms.domain.materialInventory.service.MaterialInventoryDomainService;
+import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialCheckPO;
+import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO;
+import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
+import com.mhd.wms.domain.outMaterialDetail.service.OutMaterialDetailDomainService;
+import com.mhd.wms.domain.stockOutOrder.repository.po.StockOutOrderPO;
+import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO;
+import com.mhd.wms.domain.stockOutOrder.service.StockOutOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 出库单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class StockOutOrderApplicationService {
+ @Autowired
+ private StockOutOrderDomainService stockOutOrderDomainService;
+ @Autowired
+ private OutMaterialDetailDomainService outMaterialDetailDomainService;
+ @Autowired
+ private MaterialInventoryDomainService materialInventoryDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+ @Autowired
+ private IdGenerator idGenerator;
+
+
+ /**
+ * 分页查询出库单列表
+ */
+
+ public List queryList(StockOutOrderDO stockOutOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockOutOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockOutOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockOutOrderDomainService.queryList(stockOutOrderDO);
+ }
+
+
+ /**
+ * 新增出库单
+ */
+ public Boolean insert(StockOutOrderDO stockOutOrderDO) {
+ //设置仓库
+ setWarehouseInfo(stockOutOrderDO);
+ //设置货主信息
+ shipperParam(stockOutOrderDO);
+ //设置客户信息
+ customerParam(stockOutOrderDO);
+ //设置数据字典键值
+ setDataDict(stockOutOrderDO);
+ return stockOutOrderDomainService.insert(stockOutOrderDO);
+ }
+
+ /**
+ * 修改出库单
+ */
+ public Boolean update(StockOutOrderDO stockOutOrderDO) {
+ return stockOutOrderDomainService.update(stockOutOrderDO);
+ }
+
+ /**
+ * 修改出库单
+ */
+ public Boolean close(StockOutOrderDO stockOutOrderDO) {
+ return stockOutOrderDomainService.close(stockOutOrderDO);
+ }
+
+ /**
+ * 批量删除出库单
+ */
+ public boolean delete(Long[] outOrderIds) {
+ return stockOutOrderDomainService.delete(outOrderIds);
+ }
+
+ /**
+ * 获取出库单详细信息
+ */
+ public StockOutOrderPO getInfoChildren(Long outOrderId)
+ {
+ return stockOutOrderDomainService.getInfoChildren(outOrderId);
+ }
+
+ /**
+ * 获取出库单详细信息
+ */
+ public StockOutOrderPO getInfoByApp(Long outOrderId)
+ {
+ return stockOutOrderDomainService.getInfoByApp(outOrderId);
+ }
+
+ /**
+ * @description 审核出库单
+ * @author ZhouGY
+ * @date 2024/5/21 13:53
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean auditState(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.auditState(stockOutOrderDO);
+ }
+
+ /**
+ * @description 手动分配
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean manualAssign(StockOutOrderDO stockOutOrderDO){
+ StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO);
+ return stockOutOrderDomainService.manualAssign(assembleStockOutOrderDO);
+ }
+
+ public Boolean autoAssign(StockOutOrderDO stockOutOrderDO){
+ StockOutOrderDO assembleStockOutOrderDO = assembleParamByOutOrder(stockOutOrderDO);
+ return stockOutOrderDomainService.autoAssign(assembleStockOutOrderDO);
+ }
+
+ /**
+ * @description 取消分配
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean cancelAssign(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.cancelAssign(stockOutOrderDO);
+ }
+
+
+ /**
+ * @description 复核下发
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean checkTaskDistribution(StockOutOrderDO stockOutOrderDO){
+ //设置作业人员信息
+ checkOperatorsParam(stockOutOrderDO);
+ return stockOutOrderDomainService.checkTaskDistribution(stockOutOrderDO);
+ }
+
+ /**
+ * @description 生成拣货单
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean genPickingOrder(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.genPickingOrder(stockOutOrderDO);
+ }
+
+ /**
+ * 获取出库单复核详细信息
+ */
+ public StockOutOrderPO getCheckInfo(StockOutOrderDO stockOutOrderDO) {
+ return stockOutOrderDomainService.getCheckInfo(stockOutOrderDO);
+ }
+
+ /**
+ * @description 单件复核
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public OutMaterialCheckPO singleCheck(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.singleCheck(stockOutOrderDO);
+ }
+
+ /**
+ * @description 批量复核
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean batchCheck(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.batchCheck(stockOutOrderDO);
+ }
+
+ /**
+ * @description 批量取消复核
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean batchCancelCheck(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.batchCancelCheck(stockOutOrderDO);
+ }
+
+ /**
+ * @description PDA复核
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean checkByApp(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.checkByApp(stockOutOrderDO);
+ }
+
+ /**
+ * @description 复核确认
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean checkConfirm(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.checkConfirm(stockOutOrderDO);
+ }
+
+
+ /**
+ * @description 根据指定规则生成波次单
+ * @author ZhouGY
+ * @date 2024/6/7 15:06
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ public Boolean genWaveOrder(StockOutOrderDO stockOutOrderDO){
+ return stockOutOrderDomainService.genWaveOrder(stockOutOrderDO);
+ }
+
+ /**
+ * @description 生成补货单
+ * @author ZhouGY
+ * @date 2024/6/15 17:41
+ * @param outOrderId
+ * @return Boolean
+ */
+ public Boolean genReplenishmentNotice(Long outOrderId){
+ return stockOutOrderDomainService.genReplenishmentNotice(outOrderId);
+ }
+
+
+ /**
+ * @description 出库分配 装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param stockOutOrderDO
+ * @return Boolean
+ */
+ private StockOutOrderDO assembleParamByOutOrder(StockOutOrderDO stockOutOrderDO) {
+ StockOutOrderPO stockOutOrderPO = stockOutOrderDomainService.getInfo(stockOutOrderDO.getOutOrderId());
+ if (stockOutOrderPO == null){
+ throw new ServiceException("出库单不存在");
+ }
+ if (stockOutOrderPO.getStatus() > 4) {
+ throw new ServiceException("出库单已完成分配");
+ }
+ StockOutOrderDO returnStockOutOrderDO = new StockOutOrderDO();
+ returnStockOutOrderDO.setUpdateTime(stockOutOrderDO.getUpdateTime());
+ returnStockOutOrderDO.setOutOrderId(stockOutOrderPO.getOutOrderId());
+ returnStockOutOrderDO.setOrganizationId(stockOutOrderPO.getOrganizationId());
+ returnStockOutOrderDO.setOrganizationName(stockOutOrderPO.getOrganizationName());
+ returnStockOutOrderDO.setTopOrganizationId(stockOutOrderPO.getTopOrganizationId());
+ returnStockOutOrderDO.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber());
+ OutMaterialDetailDO outMaterialDetailDOByQuery = new OutMaterialDetailDO();
+ outMaterialDetailDOByQuery.setOutOrderNumber(stockOutOrderPO.getOutOrderNumber());
+ List outMaterialDetailPODbList = outMaterialDetailDomainService.queryList(outMaterialDetailDOByQuery);
+ Map outMaterialDetailDbMap = outMaterialDetailPODbList.stream().collect(Collectors.toMap(OutMaterialDetailPO::getMaterialDetailId, Function.identity()));
+ List returnOutMaterialDetailDOList = new ArrayList<>();
+ for (OutMaterialDetailDO outMaterialDetailDO : stockOutOrderDO.getMaterialDetailList()){
+ //设置物料更多属性信息
+ OutMaterialDetailPO outMaterialDetailPO = outMaterialDetailDbMap.get(outMaterialDetailDO.getMaterialDetailId());
+ if (outMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (outMaterialDetailDO.getAllocationQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行分配直接跳过
+ continue;
+ }
+ BigDecimal totalAllocationQuantity = BigDecimal.ZERO;//当前作业分配数量
+ //判断收否分配 第一次分配 修改分配数量
+// if (outMaterialDetailPO.getAllocationQuantity().compareTo(BigDecimal.ZERO) == 0){
+ if (2 != outMaterialDetailDO.getAllowModify()){
+ //设置上架库位
+ setStorageLocationInfo(outMaterialDetailDO);
+ //设置库存信息
+ setMaterialInventory(outMaterialDetailDO);
+ //分配后 设置该记录不允许被修改
+ outMaterialDetailDO.setAllowModify(2);
+ //未分配过货 统计到当前分配单作业分配数
+ totalAllocationQuantity = outMaterialDetailDO.getAllocationQuantity();
+ }
+ //判断是否存在子项
+ List returnOutMaterialDetailDOChildList = new ArrayList<>();
+ List outMaterialDetailDOChildList = outMaterialDetailDO.getChildren();
+ if (!CollectionUtils.isEmpty(outMaterialDetailDOChildList)){
+ for (OutMaterialDetailDO outMaterialDetailDOChild : outMaterialDetailDOChildList){
+ OutMaterialDetailPO outMaterialDetailPOChildDb = outMaterialDetailDbMap.get(outMaterialDetailDOChild.getMaterialDetailId());
+ if (outMaterialDetailPOChildDb != null){
+ continue;
+ }
+ OutMaterialDetailDO returnOutMaterialDetailDOChild = new OutMaterialDetailDO();
+ BeanUtils.copyProperties(outMaterialDetailPO, returnOutMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime",
+ "updateBy","updateByName","updateTime");
+ BeanUtils.copyProperties(outMaterialDetailDOChild, returnOutMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDOChild));
+ if (ObjectUtil.isNotNull(returnOutMaterialDetailDOChild.getMaterialDetailId()) && returnOutMaterialDetailDOChild.getMaterialDetailId() == 0){
+ returnOutMaterialDetailDOChild.setMaterialDetailId(null);
+ }
+ //设置上架库位
+ setStorageLocationInfo(outMaterialDetailDO);
+ //设置库存信息
+ setMaterialInventory(outMaterialDetailDO);
+ //分配后 设置该记录不允许被修改
+ returnOutMaterialDetailDOChild.setAllowModify(2);
+ returnOutMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ returnOutMaterialDetailDOChild.setLevel(2);
+ returnOutMaterialDetailDOChild.setParentUniqueId(outMaterialDetailPO.getUniqueId());
+ returnOutMaterialDetailDOChildList.add(returnOutMaterialDetailDOChild);
+ totalAllocationQuantity = totalAllocationQuantity.add(returnOutMaterialDetailDOChild.getAllocationQuantity());
+ }
+ }
+ //主单当分配作业数量和
+ outMaterialDetailDO.setAlreadyAllocationQuantity(totalAllocationQuantity);
+ OutMaterialDetailDO returnOutMaterialDetailDO = new OutMaterialDetailDO();
+ BeanUtils.copyProperties(outMaterialDetailPO, returnOutMaterialDetailDO);
+ BeanUtils.copyProperties(outMaterialDetailDO, returnOutMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(outMaterialDetailDO));
+ returnOutMaterialDetailDO.setChildren(returnOutMaterialDetailDOChildList);
+ returnOutMaterialDetailDOList.add(returnOutMaterialDetailDO);
+ }
+ returnStockOutOrderDO.setMaterialDetailList(returnOutMaterialDetailDOList);
+ return returnStockOutOrderDO;
+ }
+
+ /**
+ * @description 设置仓库信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param stockOutOrderDO
+ */
+ private void setWarehouseInfo(StockOutOrderDO stockOutOrderDO) {
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockOutOrderDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ stockOutOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ stockOutOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+
+ /**
+ * @description 封装货主信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockOutOrderDO
+ */
+ private void shipperParam(StockOutOrderDO stockOutOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getShipperId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取货主信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockOutOrderDO.setShipperCode(userPo.getUserMemberCode());
+ stockOutOrderDO.setShipperName(userPo.getUserName());
+ }
+
+ /**
+ * @description 封装客户信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockOutOrderDO
+ */
+ private void customerParam(StockOutOrderDO stockOutOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getCustomerId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取客户信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockOutOrderDO.setCustomerCode(userPo.getUserMemberCode());
+ stockOutOrderDO.setCustomerName(userPo.getUserName());
+ }
+
+ /**
+ * @description 设置数据字典键值
+ * @author ZhouGY
+ * @date 2024/4/7 14:33
+ * @param stockOutOrderDO
+ */
+ private void setDataDict(StockOutOrderDO stockOutOrderDO){
+ //翻译单据类型
+ AjaxResult documentTypeResult = systemServiceFeign.selectListByDictType(DictCode.OUT_DOCUMENT_TYPE.getCode());
+ if (!"200".equals(String.valueOf(documentTypeResult.get("code")))) {
+ throw new ServiceException("单据类型数据字典不存在");
+ }
+ List documentTypeDataList = JSON.parseArray(JSONUtil.toJsonStr(documentTypeResult.get("data")), SysDictData.class);
+
+ SysDictData documentTypeData = documentTypeDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockOutOrderDO.getOrderTypeCode())).findAny().orElse(null);
+ if (null == documentTypeData) {
+ throw new ServiceException("单据类型【" + stockOutOrderDO.getOrderTypeCode() + "】数据字典不存在 请联系管理员");
+ }
+ stockOutOrderDO.setOrderTypeName(documentTypeData.getDictLabel());
+
+ if (StringUtils.isNotBlank(stockOutOrderDO.getPriorityLevelCode())){
+ //翻译优先级别类型
+ AjaxResult priorityLevelResult = systemServiceFeign.selectListByDictType(DictCode.PRIORITY_LEVEL.getCode());
+ if (!"200".equals(String.valueOf(priorityLevelResult.get("code")))) {
+ throw new ServiceException("优先级别类型数据字典不存在");
+ }
+ List priorityLevelDataList = JSON.parseArray(JSONUtil.toJsonStr(priorityLevelResult.get("data")), SysDictData.class);
+
+ SysDictData priorityLevelData = priorityLevelDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), stockOutOrderDO.getPriorityLevelCode())).findAny().orElse(null);
+ if (null == priorityLevelData) {
+ throw new ServiceException("优先级别类型【" + stockOutOrderDO.getPriorityLevelCode() + "】数据字典不存在 请联系管理员");
+ }
+ stockOutOrderDO.setPriorityLevelName(priorityLevelData.getDictLabel());
+ }
+ }
+
+ /**
+ * @description 设置上架库位信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param outMaterialDetailDO
+ */
+ private void setStorageLocationInfo(OutMaterialDetailDO outMaterialDetailDO){
+ AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(outMaterialDetailDO.getStorageLocationId());
+ if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){
+ throw new ServiceException("获取上架库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class);
+ outMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId());
+ outMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode());
+ outMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName());
+ outMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId());
+ outMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode());
+ outMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName());
+ outMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId());
+ outMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ outMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+ }
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockOutOrderDO
+ */
+ private void checkOperatorsParam(StockOutOrderDO stockOutOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockOutOrderDO.getCheckOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockOutOrderDO.setCheckOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 设置库存信息
+ * @author ZhouGY
+ * @date 2024/7/19 20:17
+ * @param outMaterialDetailDO
+ */
+ private void setMaterialInventory(OutMaterialDetailDO outMaterialDetailDO){
+ if (ObjectUtil.isNull(outMaterialDetailDO.getMaterialInventoryId()) || outMaterialDetailDO.getMaterialInventoryId() == 0){
+ return;
+ }
+ MaterialInventoryPO materialInventoryPO = materialInventoryDomainService.getInfo(outMaterialDetailDO.getMaterialInventoryId());
+ if (materialInventoryPO == null){
+ throw new ServiceException("物料库存信息不存在");
+ }
+ outMaterialDetailDO.setBatchNumber(materialInventoryPO.getBatchNumber());
+ outMaterialDetailDO.setMaterialStatusCode(materialInventoryPO.getMaterialStatusCode());
+ outMaterialDetailDO.setMaterialStatusName(materialInventoryPO.getMaterialStatusName());
+ outMaterialDetailDO.setContainerId(materialInventoryPO.getContainerId());
+ outMaterialDetailDO.setContainerCode(materialInventoryPO.getContainerCode());
+ outMaterialDetailDO.setContainerType(materialInventoryPO.getContainerType());
+ outMaterialDetailDO.setContainerTypeName(materialInventoryPO.getContainerTypeName());
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java
new file mode 100644
index 000000000..3d4a4bdfa
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockOutTaskOrder/StockOutTaskOrderApplicationService.java
@@ -0,0 +1,183 @@
+package com.mhd.wms.application.service.stockOutTaskOrder;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.stockOutTaskOrder.repository.po.StockOutTaskOrderPO;
+import com.mhd.wms.domain.stockOutTaskOrder.repository.todo.StockOutTaskOrderDO;
+import com.mhd.wms.domain.stockOutTaskOrder.service.StockOutTaskOrderDomainService;
+import com.mhd.wms.domain.taskPickingMaterialDetail.repository.po.TaskPickingMaterialDetailPO;
+import com.mhd.wms.domain.taskPickingMaterialDetail.repository.todo.TaskPickingMaterialDetailDO;
+import com.mhd.wms.domain.taskPickingMaterialDetail.service.TaskPickingMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 拣货作业单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class StockOutTaskOrderApplicationService {
+ @Autowired
+ private StockOutTaskOrderDomainService stockOutTaskOrderDomainService;
+ @Autowired
+ private TaskPickingMaterialDetailDomainService taskPickingMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询拣货作业单列表
+ */
+
+ public List queryList(StockOutTaskOrderDO stockOutTaskOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockOutTaskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockOutTaskOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockOutTaskOrderDomainService.queryList(stockOutTaskOrderDO);
+ }
+
+
+ /**
+ * 新增拣货作业单
+ */
+ public Boolean insert(StockOutTaskOrderDO stockOutTaskOrderDO) {
+
+ return stockOutTaskOrderDomainService.insert(stockOutTaskOrderDO);
+ }
+
+ /**
+ * 修改拣货作业单
+ */
+ public Boolean update(StockOutTaskOrderDO stockOutTaskOrderDO) {
+ return stockOutTaskOrderDomainService.update(stockOutTaskOrderDO);
+ }
+
+ /**
+ * 批量删除拣货作业单
+ */
+ public boolean delete(Long[] outTaskOrderIds) {
+ return stockOutTaskOrderDomainService.delete(outTaskOrderIds);
+ }
+
+ /**
+ * 获取拣货作业单详细信息
+ */
+ public StockOutTaskOrderPO getInfo(Long outTaskOrderId)
+ {
+ return stockOutTaskOrderDomainService.getInfo(outTaskOrderId);
+ }
+
+ /**
+ * 按库位拣货 获取拣货作业单详细信息
+ */
+ public StockOutTaskOrderPO getInfoByStorageLocation(Long outTaskOrderId)
+ {
+ return stockOutTaskOrderDomainService.getInfoByStorageLocation(outTaskOrderId);
+ }
+
+ /**
+ *按物料拣货 获取拣货作业单详细信息
+ */
+ public StockOutTaskOrderPO getInfoByMaterial(Long outTaskOrderId)
+ {
+ return stockOutTaskOrderDomainService.getInfoByMaterial(outTaskOrderId);
+ }
+
+ /**
+ * @description 按物料拣货
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param stockOutTaskOrderDO
+ * @return Boolean
+ */
+ public Boolean pickingByMaterial(StockOutTaskOrderDO stockOutTaskOrderDO){
+ StockOutTaskOrderDO assembleStockOutTaskOrderDO = assembleParamByTaskOrder(stockOutTaskOrderDO);
+ return stockOutTaskOrderDomainService.pickingByMaterial(assembleStockOutTaskOrderDO);
+ }
+
+ /**
+ * @description 完成拣货
+ * @author ZhouGY
+ * @date 2024/5/30 10:30
+ * @param outTaskOrderId
+ * @return Boolean
+ */
+ public Boolean completePicking(Long outTaskOrderId){
+ return stockOutTaskOrderDomainService.completePicking(outTaskOrderId);
+ }
+
+ /**
+ * @description 拣货 装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param stockOutTaskOrderDO
+ * @return Boolean
+ */
+ private StockOutTaskOrderDO assembleParamByTaskOrder(StockOutTaskOrderDO stockOutTaskOrderDO) {
+ StockOutTaskOrderPO stockOutTaskOrderPO = stockOutTaskOrderDomainService.getInfo(stockOutTaskOrderDO.getOutTaskOrderId());
+ if (stockOutTaskOrderPO == null){
+ throw new ServiceException("拣货作业单不存在");
+ }
+ if (stockOutTaskOrderPO.getStatus() > 2) {
+ throw new ServiceException("拣货作业单已完成拣货");
+ }
+ StockOutTaskOrderDO returnStockOutTaskOrderDO = new StockOutTaskOrderDO();
+ returnStockOutTaskOrderDO.setUpdateTime(stockOutTaskOrderDO.getUpdateTime());
+ returnStockOutTaskOrderDO.setOutTaskOrderId(stockOutTaskOrderPO.getOutTaskOrderId());
+ returnStockOutTaskOrderDO.setOrganizationId(stockOutTaskOrderPO.getOrganizationId());
+ returnStockOutTaskOrderDO.setOrganizationName(stockOutTaskOrderPO.getOrganizationName());
+ returnStockOutTaskOrderDO.setTopOrganizationId(stockOutTaskOrderPO.getTopOrganizationId());
+ returnStockOutTaskOrderDO.setTaskNumber(stockOutTaskOrderPO.getTaskNumber());
+ TaskPickingMaterialDetailDO taskPickingMaterialDetailDOByQuery = new TaskPickingMaterialDetailDO();
+ taskPickingMaterialDetailDOByQuery.setTaskNumber(stockOutTaskOrderPO.getTaskNumber());
+ List taskPickingMaterialDetailPODbList = taskPickingMaterialDetailDomainService.queryList(taskPickingMaterialDetailDOByQuery);
+ Map taskPickingMaterialDetailDbMap = taskPickingMaterialDetailPODbList.stream().collect(Collectors.toMap(TaskPickingMaterialDetailPO::getMaterialDetailId, Function.identity()));
+ List returnTaskPickingMaterialDetailDOList = new ArrayList<>();
+ for (TaskPickingMaterialDetailDO taskPickingMaterialDetailDO : stockOutTaskOrderDO.getTaskPickingMaterialDetailList()){
+ //设置物料更多属性信息
+ TaskPickingMaterialDetailPO taskPickingMaterialDetailPO = taskPickingMaterialDetailDbMap.get(taskPickingMaterialDetailDO.getMaterialDetailId());
+ if (taskPickingMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (ObjectUtil.isNull(taskPickingMaterialDetailDO.getActualQuantity()) || taskPickingMaterialDetailDO.getActualQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行拣货直接跳过
+ continue;
+ }
+ TaskPickingMaterialDetailDO returnTaskPickingMaterialDetailDO = new TaskPickingMaterialDetailDO();
+ BeanUtils.copyProperties(taskPickingMaterialDetailPO, returnTaskPickingMaterialDetailDO);
+ returnTaskPickingMaterialDetailDO.setActualQuantity(taskPickingMaterialDetailDO.getActualQuantity());
+ //是否开启了序列号管理
+ if (taskPickingMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + taskPickingMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnTaskPickingMaterialDetailDO.setMaterialDetailSerialNumberList(taskPickingMaterialDetailDO.getMaterialDetailSerialNumberList());
+ returnTaskPickingMaterialDetailDOList.add(returnTaskPickingMaterialDetailDO);
+ }
+ returnStockOutTaskOrderDO.setTaskPickingMaterialDetailList(returnTaskPickingMaterialDetailDOList);
+ return returnStockOutTaskOrderDO;
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java
new file mode 100644
index 000000000..392287747
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockReceiptOrder/StockReceiptOrderApplicationService.java
@@ -0,0 +1,743 @@
+package com.mhd.wms.application.service.stockReceiptOrder;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.constant.SnowFlakeConstants;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.enums.DictCode;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.DateUtils;
+import com.mhd.common.core.utils.IgnoreNullUtil;
+import com.mhd.common.core.utils.OrderSequence;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.utils.uuid.IdGenerator;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.*;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
+import com.mhd.wms.domain.materialBaseInfo.repository.facade.IMaterialBaseInfoService;
+import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
+import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService;
+import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO;
+import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService;
+import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
+import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
+import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
+import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService;
+import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
+import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
+import com.mhd.wms.domain.stockReceiptOrder.repository.todo.NoReceiptOrderDO;
+import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO;
+import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 收货单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class StockReceiptOrderApplicationService {
+ @Autowired
+ private StockReceiptOrderDomainService stockReceiptOrderDomainService;
+ @Autowired
+ private ReceiptMaterialDetailDomainService receiptMaterialDetailDomainService;
+ @Autowired
+ private IMaterialWarehouseControlService materialWarehouseControlService;
+ @Autowired
+ private IMaterialBaseInfoService materialBaseInfoService;
+ @Autowired
+ private IMaterialGoodsRuleService materialGoodsRuleService;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private IdGenerator idGenerator;
+
+
+ /**
+ * 分页查询收货单列表
+ */
+
+ public List queryList(StockReceiptOrderDO stockReceiptOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockReceiptOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockReceiptOrderDomainService.queryList(stockReceiptOrderDO);
+ }
+
+ /**
+ * 修改收货单
+ */
+ public Boolean update(StockReceiptOrderDO stockReceiptOrderDO) {
+ return stockReceiptOrderDomainService.update(stockReceiptOrderDO);
+ }
+
+ /**
+ * 批量删除收货单
+ */
+ public boolean delete(Long[] receiptOrderIds) {
+ return stockReceiptOrderDomainService.delete(receiptOrderIds);
+ }
+
+ /**
+ * 获取收货单详细信息
+ */
+ public StockReceiptOrderPO getInfo(Long receiptOrderId)
+ {
+ StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(receiptOrderId);
+ ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO();
+ receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
+ List receiptMaterialDetailPOList = receiptMaterialDetailDomainService.queryListChildren(receiptMaterialDetailDO);
+ stockReceiptOrderPO.setMaterialDetailList(receiptMaterialDetailPOList);
+ return stockReceiptOrderPO;
+ }
+
+ /**
+ * 获取收货单详细信息
+ */
+ public StockReceiptOrderPO getInfoByApp(Long receiptOrderId)
+ {
+ return stockReceiptOrderDomainService.getInfoByApp(receiptOrderId);
+ }
+
+
+ /**
+ * @description 分配月台
+ * @author ZhouGY
+ * @date 2024/5/22 15:19
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean allocationPlatform(StockReceiptOrderDO stockReceiptOrderDO){
+ //封装月台信息
+ platformParam(stockReceiptOrderDO);
+ return stockReceiptOrderDomainService.allocationPlatform(stockReceiptOrderDO);
+ }
+
+ /**
+ * @description 释放月台
+ * @author ZhouGY
+ * @date 2024/5/22 15:19
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean releasePlatform(StockReceiptOrderDO stockReceiptOrderDO){
+ return stockReceiptOrderDomainService.releasePlatform(stockReceiptOrderDO);
+ }
+
+
+ /**
+ * @description 任务下发
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean taskDistribution(StockReceiptOrderDO stockReceiptOrderDO){
+ //设置作业人员信息
+ operatorsParam(stockReceiptOrderDO);
+ return stockReceiptOrderDomainService.taskDistribution(stockReceiptOrderDO);
+ }
+
+ /**
+ * @description 收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){
+ //收货装配参数
+ StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
+ return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
+ }
+
+ /**
+ * @description 收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean receivingGoodsByApp(StockReceiptOrderDO stockReceiptOrderDO){
+ List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
+ receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> {
+ List receiptMaterialDetailDOChildrenList1 = receiptMaterialDetailDO.getChildren();
+ ReceiptMaterialDetailDO receiptMaterialDetailDOChildren = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0);
+ receiptMaterialDetailDO.setMaterialDetailId(receiptMaterialDetailDOChildren.getMaterialDetailId());
+ receiptMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity());
+ receiptMaterialDetailDO.setMaterialStatusCode(receiptMaterialDetailDOChildren.getMaterialStatusCode());
+ receiptMaterialDetailDO.setBatchNumber(receiptMaterialDetailDOChildren.getBatchNumber());
+ receiptMaterialDetailDO.setContainerId(receiptMaterialDetailDOChildren.getContainerId());
+ receiptMaterialDetailDO.setLevel(receiptMaterialDetailDOChildren.getLevel());
+ receiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDOChildren.getMaterialMoreDetailList());
+ receiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChildren.getMaterialDetailSerialNumberList());
+ //只留二级
+ List receiptMaterialDetailDOChildrenList2 = receiptMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList());
+ receiptMaterialDetailDO.setChildren(receiptMaterialDetailDOChildrenList2);
+ });
+ //收货装配参数
+ StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
+ return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
+ }
+
+ /**
+ * @description 完成收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param receiptOrderId
+ * @return Boolean
+ */
+ public Boolean completeReceipt(Long receiptOrderId){
+ return stockReceiptOrderDomainService.completeReceipt(receiptOrderId);
+ }
+
+ public Boolean genStockShelfOrder(Long receiptOrderId){
+ return stockReceiptOrderDomainService.genStockShelfOrder(receiptOrderId);
+ }
+
+ /**
+ * @description 整单收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param receiptOrderIds
+ * @return Boolean
+ */
+ public Boolean entireReceipt(Long[] receiptOrderIds){
+ return stockReceiptOrderDomainService.entireReceipt(receiptOrderIds);
+ }
+
+ /**
+ * @description 无单收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean noOrderReceipt(StockReceiptOrderDO stockReceiptOrderDO){
+ //设置仓库
+ setWarehouseInfo(stockReceiptOrderDO);
+ //设置货主信息
+ shipperParam(stockReceiptOrderDO);
+ //设置供应商信息
+ supplierParam(stockReceiptOrderDO);
+ //收货装配参数
+ List receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
+ receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> {
+ List receiptMaterialDetailDOChildrenList1 = receiptMaterialDetailDO.getChildren();
+ ReceiptMaterialDetailDO receiptMaterialDetailDOChildren = receiptMaterialDetailDOChildrenList1.get(0);
+ receiptMaterialDetailDO.setMaterialDetailId(receiptMaterialDetailDOChildren.getMaterialDetailId());
+ receiptMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity());
+ receiptMaterialDetailDO.setMaterialStatusCode(receiptMaterialDetailDOChildren.getMaterialStatusCode());
+ receiptMaterialDetailDO.setBatchNumber(receiptMaterialDetailDOChildren.getBatchNumber());
+ receiptMaterialDetailDO.setContainerId(receiptMaterialDetailDOChildren.getContainerId());
+ receiptMaterialDetailDO.setLevel(receiptMaterialDetailDOChildren.getLevel());
+ receiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDOChildren.getMaterialMoreDetailList());
+ receiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChildren.getMaterialDetailSerialNumberList());
+ //只留二级
+ List receiptMaterialDetailDOChildrenList2 = new ArrayList<>();
+ for (int i = 0; i < receiptMaterialDetailDOChildrenList1.size(); i++){
+ if (i == 0){
+ continue;
+ }
+ receiptMaterialDetailDOChildrenList2.add(receiptMaterialDetailDOChildrenList1.get(i));
+ }
+ receiptMaterialDetailDO.setChildren(receiptMaterialDetailDOChildrenList2);
+ });
+ NoReceiptOrderDO noReceiptOrderDO = assembleParamByNoOrderReceipt(stockReceiptOrderDO);
+ return stockReceiptOrderDomainService.noOrderReceipt(noReceiptOrderDO);
+ }
+
+ /**
+ * @description 封装月台信息
+ * @author ZhouGY
+ * @date 2024/5/13 10:45
+ * @param stockReceiptOrderDO
+ */
+ private void platformParam(StockReceiptOrderDO stockReceiptOrderDO){
+ //封装月台信息
+ AjaxResult ajaxResult = systemServiceFeign.getPlatformInfoByPlatformId(stockReceiptOrderDO.getPlatformId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取月台信息失败");
+ }
+ PlatformFeignPO platformFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), PlatformFeignPO.class);
+ stockReceiptOrderDO.setPlatformCode(platformFeignPO.getPlatformCode());
+ stockReceiptOrderDO.setPlatformName(platformFeignPO.getPlatformName());
+
+ //封装月台使用时间信息
+ AjaxResult ajaxResult2 = systemServiceFeign.getPlatformUseTimeInfoByPlatformUseTimeId(stockReceiptOrderDO.getPlatformId());
+ if(!"200".equals(String.valueOf(ajaxResult2.get("code")))){
+ throw new ServiceException("获取月台使用时间信息失败");
+ }
+ PlatformUseTimeFeignPO platformUseTimeFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult2.get("data")), PlatformUseTimeFeignPO.class);
+ try {
+ stockReceiptOrderDO.setPlatformUseStartTime(DateUtils.parseDate(platformUseTimeFeignPO.getStartTime(), "HH:mm"));
+ stockReceiptOrderDO.setPlatformUseEndTime(DateUtils.parseDate(platformUseTimeFeignPO.getEndTime(), "HH:mm"));
+ } catch (ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockReceiptOrderDO
+ */
+ private void operatorsParam(StockReceiptOrderDO stockReceiptOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockReceiptOrderDO.setOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 收货装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ private StockReceiptOrderDO assembleParamByReceipt(StockReceiptOrderDO stockReceiptOrderDO) {
+ StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderDomainService.getInfo(stockReceiptOrderDO.getReceiptOrderId());
+ if (stockReceiptOrderPO == null){
+ throw new ServiceException("收货单不存在");
+ }
+ if (stockReceiptOrderPO.getStatus() > 2) {
+ throw new ServiceException("收货单已完成收货");
+ }
+ StockReceiptOrderDO returnStockReceiptOrderDO = new StockReceiptOrderDO();
+ returnStockReceiptOrderDO.setUpdateTime(stockReceiptOrderDO.getUpdateTime());
+ returnStockReceiptOrderDO.setReceiptOrderId(stockReceiptOrderPO.getReceiptOrderId());
+ returnStockReceiptOrderDO.setOrganizationId(stockReceiptOrderPO.getOrganizationId());
+ returnStockReceiptOrderDO.setOrganizationName(stockReceiptOrderPO.getOrganizationName());
+ returnStockReceiptOrderDO.setTopOrganizationId(stockReceiptOrderPO.getTopOrganizationId());
+ returnStockReceiptOrderDO.setWarehouseId(stockReceiptOrderPO.getWarehouseId());
+ returnStockReceiptOrderDO.setWarehouseCode(stockReceiptOrderPO.getWarehouseCode());
+ returnStockReceiptOrderDO.setWarehouseName(stockReceiptOrderPO.getWarehouseName());
+ returnStockReceiptOrderDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
+ returnStockReceiptOrderDO.setInOrderNumber(stockReceiptOrderPO.getInOrderNumber());
+ ReceiptMaterialDetailDO receiptMaterialDetailDOByQuery = new ReceiptMaterialDetailDO();
+ receiptMaterialDetailDOByQuery.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
+ List receiptMaterialDetailPODbList = receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDOByQuery);
+ Map receiptMaterialDetailDbMap = receiptMaterialDetailPODbList.stream().collect(Collectors.toMap(ReceiptMaterialDetailPO::getMaterialDetailId, Function.identity()));
+ BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
+ int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
+ List returnReceiptMaterialDetailDOList = new ArrayList<>();
+ for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){
+ //设置物料更多属性信息
+ ReceiptMaterialDetailPO receiptMaterialDetailPO = receiptMaterialDetailDbMap.get(receiptMaterialDetailDO.getMaterialDetailId());
+ if (receiptMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (receiptMaterialDetailDO.getReceiptQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行收货直接跳过
+ continue;
+ }
+ BigDecimal actualQuantity = BigDecimal.ZERO;//当前作业收货数
+ //判断收否收货 第一次收货创建 更多属性 序列号
+ if (receiptMaterialDetailPO.getReceiptQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //收货后 设置该记录不允许被修改
+ receiptMaterialDetailDO.setAllowModify(2);
+ //未收过货 统计到当前收货单作业收货数
+ actualQuantity = receiptMaterialDetailDO.getReceiptQuantity();
+ //设置物料状态及容器信息
+ setMaterialMoreDetailInfo(receiptMaterialDetailDO);
+ }
+ //判断是否存在子项
+ List returnReceiptMaterialDetailDOChildList = new ArrayList<>();
+ List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren();
+ if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){
+ for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){
+ ReceiptMaterialDetailPO receiptMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(receiptMaterialDetailDOChild.getMaterialDetailId());
+ if (receiptMaterialDetailPOChildDb != null){
+ continue;
+ }
+ ReceiptMaterialDetailDO returnReceiptMaterialDetailDOChild = new ReceiptMaterialDetailDO();
+ BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime",
+ "updateBy","updateByName","updateTime");
+ BeanUtils.copyProperties(receiptMaterialDetailDOChild, returnReceiptMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDOChild));
+ if (ObjectUtil.isNotNull(returnReceiptMaterialDetailDOChild.getMaterialDetailId()) && returnReceiptMaterialDetailDOChild.getMaterialDetailId() == 0){
+ returnReceiptMaterialDetailDOChild.setMaterialDetailId(null);
+ }
+ //收货后 设置该记录不允许被修改
+ returnReceiptMaterialDetailDOChild.setAllowModify(2);
+ returnReceiptMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ returnReceiptMaterialDetailDOChild.setLevel(2);
+ returnReceiptMaterialDetailDOChild.setParentUniqueId(receiptMaterialDetailPO.getUniqueId());
+ //设置物料状态及容器信息
+ setMaterialMoreDetailInfo(returnReceiptMaterialDetailDOChild);
+ //是否开启了序列号管理
+ if (receiptMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnReceiptMaterialDetailDOChild.setMaterialDetailSerialNumberList(receiptMaterialDetailDOChild.getMaterialDetailSerialNumberList());
+ returnReceiptMaterialDetailDOChild.setMaterialMoreDetailList(receiptMaterialDetailDOChild.getMaterialMoreDetailList());
+ returnReceiptMaterialDetailDOChildList.add(returnReceiptMaterialDetailDOChild);
+ actualQuantity = actualQuantity.add(returnReceiptMaterialDetailDOChild.getReceiptQuantity());
+ }
+ }
+ //已收货数量 = 已收货数量 + 当前作业数量
+ receiptMaterialDetailDO.setAlreadyReceiptQuantity(receiptMaterialDetailPO.getAlreadyReceiptQuantity().add(actualQuantity));
+ //记录本次收货单收货总数
+ totalActualQuantity = totalActualQuantity.add(actualQuantity);
+ //判断收货数量是否大于计划数量
+ Integer receiptStatus = judgeReceiptQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity(), receiptMaterialDetailPO.getQuantity());
+ receiptMaterialDetailDO.setReceiptStatus(receiptStatus);
+ if (receiptStatus > 2){
+ totalActualReceiptMaterialQuantity += 1;
+ }
+ ReceiptMaterialDetailDO returnReceiptMaterialDetailDO = new ReceiptMaterialDetailDO();
+ BeanUtils.copyProperties(receiptMaterialDetailPO, returnReceiptMaterialDetailDO);
+ BeanUtils.copyProperties(receiptMaterialDetailDO, returnReceiptMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(receiptMaterialDetailDO));
+ if (receiptMaterialDetailPO.getReceiptStatus() == 1){
+ //一级列表 首次收货
+ //是否开启了序列号管理
+ if (receiptMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + receiptMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(receiptMaterialDetailDO.getMaterialDetailSerialNumberList());
+ returnReceiptMaterialDetailDO.setMaterialMoreDetailList(receiptMaterialDetailDO.getMaterialMoreDetailList());
+ }else {
+ returnReceiptMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>());
+ returnReceiptMaterialDetailDO.setMaterialMoreDetailList(new ArrayList<>());
+ }
+ returnReceiptMaterialDetailDO.setChildren(returnReceiptMaterialDetailDOChildList);
+ returnReceiptMaterialDetailDOList.add(returnReceiptMaterialDetailDO);
+ }
+ returnStockReceiptOrderDO.setMaterialDetailList(returnReceiptMaterialDetailDOList);
+ returnStockReceiptOrderDO.setActualQuantity(totalActualQuantity);
+ returnStockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
+ return returnStockReceiptOrderDO;
+ }
+
+
+ /**
+ * @description 收货装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ private NoReceiptOrderDO assembleParamByNoOrderReceipt(StockReceiptOrderDO stockReceiptOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ NoReceiptOrderDO noReceiptOrderDO = new NoReceiptOrderDO();
+ stockReceiptOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
+ stockReceiptOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
+ stockReceiptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ stockReceiptOrderDO.setCreateBy(loginUser.getUserid());
+ stockReceiptOrderDO.setCreateByName(loginUser.getUsername());
+ stockReceiptOrderDO.setCreateTime(new Date());
+ stockReceiptOrderDO.setStatus(3);//已收货
+
+ //无单收货默认下发给自己
+ stockReceiptOrderDO.setOperatorsBy(SecurityUtils.getLoginUser().getUserid());
+ //设置作业人员信息
+ operatorsParam(stockReceiptOrderDO);
+ stockReceiptOrderDO.setTaskDistribution(2);
+ stockReceiptOrderDO.setTaskDistributionTime(new Date());
+ BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
+ int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
+ //出库单信息
+ StockInOrderDO stockInOrderDO = new StockInOrderDO();
+ BeanUtils.copyProperties(stockReceiptOrderDO, stockInOrderDO);
+ stockInOrderDO.setInOrderNumber(OrderSequence.getOrderCode("RK"));
+ stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
+ stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
+ stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ stockInOrderDO.setCreateBy(loginUser.getUserid());
+ stockInOrderDO.setCreateByName(loginUser.getUsername());
+ stockInOrderDO.setCreateTime(new Date());
+ stockInOrderDO.setOrderTypeCode("pu_tong_ru_ku_dan");
+ stockInOrderDO.setOrderTypeName("普通入库单");
+ stockInOrderDO.setPriorityLevelCode("zui_gao");
+ stockInOrderDO.setPriorityLevelName("最高");
+ stockInOrderDO.setDirectWarehouse(2);
+ stockInOrderDO.setStatus(4);//上架中
+ stockInOrderDO.setAuditStatus(3);
+ stockInOrderDO.setAuditBy(loginUser.getUserPo().getUserId());
+ stockInOrderDO.setAuditByName(loginUser.getUserPo().getUserName());
+ stockInOrderDO.setAuditTime(new Date());
+ stockInOrderDO.setOrderSource(3);
+ List inMaterialDetailDOList = new ArrayList<>();
+ for (ReceiptMaterialDetailDO receiptMaterialDetailDO : stockReceiptOrderDO.getMaterialDetailList()){
+ //设置物料基本信息
+ setMaterialDetailInfo(receiptMaterialDetailDO);
+ //设置物料更多属性信息
+ setMaterialMoreDetailInfo(receiptMaterialDetailDO);
+ //设置物料状态及容器信息
+ setMaterialMoreDetailInfo(receiptMaterialDetailDO);
+ InMaterialDetailDO inMaterialDetailDO = new InMaterialDetailDO();
+ BeanUtils.copyProperties(receiptMaterialDetailDO, inMaterialDetailDO);
+ inMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
+ inMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
+ inMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ inMaterialDetailDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ inMaterialDetailDO.setInOrderNumber(stockInOrderDO.getInOrderNumber());
+ inMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity());
+ inMaterialDetailDO.setReceiptQuantity(receiptMaterialDetailDO.getReceiptQuantity());
+ inMaterialDetailDO.setLevel(1);
+ inMaterialDetailDO.setCreateBy(loginUser.getUserid());
+ inMaterialDetailDO.setCreateByName(loginUser.getUsername());
+ inMaterialDetailDO.setCreateTime(new Date());
+
+ receiptMaterialDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
+ receiptMaterialDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
+ receiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ receiptMaterialDetailDO.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ receiptMaterialDetailDO.setReceiptOrderNumber(OrderSequence.getOrderCode("SH"));
+ receiptMaterialDetailDO.setLevel(1);
+ receiptMaterialDetailDO.setInUniqueId(inMaterialDetailDO.getUniqueId());
+ receiptMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity());
+ receiptMaterialDetailDO.setAlreadyReceiptQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity());
+ //设置物料更多属性信息
+ BigDecimal actualQuantity = receiptMaterialDetailDO.getReceiptQuantity();;//当前作业收货数
+ //判断是否存在子项
+ List receiptMaterialDetailDOChildList = receiptMaterialDetailDO.getChildren();
+ if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){
+ for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){
+ ReceiptMaterialDetailDO receiptMaterialDetailDOChildByCopy = new ReceiptMaterialDetailDO();
+ BeanUtils.copyProperties(receiptMaterialDetailDO, receiptMaterialDetailDOChildByCopy);
+ BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailDOChildByCopy);
+ receiptMaterialDetailDOChildByCopy.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ receiptMaterialDetailDOChildByCopy.setOrganizationId(loginUser.getUserPo().getOrganizationId());
+ receiptMaterialDetailDOChildByCopy.setOrganizationName(loginUser.getUserPo().getOrganizationName());
+ receiptMaterialDetailDOChildByCopy.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ receiptMaterialDetailDOChildByCopy.setReceiptOrderNumber(OrderSequence.getOrderCode("SH"));
+ receiptMaterialDetailDOChildByCopy.setLevel(2);
+ receiptMaterialDetailDOChildByCopy.setParentUniqueId(receiptMaterialDetailDO.getUniqueId());
+ receiptMaterialDetailDOChildByCopy.setInUniqueId(inMaterialDetailDO.getUniqueId());
+ receiptMaterialDetailDOChildByCopy.setQuantity(receiptMaterialDetailDOChild.getReceiptQuantity());
+ receiptMaterialDetailDOChildByCopy.setAlreadyReceiptQuantity(receiptMaterialDetailDOChild.getReceiptQuantity());
+ BeanUtils.copyProperties(receiptMaterialDetailDOChildByCopy, receiptMaterialDetailDOChild);
+ //是否开启了序列号管理
+ if (receiptMaterialDetailDO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ actualQuantity = actualQuantity.add(receiptMaterialDetailDOChild.getReceiptQuantity());
+ }
+ }
+ //已收货数量 = 当前作业数量
+ receiptMaterialDetailDO.setAlreadyReceiptQuantity(actualQuantity);
+ //记录本次收货单收货总数
+ totalActualQuantity = totalActualQuantity.add(actualQuantity);
+ receiptMaterialDetailDO.setReceiptStatus(3);
+ totalActualReceiptMaterialQuantity += 1;
+ //一级列表 首次收货
+ //是否开启了序列号管理
+ if (receiptMaterialDetailDO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(receiptMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + receiptMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ inMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getAlreadyReceiptQuantity());
+ inMaterialDetailDOList.add(inMaterialDetailDO);
+ }
+ stockReceiptOrderDO.setReceiptQuantity(totalActualQuantity);
+ stockReceiptOrderDO.setMaterialQuantity(totalActualReceiptMaterialQuantity);
+ stockReceiptOrderDO.setReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
+ stockReceiptOrderDO.setActualQuantity(totalActualQuantity);
+ stockReceiptOrderDO.setActualReceiptMaterialQuantity(totalActualReceiptMaterialQuantity);
+ stockReceiptOrderDO.setInOrderNumber(stockInOrderDO.getInOrderNumber());
+ stockInOrderDO.setQuantity(totalActualQuantity);
+ stockInOrderDO.setMaterialQuantity(totalActualReceiptMaterialQuantity);
+ stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
+ noReceiptOrderDO.setStockInOrderDO(stockInOrderDO);
+ noReceiptOrderDO.setStockReceiptOrderDO(stockReceiptOrderDO);
+ return noReceiptOrderDO;
+ }
+
+ /**
+ * @description 设置物料状态及容器信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param receiptMaterialDetailDO
+ */
+ private void setMaterialMoreDetailInfo(ReceiptMaterialDetailDO receiptMaterialDetailDO){
+
+ if(ObjectUtil.isNotNull(receiptMaterialDetailDO.getMaterialStatusCode())){
+//翻译物料状态
+ AjaxResult materialsStatusResult = systemServiceFeign.selectListByDictType(DictCode.MATERIALS_STATUS.getCode());
+ if (!"200".equals(String.valueOf(materialsStatusResult.get("code")))) {
+ throw new ServiceException("物料状态数据字典不存在");
+ }
+ List materialsStatusDataList = JSON.parseArray(JSONUtil.toJsonStr(materialsStatusResult.get("data")), SysDictData.class);
+
+ SysDictData materialsStatusData = materialsStatusDataList.stream().filter(info -> ObjectUtil.equal(info.getDictValue(), receiptMaterialDetailDO.getMaterialStatusCode())).findAny().orElse(null);
+ if (null == materialsStatusData) {
+ throw new ServiceException("物料状态【" + receiptMaterialDetailDO.getMaterialStatusCode() + "】数据字典不存在 请联系管理员");
+ }
+ receiptMaterialDetailDO.setMaterialStatusName(materialsStatusData.getDictLabel());
+ }
+
+ if (ObjectUtil.isNotNull(receiptMaterialDetailDO.getContainerId()) && 0 !=receiptMaterialDetailDO.getContainerId()){
+ //获取容器详情
+ AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(receiptMaterialDetailDO.getContainerId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取容器信息失败");
+ }
+ ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
+ receiptMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode());
+ receiptMaterialDetailDO.setContainerType(containerFeignPO.getContainerType());
+ receiptMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName());
+ }
+
+ }
+
+ /**
+ * @description 判断收货数量是否存在超收
+ * @author ZhouGY
+ * @date 2024/6/14 17:50
+ * @param quantity
+ * @param receiptQuantity
+ * @return Integer
+ */
+ private Integer judgeReceiptQuantity(BigDecimal receiptQuantity, BigDecimal quantity){
+ if (receiptQuantity.compareTo(quantity) > 0){
+ return 5;
+ } else if (receiptQuantity.compareTo(quantity) == 0) {
+ return 3;
+ } else {
+ return 2;
+ }
+ }
+
+ /**
+ * @description 设置仓库信息
+ * @author ZhouGY
+ * @date 2024/4/7 10:01
+ * @param stockReceiptOrderDO
+ */
+ private void setWarehouseInfo(StockReceiptOrderDO stockReceiptOrderDO) {
+ AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockReceiptOrderDO.getWarehouseId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取仓库信息失败");
+ }
+ WarehouseFeignPO warehouseFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), WarehouseFeignPO.class);
+ stockReceiptOrderDO.setWarehouseCode(warehouseFeignPO.getWarehouseCode());
+ stockReceiptOrderDO.setWarehouseName(warehouseFeignPO.getWarehouseName());
+ }
+
+ /**
+ * @description 封装货主信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockReceiptOrderDO
+ */
+ private void shipperParam(StockReceiptOrderDO stockReceiptOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getShipperId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取货主信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockReceiptOrderDO.setShipperCode(userPo.getUserMemberCode());
+ stockReceiptOrderDO.setShipperName(userPo.getUserName());
+ }
+
+ /**
+ * @description 封装供应商信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockReceiptOrderDO
+ */
+ private void supplierParam(StockReceiptOrderDO stockReceiptOrderDO){
+ if(ObjectUtil.isNull(stockReceiptOrderDO.getSupplierId())){
+ return;
+ }
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockReceiptOrderDO.getSupplierId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取供应商信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockReceiptOrderDO.setSupplierName(userPo.getUserName());
+ }
+
+ /**
+ * @description 设置物料信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param receiptMaterialDetailDO
+ */
+ private void setMaterialDetailInfo(ReceiptMaterialDetailDO receiptMaterialDetailDO){
+ MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoService.getInfo(receiptMaterialDetailDO.getMaterialBaseInfoId());
+ if (materialBaseInfoPO == null){
+ throw new ServiceException("物料基础信息不存在");
+ }
+ receiptMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode());
+ receiptMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName());
+ receiptMaterialDetailDO.setBarCode(materialBaseInfoPO.getBarCode());
+ receiptMaterialDetailDO.setPackId(materialBaseInfoPO.getPackId());
+ receiptMaterialDetailDO.setPackCode(materialBaseInfoPO.getPackCode());
+ receiptMaterialDetailDO.setPackName(materialBaseInfoPO.getPackName());
+
+ //获取包装详情
+ AjaxResult packDetailResult = systemServiceFeign.getInfoByPackIdAndUnitCode(materialBaseInfoPO.getPackId(), "EA");
+ if(!"200".equals(String.valueOf(packDetailResult.get("code")))){
+ throw new ServiceException("获取物料单位EA信息失败");
+ }
+ PackDetailFeignPO packDetailFeignPO = JSON.parseObject(JSONObject.toJSONString(packDetailResult.get("data")), PackDetailFeignPO.class);
+ receiptMaterialDetailDO.setPackDetailId(packDetailFeignPO.getPackDetailId());
+ receiptMaterialDetailDO.setUnitCode(packDetailFeignPO.getUnitCode());
+ receiptMaterialDetailDO.setUnitName(packDetailFeignPO.getName());
+ receiptMaterialDetailDO.setUnitNumber(packDetailFeignPO.getNumber());
+
+ //获取仓库控制信息
+ MaterialWarehouseControlPO materialWarehouseControlPO = materialWarehouseControlService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId());
+ if (materialWarehouseControlPO == null){
+ throw new ServiceException("物料仓库控制信息不存在");
+ }
+ receiptMaterialDetailDO.setMaterialWarehouseControlId(materialWarehouseControlPO.getMaterialWarehouseControlId());
+ receiptMaterialDetailDO.setSerialNumberManage(materialWarehouseControlPO.getSerialNumberManage());
+ receiptMaterialDetailDO.setQualityInspectionManage(materialWarehouseControlPO.getQualityInspectionManage());
+ receiptMaterialDetailDO.setQualityInspectionStage(materialWarehouseControlPO.getQualityInspectionStage());
+ receiptMaterialDetailDO.setQualityInspectionRule(materialWarehouseControlPO.getQualityInspectionRule());
+ receiptMaterialDetailDO.setQualityInspectionTerm(materialWarehouseControlPO.getQualityInspectionTerm());
+ receiptMaterialDetailDO.setAllowOvercharge(materialWarehouseControlPO.getAllowOvercharge());
+ receiptMaterialDetailDO.setOverchargeRatio(materialWarehouseControlPO.getOverchargeRatio());
+
+ //获取商品规则信息
+ MaterialGoodsRulePO materialGoodsRulePO = materialGoodsRuleService.getInfoByMaterialBaseInfoIds(materialBaseInfoPO.getMaterialBaseInfoId());
+ if (materialGoodsRulePO == null){
+ throw new ServiceException("物料商品规则信息不存在");
+ }
+ receiptMaterialDetailDO.setDistributeRuleId(materialGoodsRulePO.getMaterialGoodsRuleId());
+ receiptMaterialDetailDO.setDistributeRuleCode(materialGoodsRulePO.getRuleCode());
+ receiptMaterialDetailDO.setDistributeRuleName(materialGoodsRulePO.getRuleName());
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java
new file mode 100644
index 000000000..e9e059efe
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java
@@ -0,0 +1,381 @@
+package com.mhd.wms.application.service.stockShelfOrder;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.mhd.common.core.constant.SnowFlakeConstants;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.utils.IgnoreNullUtil;
+import com.mhd.common.core.utils.bean.BeanUtils;
+import com.mhd.common.core.utils.uuid.IdGenerator;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.UserServiceFeign;
+import com.mhd.system.api.domain.ContainerFeignPO;
+import com.mhd.system.api.domain.StorageLocationFeignPO;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
+import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
+import com.mhd.wms.domain.shelfMaterialDetail.service.ShelfMaterialDetailDomainService;
+import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
+import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
+import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 上架单ApplicationService
+ *
+ * @author gen
+ * @date 2024-05-21
+ */
+@Service
+@Slf4j
+public class StockShelfOrderApplicationService {
+ @Autowired
+ private StockShelfOrderDomainService stockShelfOrderDomainService;
+ @Autowired
+ private ShelfMaterialDetailDomainService shelfMaterialDetailDomainService;
+ @Autowired
+ private UserServiceFeign userServiceFeign;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+ @Autowired
+ private IdGenerator idGenerator;
+
+
+ /**
+ * 分页查询上架单列表
+ */
+
+ public List queryList(StockShelfOrderDO stockShelfOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ stockShelfOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ stockShelfOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return stockShelfOrderDomainService.queryList(stockShelfOrderDO);
+ }
+
+
+ /**
+ * 新增上架单
+ */
+ public Boolean insert(StockShelfOrderDO stockShelfOrderDO) {
+
+ return stockShelfOrderDomainService.insert(stockShelfOrderDO);
+ }
+
+ /**
+ * 修改上架单
+ */
+ public Boolean update(StockShelfOrderDO stockShelfOrderDO) {
+ return stockShelfOrderDomainService.update(stockShelfOrderDO);
+ }
+
+ /**
+ * 批量删除上架单
+ */
+ public boolean delete(Long[] shelfOrderIds) {
+ return stockShelfOrderDomainService.delete(shelfOrderIds);
+ }
+
+ /**
+ * 获取上架单详细信息
+ */
+ public StockShelfOrderPO getInfo(Long shelfOrderId)
+ {
+ return stockShelfOrderDomainService.getInfo(shelfOrderId);
+ }
+
+ /**
+ * 获取上架单详细信息
+ */
+ public StockShelfOrderPO getInfoByApp(Long shelfOrderId) {
+ return stockShelfOrderDomainService.getInfoByApp(shelfOrderId);
+ }
+
+ /**
+ * @description 任务下发
+ * @author ZhouGY
+ * @date 2024/5/22 17:13
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean taskDistribution(StockShelfOrderDO stockReceiptOrderDO){
+ //设置作业人员信息
+ operatorsParam(stockReceiptOrderDO);
+ return stockShelfOrderDomainService.taskDistribution(stockReceiptOrderDO);
+ }
+
+
+ /**
+ * @description 上架
+ * @author ZhouGY
+ * @date 2024/5/22 17:13
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean upShelf(StockShelfOrderDO stockReceiptOrderDO){
+ //上架装配参数
+ StockShelfOrderDO assembleStockShelfOrderDO = assembleParamByShelf(stockReceiptOrderDO);
+ return stockShelfOrderDomainService.upShelf(assembleStockShelfOrderDO);
+ }
+
+ /**
+ * @description 收货
+ * @author ZhouGY
+ * @date 2024/5/22 16:20
+ * @param stockReceiptOrderDO
+ * @return Boolean
+ */
+ public Boolean upShelfByApp(StockShelfOrderDO stockReceiptOrderDO){
+ List shelfMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
+ shelfMaterialDetailDOList.forEach(shelfMaterialDetailDO -> {
+ List shelfMaterialDetailDOChildrenList1 = shelfMaterialDetailDO.getChildren();
+ ShelfMaterialDetailDO shelfMaterialDetailDOChildren = shelfMaterialDetailDOChildrenList1.stream().filter(p -> 1 == p.getLevel()).collect(Collectors.toList()).get(0);
+ shelfMaterialDetailDO.setMaterialDetailId(shelfMaterialDetailDOChildren.getMaterialDetailId());
+ shelfMaterialDetailDO.setShelvesQuantity(shelfMaterialDetailDOChildren.getShelvesQuantity());
+ shelfMaterialDetailDO.setWarehouseId(shelfMaterialDetailDOChildren.getWarehouseId());
+ shelfMaterialDetailDO.setStorageSectionId(shelfMaterialDetailDOChildren.getStorageSectionId());
+ shelfMaterialDetailDO.setStorageLocationId(shelfMaterialDetailDOChildren.getStorageLocationId());
+ shelfMaterialDetailDO.setContainerId(shelfMaterialDetailDOChildren.getContainerId());
+ shelfMaterialDetailDO.setLevel(shelfMaterialDetailDOChildren.getLevel());
+ shelfMaterialDetailDO.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChildren.getMaterialDetailSerialNumberList());
+ //只留二级
+ List shelfMaterialDetailDOChildrenList2 = shelfMaterialDetailDOChildrenList1.stream().filter(p -> 2 == p.getLevel()).collect(Collectors.toList());
+ shelfMaterialDetailDO.setChildren(shelfMaterialDetailDOChildrenList2);
+ });
+ //上架装配参数
+ StockShelfOrderDO assembleStockShelfOrderDO = assembleParamByShelf(stockReceiptOrderDO);
+ return stockShelfOrderDomainService.upShelf(assembleStockShelfOrderDO);
+ }
+
+
+ /**
+ * @description 完成上架
+ * @author ZhouGY
+ * @date 2024/5/22 17:13
+ * @param shelfOrderId
+ * @return Boolean
+ */
+ public Boolean completeUpShelf(Long shelfOrderId){
+ return stockShelfOrderDomainService.completeUpShelf(shelfOrderId);
+ }
+
+ /**
+ * @description 封装作业人员信息
+ * @author ZhouGY
+ * @date 2024/5/9 20:43
+ * @param stockShelfOrderDO
+ */
+ private void operatorsParam(StockShelfOrderDO stockShelfOrderDO){
+ AjaxResult ajaxResult = userServiceFeign.getInfo(stockShelfOrderDO.getOperatorsBy());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取作业人员信息失败");
+ }
+ UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
+ stockShelfOrderDO.setOperatorsName(userPo.getUserName());
+ }
+
+ /**
+ * @description 收货装配参数
+ * @author ZhouGY
+ * @date 2024/5/22 9:27
+ * @param stockShelfOrderDO
+ * @return Boolean
+ */
+ private StockShelfOrderDO assembleParamByShelf(StockShelfOrderDO stockShelfOrderDO) {
+ StockShelfOrderPO stockShelfOrderPO = stockShelfOrderDomainService.getInfo(stockShelfOrderDO.getShelfOrderId());
+ if (stockShelfOrderPO == null){
+ throw new ServiceException("上架单不存在");
+ }
+ if (stockShelfOrderPO.getStatus() > 2) {
+ throw new ServiceException("上架单已完成上架");
+ }
+ StockShelfOrderDO returnStockShelfOrderDO = new StockShelfOrderDO();
+ BeanUtils.copyProperties(stockShelfOrderDO, returnStockShelfOrderDO);
+ returnStockShelfOrderDO.setShelfOrderId(stockShelfOrderPO.getShelfOrderId());
+ returnStockShelfOrderDO.setUpdateTime(stockShelfOrderDO.getUpdateTime());
+ returnStockShelfOrderDO.setOrganizationId(stockShelfOrderPO.getOrganizationId());
+ returnStockShelfOrderDO.setOrganizationName(stockShelfOrderPO.getOrganizationName());
+ returnStockShelfOrderDO.setTopOrganizationId(stockShelfOrderPO.getTopOrganizationId());
+ returnStockShelfOrderDO.setWarehouseId(stockShelfOrderPO.getWarehouseId());
+ returnStockShelfOrderDO.setWarehouseCode(stockShelfOrderPO.getWarehouseCode());
+ returnStockShelfOrderDO.setWarehouseName(stockShelfOrderPO.getWarehouseName());
+ returnStockShelfOrderDO.setInOrderNumber(stockShelfOrderPO.getInOrderNumber());
+ returnStockShelfOrderDO.setReceiptOrderNumber(stockShelfOrderPO.getReceiptOrderNumber());
+ returnStockShelfOrderDO.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber());
+ ShelfMaterialDetailDO shelfMaterialDetailDOByQuery = new ShelfMaterialDetailDO();
+ shelfMaterialDetailDOByQuery.setShelfOrderNumber(stockShelfOrderPO.getShelfOrderNumber());
+ List shelfMaterialDetailPODbList = shelfMaterialDetailDomainService.queryList(shelfMaterialDetailDOByQuery);
+ Map receiptMaterialDetailDbMap = shelfMaterialDetailPODbList.stream().collect(Collectors.toMap(ShelfMaterialDetailPO::getMaterialDetailId, Function.identity()));
+ BigDecimal totalActualQuantity = BigDecimal.ZERO;//上架单当前作业收货数
+ int totalActualShelfMaterialQuantity = 0;//上架单收货物料种数
+ List returnShelfMaterialDetailDOList = new ArrayList<>();
+ for (ShelfMaterialDetailDO shelfMaterialDetailDO : stockShelfOrderDO.getMaterialDetailList()){
+ //设置物料更多属性信息
+ ShelfMaterialDetailPO shelfMaterialDetailPO = receiptMaterialDetailDbMap.get(shelfMaterialDetailDO.getMaterialDetailId());
+ if (shelfMaterialDetailPO == null){
+ throw new ServiceException("物料明细不存在");
+ }
+ if (shelfMaterialDetailDO.getShelvesQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //未进行上架直接跳过
+ continue;
+ }
+ BigDecimal actualQuantity = BigDecimal.ZERO;//当前作业上架数
+ //判断收否上架 第一次收货创建 更多属性 序列号
+ if (shelfMaterialDetailPO.getShelvesQuantity().compareTo(BigDecimal.ZERO) == 0){
+ //设置上架信息
+ setStorageLocationInfo(shelfMaterialDetailDO);
+ //设置容器信息
+ setContainerInfo(shelfMaterialDetailDO);
+ //上架后 设置该记录不允许被修改
+ shelfMaterialDetailDO.setAllowModify(2);
+ //未上过架 统计到当前收货单作业收货数
+ actualQuantity = shelfMaterialDetailDO.getShelvesQuantity();
+ }
+ //判断是否存在子项
+ List returnShelfMaterialDetailDOChildList = new ArrayList<>();
+ List shelfMaterialDetailDOChildList = shelfMaterialDetailDO.getChildren();
+ if (!CollectionUtils.isEmpty(shelfMaterialDetailDOChildList)){
+ for (ShelfMaterialDetailDO shelfMaterialDetailDOChild : shelfMaterialDetailDOChildList){
+ ShelfMaterialDetailPO shelfMaterialDetailPOChildDb = receiptMaterialDetailDbMap.get(shelfMaterialDetailDOChild.getMaterialDetailId());
+ if (shelfMaterialDetailPOChildDb != null){
+ continue;
+ }
+ ShelfMaterialDetailDO returnShelfMaterialDetailDOChild = new ShelfMaterialDetailDO();
+ BeanUtils.copyProperties(shelfMaterialDetailPO, returnShelfMaterialDetailDOChild, "materialDetailId","createBy","createByName","createTime",
+ "updateBy","updateByName","updateTime");
+ BeanUtils.copyProperties(shelfMaterialDetailDOChild, returnShelfMaterialDetailDOChild, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetailDOChild));
+ //设置上架信息
+ setStorageLocationInfo(shelfMaterialDetailDOChild);
+ //设置容器信息
+ setContainerInfo(returnShelfMaterialDetailDOChild);
+ //上架后 设置该记录不允许被修改
+ shelfMaterialDetailDO.setAllowModify(2);
+ returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDOChild.getMaterialDetailSerialNumberList());
+ returnShelfMaterialDetailDOChild.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
+ returnShelfMaterialDetailDOChild.setLevel(2);
+ returnShelfMaterialDetailDOChild.setParentUniqueId(shelfMaterialDetailPO.getUniqueId());
+ //是否开启了序列号管理
+ if (shelfMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(shelfMaterialDetailPO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + shelfMaterialDetailPO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnShelfMaterialDetailDOChild.setMaterialDetailSerialNumberList(shelfMaterialDetailDO.getMaterialDetailSerialNumberList());
+ returnShelfMaterialDetailDOChildList.add(returnShelfMaterialDetailDOChild);
+ actualQuantity = actualQuantity.add(returnShelfMaterialDetailDOChild.getShelvesQuantity());
+ }
+ }
+ //现在已上架数量=之前已上架数量+现在作业数量
+ shelfMaterialDetailDO.setAlreadyShelvesQuantity(shelfMaterialDetailPO.getAlreadyShelvesQuantity().add(actualQuantity));
+ //记录本次上架单上架总数
+ totalActualQuantity = totalActualQuantity.add(actualQuantity);
+ //判断上架数量是否大于计划数量
+ Integer shelvesStatus = judgeShelfQuantity(shelfMaterialDetailDO.getAlreadyShelvesQuantity(), shelfMaterialDetailPO.getQuantity());
+ shelfMaterialDetailDO.setShelvesStatus(shelvesStatus);
+ if (shelvesStatus > 2){
+ totalActualShelfMaterialQuantity += 1;
+ }
+ ShelfMaterialDetailDO returnShelfMaterialDetailDO = new ShelfMaterialDetailDO();
+ BeanUtils.copyProperties(shelfMaterialDetailPO, returnShelfMaterialDetailDO);
+ BeanUtils.copyProperties(shelfMaterialDetailDO, returnShelfMaterialDetailDO, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetailDO));
+ if (shelfMaterialDetailPO.getShelvesStatus() == 1){
+ //首次上架
+ //是否开启了序列号管理
+ if (shelfMaterialDetailPO.getSerialNumberManage() == 1){
+ if (CollectionUtils.isEmpty(shelfMaterialDetailDO.getMaterialDetailSerialNumberList())){
+ throw new ServiceException("物料【" + shelfMaterialDetailDO.getMaterialName() + "】开启了序列号管理的序列号不能为空");
+ }
+ }
+ returnShelfMaterialDetailDO.setMaterialDetailSerialNumberList(shelfMaterialDetailDO.getMaterialDetailSerialNumberList());
+ }else {
+ returnShelfMaterialDetailDO.setMaterialDetailSerialNumberList(new ArrayList<>());
+ }
+ returnShelfMaterialDetailDO.setChildren(returnShelfMaterialDetailDOChildList);
+ returnShelfMaterialDetailDOList.add(returnShelfMaterialDetailDO);
+ }
+ returnStockShelfOrderDO.setMaterialDetailList(returnShelfMaterialDetailDOList);
+ returnStockShelfOrderDO.setActualQuantity(totalActualQuantity);
+ returnStockShelfOrderDO.setActualReceiptMaterialQuantity(totalActualShelfMaterialQuantity);
+ return returnStockShelfOrderDO;
+ }
+
+ /**
+ * @description 设置上架库位信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param shelfMaterialDetailDO
+ */
+ private void setStorageLocationInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){
+ AjaxResult storageLocationResult = systemServiceFeign.getStorageLocationInfoByStorageLocationId(shelfMaterialDetailDO.getStorageLocationId());
+ if(!"200".equals(String.valueOf(storageLocationResult.get("code")))){
+ throw new ServiceException("获取上架库位信息失败");
+ }
+ StorageLocationFeignPO storageLocationFeignPO = JSON.parseObject(JSONObject.toJSONString(storageLocationResult.get("data")), StorageLocationFeignPO.class);
+ shelfMaterialDetailDO.setWarehouseId(storageLocationFeignPO.getWarehouseId());
+ shelfMaterialDetailDO.setWarehouseCode(storageLocationFeignPO.getWarehouseCode());
+ shelfMaterialDetailDO.setWarehouseName(storageLocationFeignPO.getWarehouseName());
+ shelfMaterialDetailDO.setStorageSectionId(storageLocationFeignPO.getStorageSectionId());
+ shelfMaterialDetailDO.setStorageCode(storageLocationFeignPO.getStorageCode());
+ shelfMaterialDetailDO.setStorageName(storageLocationFeignPO.getStorageName());
+ shelfMaterialDetailDO.setStorageLocationId(storageLocationFeignPO.getStorageLocationId());
+ shelfMaterialDetailDO.setStorageLocationCode(storageLocationFeignPO.getStorageLocationCode());
+ shelfMaterialDetailDO.setStorageLocationName(storageLocationFeignPO.getStorageLocationName());
+ }
+
+ /**
+ * @description 设置物料状态及容器信息
+ * @author ZhouGY
+ * @date 2024/5/23 14:03
+ * @param shelfMaterialDetailDO
+ */
+ private void setContainerInfo(ShelfMaterialDetailDO shelfMaterialDetailDO){
+
+ //获取容器详情
+ AjaxResult ajaxResult = systemServiceFeign.getContainerInfoByContainerId(shelfMaterialDetailDO.getContainerId());
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("获取容器信息失败");
+ }
+ ContainerFeignPO containerFeignPO = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), ContainerFeignPO.class);
+ shelfMaterialDetailDO.setContainerCode(containerFeignPO.getContainerCode());
+ shelfMaterialDetailDO.setContainerType(containerFeignPO.getContainerType());
+ shelfMaterialDetailDO.setContainerTypeName(containerFeignPO.getContainerTypeName());
+ }
+
+ /**
+ * @description 判断上架数量是否存在超收
+ * @author ZhouGY
+ * @date 2024/6/14 17:50
+ * @param quantity
+ * @param shelfQuantity
+ * @return Integer
+ */
+ private Integer judgeShelfQuantity(BigDecimal shelfQuantity, BigDecimal quantity){
+ if (shelfQuantity.compareTo(quantity) > 0){
+ return 5;
+ } else if (shelfQuantity.compareTo(quantity) == 0) {
+ return 3;
+ } else {
+ return 2;
+ }
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java
new file mode 100644
index 000000000..ab26bdc7f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskReceiptMaterialDetail/TaskReceiptMaterialDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.taskReceiptMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.po.TaskReceiptMaterialDetailPO;
+import com.mhd.wms.domain.taskReceiptMaterialDetail.repository.todo.TaskReceiptMaterialDetailDO;
+import com.mhd.wms.domain.taskReceiptMaterialDetail.service.TaskReceiptMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 收货作业单物料详情ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-19
+ */
+@Service
+@Slf4j
+public class TaskReceiptMaterialDetailApplicationService {
+ @Autowired
+ private TaskReceiptMaterialDetailDomainService taskReceiptMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询收货作业单物料详情列表
+ */
+
+ public List queryList(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ taskReceiptMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return taskReceiptMaterialDetailDomainService.queryList(taskReceiptMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增收货作业单物料详情
+ */
+ public Boolean insert(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) {
+
+ return taskReceiptMaterialDetailDomainService.insert(taskReceiptMaterialDetailDO);
+ }
+
+ /**
+ * 修改收货作业单物料详情
+ */
+ public Boolean update(TaskReceiptMaterialDetailDO taskReceiptMaterialDetailDO) {
+ return taskReceiptMaterialDetailDomainService.update(taskReceiptMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除收货作业单物料详情
+ */
+ public boolean delete(Long[] materialDetailIds) {
+ return taskReceiptMaterialDetailDomainService.delete(materialDetailIds);
+ }
+
+ /**
+ * 获取收货作业单物料详情详细信息
+ */
+ public TaskReceiptMaterialDetailPO getInfo(Long materialDetailId)
+ {
+ return taskReceiptMaterialDetailDomainService.getInfo(materialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java
new file mode 100644
index 000000000..0a361b276
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/taskShelfMaterialDetail/TaskShelfMaterialDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.taskShelfMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.taskShelfMaterialDetail.repository.po.TaskShelfMaterialDetailPO;
+import com.mhd.wms.domain.taskShelfMaterialDetail.repository.todo.TaskShelfMaterialDetailDO;
+import com.mhd.wms.domain.taskShelfMaterialDetail.service.TaskShelfMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 上架作业物料详情ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-19
+ */
+@Service
+@Slf4j
+public class TaskShelfMaterialDetailApplicationService {
+ @Autowired
+ private TaskShelfMaterialDetailDomainService taskShelfMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询上架作业物料详情列表
+ */
+
+ public List queryList(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ taskShelfMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return taskShelfMaterialDetailDomainService.queryList(taskShelfMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增上架作业物料详情
+ */
+ public Boolean insert(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) {
+
+ return taskShelfMaterialDetailDomainService.insert(taskShelfMaterialDetailDO);
+ }
+
+ /**
+ * 修改上架作业物料详情
+ */
+ public Boolean update(TaskShelfMaterialDetailDO taskShelfMaterialDetailDO) {
+ return taskShelfMaterialDetailDomainService.update(taskShelfMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除上架作业物料详情
+ */
+ public boolean delete(Long[] materialDetailIds) {
+ return taskShelfMaterialDetailDomainService.delete(materialDetailIds);
+ }
+
+ /**
+ * 获取上架作业物料详情详细信息
+ */
+ public TaskShelfMaterialDetailPO getInfo(Long materialDetailId)
+ {
+ return taskShelfMaterialDetailDomainService.getInfo(materialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java
new file mode 100644
index 000000000..755b041a7
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/userCommonSettings/UserCommonSettingsApplicationService.java
@@ -0,0 +1,129 @@
+package com.mhd.wms.application.service.userCommonSettings;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.service.CommonSettingsDomainService;
+import com.mhd.wms.domain.userCommonSettings.repository.po.UserCommonSettingsPO;
+import com.mhd.wms.domain.userCommonSettings.repository.todo.UserCommonSettingsDO;
+import com.mhd.wms.domain.userCommonSettings.service.UserCommonSettingsDomainService;
+import com.mhd.wms.interfaces.dto.userCommonSettings.UserCommonSettingsAddDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 用户常用设置关联ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+@Service
+@Slf4j
+public class UserCommonSettingsApplicationService {
+ @Autowired
+ private UserCommonSettingsDomainService userCommonSettingsDomainService;
+ @Autowired
+ private CommonSettingsDomainService commonSettingsDomainService;
+
+ /**
+ * 分页查询用户常用设置关联列表
+ */
+
+ public List queryList(UserCommonSettingsDO userCommonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ userCommonSettingsDO.setUserId(loginUser.getUserid());
+ }
+ }
+ return userCommonSettingsDomainService.queryList(userCommonSettingsDO);
+ }
+
+
+ /**
+ * 新增用户常用设置关联
+ */
+ public Boolean insert(UserCommonSettingsDO userCommonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ deleteByUserId(loginUser.getUserid());
+ List commonSettingsIddList=userCommonSettingsDO.getUserCommonSettingsAddDTOList();
+ Boolean isTrue=true;
+ for (UserCommonSettingsAddDTO userCommonSettingsAddDTO:commonSettingsIddList){
+
+ CommonSettingsPO commonSettings=commonSettingsDomainService.getInfo(userCommonSettingsAddDTO.getCommonSettingsId());
+ if(ObjectUtil.isNotNull(commonSettings)){
+ UserCommonSettingsDO userCommonSettingsDO1=new UserCommonSettingsDO();
+ userCommonSettingsDO1.setUserId(loginUser.getUserid());
+ userCommonSettingsDO1.setCommonSettingsId(userCommonSettingsAddDTO.getCommonSettingsId());
+ userCommonSettingsDO1.setName(commonSettings.getName());
+ userCommonSettingsDO1.setRoute(commonSettings.getRoute());
+ userCommonSettingsDO1.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ userCommonSettingsDO1.setCreateBy(loginUser.getUserid());
+ userCommonSettingsDO1.setCreateByName(loginUser.getUsername());
+ userCommonSettingsDO1.setCreateTime(new Date());
+ userCommonSettingsDO1.setUpdateBy(loginUser.getUserid());
+ userCommonSettingsDO1.setUpdateByName(loginUser.getUsername());
+ userCommonSettingsDO1.setUpdateTime(new Date());
+ userCommonSettingsDO1.setDelFlag(1);
+ userCommonSettingsDO1.setIsSettings(userCommonSettingsAddDTO.getIsSettings());
+ boolean isFalse=userCommonSettingsDomainService.insert(userCommonSettingsDO1);
+ if(isFalse=false){
+ isTrue=false;
+ }
+ }
+ }
+
+ return isTrue;
+ }
+
+ /**
+ * 修改用户常用设置关联
+ */
+ public Boolean update(UserCommonSettingsDO userCommonSettingsDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ userCommonSettingsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ //deleteByUserId(loginUser.getUserid());
+ return userCommonSettingsDomainService.update(userCommonSettingsDO);
+ }
+
+ /**
+ * 批量删除用户常用设置关联
+ */
+ public boolean delete(Long[] userCommonSettingsIds) {
+ return userCommonSettingsDomainService.delete(userCommonSettingsIds);
+ }
+
+ /**
+ * 获取用户常用设置关联详细信息
+ */
+ public UserCommonSettingsPO getInfo(Long userCommonSettingsId)
+ {
+ return userCommonSettingsDomainService.getInfo(userCommonSettingsId);
+ }
+
+ /**
+ * 根据用户id批量删除用户常用设置关联
+ */
+ public boolean deleteByUserId(Long userId) {
+ return userCommonSettingsDomainService.deleteByUserId(userId);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java
new file mode 100644
index 000000000..aaedccfc4
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveMaterialDetail/WaveMaterialDetailApplicationService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.application.service.waveMaterialDetail;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.waveMaterialDetail.repository.po.WaveMaterialDetailPO;
+import com.mhd.wms.domain.waveMaterialDetail.repository.todo.WaveMaterialDetailDO;
+import com.mhd.wms.domain.waveMaterialDetail.service.WaveMaterialDetailDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 出库单物料明细ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-27
+ */
+@Service
+@Slf4j
+public class WaveMaterialDetailApplicationService {
+ @Autowired
+ private WaveMaterialDetailDomainService waveMaterialDetailDomainService;
+
+
+ /**
+ * 分页查询出库单物料明细列表
+ */
+
+ public List queryList(WaveMaterialDetailDO waveMaterialDetailDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ waveMaterialDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return waveMaterialDetailDomainService.queryList(waveMaterialDetailDO);
+ }
+
+
+ /**
+ * 新增出库单物料明细
+ */
+ public Boolean insert(WaveMaterialDetailDO waveMaterialDetailDO) {
+
+ return waveMaterialDetailDomainService.insert(waveMaterialDetailDO);
+ }
+
+ /**
+ * 修改出库单物料明细
+ */
+ public Boolean update(WaveMaterialDetailDO waveMaterialDetailDO) {
+ return waveMaterialDetailDomainService.update(waveMaterialDetailDO);
+ }
+
+ /**
+ * 批量删除出库单物料明细
+ */
+ public boolean delete(Long[] materialDetailIds) {
+ return waveMaterialDetailDomainService.delete(materialDetailIds);
+ }
+
+ /**
+ * 获取出库单物料明细详细信息
+ */
+ public WaveMaterialDetailPO getInfo(Long materialDetailId)
+ {
+ return waveMaterialDetailDomainService.getInfo(materialDetailId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java
new file mode 100644
index 000000000..6dcaa7ef5
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveOrder/WaveOrderApplicationService.java
@@ -0,0 +1,121 @@
+package com.mhd.wms.application.service.waveOrder;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
+import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.waveOrder.repository.po.WaveOrderPO;
+import com.mhd.wms.domain.waveOrder.repository.todo.WaveOrderDO;
+import com.mhd.wms.domain.waveOrder.service.WaveOrderDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 波次单ApplicationService
+ *
+ * @author gen
+ * @date 2024-06-04
+ */
+@Service
+@Slf4j
+public class WaveOrderApplicationService {
+ @Autowired
+ private WaveOrderDomainService waveOrderDomainService;
+
+
+ /**
+ * 分页查询波次单列表
+ */
+
+ public List queryList(WaveOrderDO waveOrderDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ waveOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ AssociationWarehouseCacheDO associationWarehouseCacheDO = SystemServiceCacheUtil.getAssociationWarehouseCache(loginUser.getUserid());
+ waveOrderDO.setWarehouseId(associationWarehouseCacheDO.getWarehouseId());
+ }
+ return waveOrderDomainService.queryList(waveOrderDO);
+ }
+
+
+ /**
+ * 新增波次单
+ */
+ public Boolean insert(WaveOrderDO waveOrderDO) {
+
+ return waveOrderDomainService.insert(waveOrderDO);
+ }
+
+ /**
+ * 修改波次单
+ */
+ public Boolean update(WaveOrderDO waveOrderDO) {
+ return waveOrderDomainService.update(waveOrderDO);
+ }
+
+ /**
+ * 批量删除波次单
+ */
+ public boolean delete(Long[] waveOrderIds) {
+ return waveOrderDomainService.delete(waveOrderIds);
+ }
+
+ /**
+ * 获取波次单详细信息
+ */
+ public WaveOrderPO getInfo(Long waveOrderId)
+ {
+ return waveOrderDomainService.getInfo(waveOrderId);
+ }
+
+ /**
+ * @description 手动分配
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param waveOrderDO
+ * @return Boolean
+ */
+ public Boolean manualAssign(WaveOrderDO waveOrderDO){
+ return waveOrderDomainService.manualAssign(waveOrderDO);
+ }
+
+ /**
+ * @description 取消分配
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param waveOrderDO
+ * @return Boolean
+ */
+ public Boolean cancelAssign(WaveOrderDO waveOrderDO){
+ return waveOrderDomainService.cancelAssign(waveOrderDO);
+ }
+
+ /**
+ * @description 取消波次
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param waveOrderDO
+ * @return Boolean
+ */
+ public Boolean cancelWave(WaveOrderDO waveOrderDO){
+ return waveOrderDomainService.cancelWave(waveOrderDO);
+ }
+
+ /**
+ * @description 生成拣货单
+ * @author ZhouGY
+ * @date 2024/5/28 13:47
+ * @param waveOrderDO
+ * @return Boolean
+ */
+ public Boolean genPickingOrder(WaveOrderDO waveOrderDO){
+ return waveOrderDomainService.genPickingOrder(waveOrderDO);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java
new file mode 100644
index 000000000..9a312cd92
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/waveRule/WaveRuleApplicationService.java
@@ -0,0 +1,80 @@
+package com.mhd.wms.application.service.waveRule;
+
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.waveRule.repository.po.WaveRulePO;
+import com.mhd.wms.domain.waveRule.repository.todo.WaveRuleDO;
+import com.mhd.wms.domain.waveRule.service.WaveRuleDomainService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 波次规则ApplicationService
+ *
+ * @author gen
+ * @date 2024-07-23
+ */
+@Service
+@Slf4j
+public class WaveRuleApplicationService {
+ @Autowired
+ private WaveRuleDomainService waveRuleDomainService;
+
+
+ /**
+ * 分页查询波次规则列表
+ */
+
+ public List queryList(WaveRuleDO waveRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ waveRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return waveRuleDomainService.queryList(waveRuleDO);
+ }
+
+
+ /**
+ * 新增波次规则
+ */
+ public Boolean insert(WaveRuleDO waveRuleDO) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if (loginUser != null){
+ Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
+ if (topOrganizationId != null && topOrganizationId != 1){
+ waveRuleDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
+ }
+ }
+ return waveRuleDomainService.insert(waveRuleDO);
+ }
+
+ /**
+ * 修改波次规则
+ */
+ public Boolean update(WaveRuleDO waveRuleDO) {
+ return waveRuleDomainService.update(waveRuleDO);
+ }
+
+ /**
+ * 批量删除波次规则
+ */
+ public boolean delete(Long[] ids) {
+ return waveRuleDomainService.delete(ids);
+ }
+
+ /**
+ * 获取波次规则详细信息
+ */
+ public WaveRulePO getInfo(Long id)
+ {
+ return waveRuleDomainService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java
new file mode 100644
index 000000000..c3a610420
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/entity/CommonSettings.java
@@ -0,0 +1,59 @@
+package com.mhd.wms.domain.commonSettings.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 常用设置对象 common_settings
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+
+@Data
+public class CommonSettings extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("常用设置id")
+ @TableId(type = IdType.AUTO)
+ private Long commonSettingsId;
+
+ @ApiModelProperty("所属上级id")
+ @Excel(name = "所属上级id")
+ private Long parentId;
+
+ @ApiModelProperty("名称")
+ @Excel(name = "名称")
+ private String name;
+
+ @ApiModelProperty("route")
+ @Excel(name = "route")
+ private String route;
+
+ @ApiModelProperty("级别 1-一级 2-二级")
+ @Excel(name = "级别 1-一级 2-二级")
+ private Long level;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java
new file mode 100644
index 000000000..775d1c235
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/facade/ICommonSettingsService.java
@@ -0,0 +1,43 @@
+package com.mhd.wms.domain.commonSettings.repository.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mhd.wms.domain.commonSettings.entity.CommonSettings;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO;
+
+import java.util.List;
+
+/**
+ * 常用设置Service接口
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+public interface ICommonSettingsService extends IService
+{
+ /**
+ * 分页查询常用设置列表
+ */
+ public List queryList(CommonSettingsDO commonSettingsDO);
+
+ /**
+ * 新增常用设置
+ */
+ public Boolean insert(CommonSettingsDO commonSettingsDO);
+
+ /**
+ * 修改常用设置
+ */
+ public Boolean update(CommonSettingsDO commonSettingsDO);
+
+ /**
+ * 批量删除常用设置
+ */
+ public Boolean delete(Long[] commonSettingsIds);
+
+
+ /**
+ * 查询常用设置
+ */
+ public CommonSettingsPO getInfo(Long commonSettingsId);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java
new file mode 100644
index 000000000..811de81a9
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/mapper/CommonSettingsMapper.java
@@ -0,0 +1,23 @@
+package com.mhd.wms.domain.commonSettings.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mhd.wms.domain.commonSettings.entity.CommonSettings;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO;
+
+import java.util.List;
+
+/**
+ * 常用设置Mapper接口
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+public interface CommonSettingsMapper extends BaseMapper
+{
+ /**
+ * 查询常用设置列表
+ */
+ public List queryList(CommonSettingsDO commonSettingsDO);
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java
new file mode 100644
index 000000000..06e51ea11
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/persistence/CommonSettingsImpl.java
@@ -0,0 +1,81 @@
+package com.mhd.wms.domain.commonSettings.repository.persistence;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mhd.wms.domain.commonSettings.entity.CommonSettings;
+import com.mhd.wms.domain.commonSettings.repository.facade.ICommonSettingsService;
+import com.mhd.wms.domain.commonSettings.repository.mapper.CommonSettingsMapper;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 常用设置Service业务层处理
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+@Service
+public class CommonSettingsImpl extends ServiceImpl implements ICommonSettingsService{
+ @Autowired
+ private CommonSettingsMapper commonSettingsMapper;
+
+ /**
+ * 查询常用设置列表
+ */
+ @Override
+ public List queryList(CommonSettingsDO commonSettingsDO)
+ {
+ return commonSettingsMapper.queryList(commonSettingsDO);
+ }
+
+ /**
+ * 新增常用设置
+ */
+ @Override
+ public Boolean insert(CommonSettingsDO commonSettingsDO) {
+ CommonSettings commonSettings = new CommonSettings();
+ BeanUtils.copyProperties(commonSettingsDO,commonSettings);
+ return this.save(commonSettings);
+ }
+
+ /**
+ * 修改常用设置
+ */
+ @Override
+ public Boolean update(CommonSettingsDO commonSettingsDO) {
+ CommonSettings commonSettings = new CommonSettings();
+ BeanUtils.copyProperties(commonSettingsDO,commonSettings);
+ return this.updateById(commonSettings);
+ }
+
+ /**
+ * 批量删除常用设置
+ */
+ @Override
+ public Boolean delete(Long[] commonSettingsIds ) {
+ List list = new ArrayList<>();
+ for (Long id : commonSettingsIds) {
+ CommonSettings commonSettings = new CommonSettings();
+ commonSettings.setCommonSettingsId(id);
+ commonSettings.setDelFlag(2);
+ list.add(commonSettings);
+ }
+ return this.updateBatchById(list);
+ }
+
+ /**
+ * 修改常用设置
+ */
+ @Override
+ public CommonSettingsPO getInfo(Long commonSettingsId) {
+ CommonSettings commonSettings = this.getById(commonSettingsId);
+ CommonSettingsPO commonSettingsPO = new CommonSettingsPO();
+ BeanUtils.copyProperties(commonSettings,commonSettingsPO);
+ return commonSettingsPO;
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java
new file mode 100644
index 000000000..d4ae4baac
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/po/CommonSettingsPO.java
@@ -0,0 +1,62 @@
+package com.mhd.wms.domain.commonSettings.repository.po;
+
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ * 常用设置对象 common_settings
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+
+@Data
+@ApiModel(value = "常用设置对象", description = "常用设置响应对象")
+public class CommonSettingsPO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("常用设置id")
+ private Long commonSettingsId;
+
+ @ApiModelProperty("所属上级id")
+ @Excel(name = "所属上级id")
+ private Long parentId;
+
+ @ApiModelProperty("名称")
+ @Excel(name = "名称")
+ private String name;
+
+ @ApiModelProperty("route")
+ @Excel(name = "route")
+ private String route;
+
+ @ApiModelProperty("级别 1-一级 2-二级")
+ @Excel(name = "级别 1-一级 2-二级")
+ private Long level;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("是否设置为常用 0-否 1-是")
+ @Excel(name = "是否设置为常用 0-否 1-是")
+ private Integer isSettings;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java
new file mode 100644
index 000000000..6d506395e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/repository/todo/CommonSettingsDO.java
@@ -0,0 +1,62 @@
+package com.mhd.wms.domain.commonSettings.repository.todo;
+
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 常用设置对象 common_settings
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+
+@Data
+public class CommonSettingsDO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("常用设置id")
+ private Long commonSettingsId;
+
+ @ApiModelProperty("所属上级id")
+ @Excel(name = "所属上级id")
+ private Long parentId;
+
+ @ApiModelProperty("名称")
+ @Excel(name = "名称")
+ private String name;
+
+ @ApiModelProperty("route")
+ @Excel(name = "route")
+ private String route;
+
+ @ApiModelProperty("级别 1-一级 2-二级")
+ @Excel(name = "级别 1-一级 2-二级")
+ private Long level;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty(name = "组织ID集合")
+ private List organizationIdList;
+
+ @ApiModelProperty(name = "权限菜单ID")
+ private Long permissionMenuId;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java
new file mode 100644
index 000000000..cc5dcf1f0
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/commonSettings/service/CommonSettingsDomainService.java
@@ -0,0 +1,65 @@
+package com.mhd.wms.domain.commonSettings.service;
+
+import com.mhd.wms.domain.commonSettings.repository.facade.ICommonSettingsService;
+import com.mhd.wms.domain.commonSettings.repository.po.CommonSettingsPO;
+import com.mhd.wms.domain.commonSettings.repository.todo.CommonSettingsDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 常用设置
+ *
+ * @author gen
+ * @date 2024-07-29
+ */
+@Service
+@Slf4j
+public class CommonSettingsDomainService {
+
+ @Autowired
+ private ICommonSettingsService commonSettingsService;
+
+
+ /**
+ * 分页查询常用设置列表
+ */
+ public List queryList(CommonSettingsDO commonSettingsDO) {
+ return commonSettingsService.queryList(commonSettingsDO);
+ }
+
+
+ /**
+ * 新增常用设置
+ */
+ public Boolean insert(CommonSettingsDO commonSettingsDO) {
+
+ return commonSettingsService.insert(commonSettingsDO);
+ }
+
+ /**
+ * 修改常用设置
+ */
+ public Boolean update(CommonSettingsDO commonSettingsDO) {
+ return commonSettingsService.update(commonSettingsDO);
+ }
+
+ /**
+ * 批量删除常用设置
+ */
+ public Boolean delete(Long[] commonSettingsIds) {
+ return commonSettingsService.delete(commonSettingsIds);
+ }
+
+ /**
+ * 获取常用设置详细信息
+ */
+ public CommonSettingsPO getInfo(Long commonSettingsId)
+ {
+ return commonSettingsService.getInfo(commonSettingsId);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java
new file mode 100644
index 000000000..d068729af
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/entity/ContainerUsageRecord.java
@@ -0,0 +1,89 @@
+package com.mhd.wms.domain.containerUsageRecord.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 容器使用记录对象 container_usage_record
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+
+@Data
+public class ContainerUsageRecord extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("ID")
+ @TableId(type = IdType.AUTO)
+ private String id;
+
+ @ApiModelProperty("容器id")
+ @Excel(name = "容器id")
+ private Long containerId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("容器编码")
+ @Excel(name = "容器编码")
+ private String containerCode;
+
+ @ApiModelProperty("容器类型 数据字典")
+ @Excel(name = "容器类型 数据字典")
+ private String containerType;
+
+ @ApiModelProperty("容器类型名称 数据字典")
+ @Excel(name = "容器类型名称 数据字典")
+ private String containerTypeName;
+
+ @ApiModelProperty("容器容积 单位:立方米")
+ @Excel(name = "容器容积 单位:立方米")
+ private BigDecimal containerVolume;
+
+ @ApiModelProperty("记录类型: 1-占用 2-释放")
+ @Excel(name = "记录类型: 1-占用 2-释放")
+ private Integer useType;
+
+ @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ private Integer node;
+
+ @ApiModelProperty("物料基础信息id")
+ @Excel(name = "物料基础信息id")
+ private Long materialBaseInfoId;
+
+ @ApiModelProperty("物料编码")
+ @Excel(name = "物料编码")
+ private String materialCode;
+
+ @ApiModelProperty("物料名称")
+ @Excel(name = "物料名称")
+ private String materialName;
+
+ @ApiModelProperty("物料条形码")
+ @Excel(name = "物料条形码")
+ private String barCode;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java
new file mode 100644
index 000000000..7fbc799af
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/facade/IContainerUsageRecordService.java
@@ -0,0 +1,43 @@
+package com.mhd.wms.domain.containerUsageRecord.repository.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord;
+import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO;
+import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO;
+
+import java.util.List;
+
+/**
+ * 容器使用记录Service接口
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+public interface IContainerUsageRecordService extends IService
+{
+ /**
+ * 分页查询容器使用记录列表
+ */
+ public List queryList(ContainerUsageRecordDO containerUsageRecordDO);
+
+ /**
+ * 新增容器使用记录
+ */
+ public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO);
+
+ /**
+ * 修改容器使用记录
+ */
+ public Boolean update(ContainerUsageRecordDO containerUsageRecordDO);
+
+ /**
+ * 批量删除容器使用记录
+ */
+ public Boolean delete(String[] ids);
+
+
+ /**
+ * 查询容器使用记录
+ */
+ public ContainerUsageRecordPO getInfo(String id);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java
new file mode 100644
index 000000000..40d73acae
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/mapper/ContainerUsageRecordMapper.java
@@ -0,0 +1,23 @@
+package com.mhd.wms.domain.containerUsageRecord.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord;
+import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO;
+import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO;
+
+import java.util.List;
+
+/**
+ * 容器使用记录Mapper接口
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+public interface ContainerUsageRecordMapper extends BaseMapper
+{
+ /**
+ * 查询容器使用记录列表
+ */
+ public List queryList(ContainerUsageRecordDO containerUsageRecordDO);
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java
new file mode 100644
index 000000000..3baaf7240
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/persistence/ContainerUsageRecordImpl.java
@@ -0,0 +1,81 @@
+package com.mhd.wms.domain.containerUsageRecord.repository.persistence;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mhd.wms.domain.containerUsageRecord.entity.ContainerUsageRecord;
+import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService;
+import com.mhd.wms.domain.containerUsageRecord.repository.mapper.ContainerUsageRecordMapper;
+import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO;
+import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 容器使用记录Service业务层处理
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+@Service
+public class ContainerUsageRecordImpl extends ServiceImpl implements IContainerUsageRecordService {
+ @Autowired
+ private ContainerUsageRecordMapper containerUsageRecordMapper;
+
+ /**
+ * 查询容器使用记录列表
+ */
+ @Override
+ public List queryList(ContainerUsageRecordDO containerUsageRecordDO)
+ {
+ return containerUsageRecordMapper.queryList(containerUsageRecordDO);
+ }
+
+ /**
+ * 新增容器使用记录
+ */
+ @Override
+ public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) {
+ ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord();
+ BeanUtils.copyProperties(containerUsageRecordDO,containerUsageRecord);
+ return this.save(containerUsageRecord);
+ }
+
+ /**
+ * 修改容器使用记录
+ */
+ @Override
+ public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) {
+ ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord();
+ BeanUtils.copyProperties(containerUsageRecordDO,containerUsageRecord);
+ return this.updateById(containerUsageRecord);
+ }
+
+ /**
+ * 批量删除容器使用记录
+ */
+ @Override
+ public Boolean delete(String[] ids ) {
+ List list = new ArrayList<>();
+ for (String id : ids) {
+ ContainerUsageRecord containerUsageRecord = new ContainerUsageRecord();
+ containerUsageRecord.setId(id);
+ containerUsageRecord.setDelFlag(2);
+ list.add(containerUsageRecord);
+ }
+ return this.updateBatchById(list);
+ }
+
+ /**
+ * 修改容器使用记录
+ */
+ @Override
+ public ContainerUsageRecordPO getInfo(String id) {
+ ContainerUsageRecord containerUsageRecord = this.getById(id);
+ ContainerUsageRecordPO containerUsageRecordPO = new ContainerUsageRecordPO();
+ BeanUtils.copyProperties(containerUsageRecord,containerUsageRecordPO);
+ return containerUsageRecordPO;
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java
new file mode 100644
index 000000000..2436126e0
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/po/ContainerUsageRecordPO.java
@@ -0,0 +1,89 @@
+package com.mhd.wms.domain.containerUsageRecord.repository.po;
+
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 容器使用记录对象 container_usage_record
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+
+@Data
+@ApiModel(value = "容器使用记录对象", description = "容器使用记录响应对象")
+public class ContainerUsageRecordPO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("ID")
+ private String id;
+
+ @ApiModelProperty("容器id")
+ @Excel(name = "容器id")
+ private Long containerId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("容器编码")
+ @Excel(name = "容器编码")
+ private String containerCode;
+
+ @ApiModelProperty("容器类型 数据字典")
+ @Excel(name = "容器类型 数据字典")
+ private String containerType;
+
+ @ApiModelProperty("容器类型名称 数据字典")
+ @Excel(name = "容器类型名称 数据字典")
+ private String containerTypeName;
+
+ @ApiModelProperty("容器容积 单位:立方米")
+ @Excel(name = "容器容积 单位:立方米")
+ private BigDecimal containerVolume;
+
+ @ApiModelProperty("记录类型: 1-占用 2-释放")
+ @Excel(name = "记录类型: 1-占用 2-释放")
+ private Integer useType;
+
+ @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ private Integer node;
+
+ @ApiModelProperty("物料基础信息id")
+ @Excel(name = "物料基础信息id")
+ private Long materialBaseInfoId;
+
+ @ApiModelProperty("物料编码")
+ @Excel(name = "物料编码")
+ private String materialCode;
+
+ @ApiModelProperty("物料名称")
+ @Excel(name = "物料名称")
+ private String materialName;
+
+ @ApiModelProperty("物料条形码")
+ @Excel(name = "物料条形码")
+ private String barCode;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java
new file mode 100644
index 000000000..49c225e13
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/repository/todo/ContainerUsageRecordDO.java
@@ -0,0 +1,91 @@
+package com.mhd.wms.domain.containerUsageRecord.repository.todo;
+
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+ * 容器使用记录对象 container_usage_record
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+
+@Data
+public class ContainerUsageRecordDO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("ID")
+ private String id;
+
+ @ApiModelProperty("容器id")
+ @Excel(name = "容器id")
+ private Long containerId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("容器编码")
+ @Excel(name = "容器编码")
+ private String containerCode;
+
+ @ApiModelProperty("容器类型 数据字典")
+ @Excel(name = "容器类型 数据字典")
+ private String containerType;
+
+ @ApiModelProperty("容器类型名称 数据字典")
+ @Excel(name = "容器类型名称 数据字典")
+ private String containerTypeName;
+
+ @ApiModelProperty("容器容积 单位:立方米")
+ @Excel(name = "容器容积 单位:立方米")
+ private BigDecimal containerVolume;
+
+ @ApiModelProperty("记录类型: 1-占用 2-释放")
+ @Excel(name = "记录类型: 1-占用 2-释放")
+ private Integer useType;
+
+ @ApiModelProperty("使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ @Excel(name = "使用节点: 1-收货 2-上架 3-拣货 4-出库")
+ private Integer node;
+
+ @ApiModelProperty("物料基础信息id")
+ @Excel(name = "物料基础信息id")
+ private Long materialBaseInfoId;
+
+ @ApiModelProperty("物料编码")
+ @Excel(name = "物料编码")
+ private String materialCode;
+
+ @ApiModelProperty("物料名称")
+ @Excel(name = "物料名称")
+ private String materialName;
+
+ @ApiModelProperty("物料条形码")
+ @Excel(name = "物料条形码")
+ private String barCode;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty(name = "组织ID集合")
+ private List organizationIdList;
+
+ @ApiModelProperty(name = "权限菜单ID")
+ private Long permissionMenuId;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java
new file mode 100644
index 000000000..864fdc46d
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/containerUsageRecord/service/ContainerUsageRecordDomainService.java
@@ -0,0 +1,65 @@
+package com.mhd.wms.domain.containerUsageRecord.service;
+
+import com.mhd.wms.domain.containerUsageRecord.repository.facade.IContainerUsageRecordService;
+import com.mhd.wms.domain.containerUsageRecord.repository.po.ContainerUsageRecordPO;
+import com.mhd.wms.domain.containerUsageRecord.repository.todo.ContainerUsageRecordDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 容器使用记录
+ *
+ * @author gen
+ * @date 2024-08-22
+ */
+@Service
+@Slf4j
+public class ContainerUsageRecordDomainService {
+
+ @Autowired
+ private IContainerUsageRecordService containerUsageRecordService;
+
+
+ /**
+ * 分页查询容器使用记录列表
+ */
+ public List queryList(ContainerUsageRecordDO containerUsageRecordDO) {
+ return containerUsageRecordService.queryList(containerUsageRecordDO);
+ }
+
+
+ /**
+ * 新增容器使用记录
+ */
+ public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO) {
+
+ return containerUsageRecordService.insert(containerUsageRecordDO);
+ }
+
+ /**
+ * 修改容器使用记录
+ */
+ public Boolean update(ContainerUsageRecordDO containerUsageRecordDO) {
+ return containerUsageRecordService.update(containerUsageRecordDO);
+ }
+
+ /**
+ * 批量删除容器使用记录
+ */
+ public Boolean delete(String[] ids) {
+ return containerUsageRecordService.delete(ids);
+ }
+
+ /**
+ * 获取容器使用记录详细信息
+ */
+ public ContainerUsageRecordPO getInfo(String id)
+ {
+ return containerUsageRecordService.getInfo(id);
+ }
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java
new file mode 100644
index 000000000..3d5303c7a
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/entity/DeliveTask.java
@@ -0,0 +1,112 @@
+package com.mhd.wms.domain.deliveTask.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 下发任务对象 delive_task
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+
+@Data
+public class DeliveTask extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("任务id")
+ @TableId(type = IdType.AUTO)
+ private Long deliverTaskId;
+
+ @ApiModelProperty("任务单号")
+ @Excel(name = "任务单号")
+ private String taskNumber;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String trackingNumber;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ private Integer taskType;
+
+ @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ private Integer taskStatus;
+
+ @ApiModelProperty("是否下发 0-否 1-是")
+ @Excel(name = "是否下发 0-否 1-是")
+ private Integer taskDistribution;
+
+ @ApiModelProperty("下发时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date taskDistributionTime;
+
+ @ApiModelProperty("下发人id")
+ @Excel(name = "下发人id")
+ private Long taskDistributionId;
+
+ @ApiModelProperty("下发人名称")
+ @Excel(name = "下发人名称")
+ private String taskDistributionName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("重新指派时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date reassignTime;
+
+ @ApiModelProperty("重新指派人id")
+ @Excel(name = "重新指派人id")
+ private Long reassignById;
+
+ @ApiModelProperty("重新指派人")
+ @Excel(name = "重新指派人")
+ private String reassignByName;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java
new file mode 100644
index 000000000..f80415ea9
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/factorys/DeliveTaskServiceFactory.java
@@ -0,0 +1,57 @@
+package com.mhd.wms.domain.deliveTask.factorys;
+
+import com.aliyun.oss.ServiceException;
+import com.aliyun.oss.common.utils.CaseInsensitiveMap;
+import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * @author ZhouGY
+ * @title WaveOrderFactory
+ * @description: 生成波次单规则类型工厂
+ * @date 2024/6/4 11:12
+ **/
+@Service
+public class DeliveTaskServiceFactory {
+
+ @Autowired
+ private Map deliveTaskTypeServiceMap = new CaseInsensitiveMap<>();
+
+ /**
+ * @description 获取对应的服务
+ * @author ZhouGY
+ * @date 2024/6/4 11:14
+ * @param taskType
+ * @return IWaveOrderTypeService
+ */
+ public IDeliveTaskTypeService getDeliveTaskTypeService(Integer taskType) {
+ String deliveTaskType = "";
+ //任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点
+ switch (taskType){
+ case 1:
+ deliveTaskType = "stockReceiptOrderImpl";
+ break;
+ case 2:
+ deliveTaskType = "stockShelfOrderImpl";
+ break;
+ case 3:
+ deliveTaskType = "stockOutTaskOrderImpl";
+ break;
+ case 4:
+ deliveTaskType = "stockOutOrderImpl";
+ break;
+ case 5:
+ deliveTaskType = "shiftManageImpl";
+ break;
+ case 6:
+ deliveTaskType = "investigationManageImpl";
+ break;
+ default:
+ throw new ServiceException("任务类型不存在");
+ }
+ return deliveTaskTypeServiceMap.get(deliveTaskType);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java
new file mode 100644
index 000000000..7714f15c9
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskService.java
@@ -0,0 +1,59 @@
+package com.mhd.wms.domain.deliveTask.repository.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+
+import java.util.List;
+
+/**
+ * 下发任务Service接口
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+public interface IDeliveTaskService extends IService
+{
+ /**
+ * 分页查询下发任务列表
+ */
+ public List queryList(DeliveTaskDO deliveTaskDO);
+ /**
+ * 分页查询下发任务列表
+ */
+ public List queryListApp(DeliveTaskDO deliveTaskDO);
+
+
+ /**
+ * 批量 新增下发任务
+ */
+ public Boolean batchInsert(List deliveTaskDOList);
+
+
+ /**
+ * 批量删除下发任务
+ */
+ public Boolean delete(Long[] deliverTaskIds);
+
+
+ /**
+ * 查询下发任务
+ */
+ public DeliveTaskPO getInfo(Long deliverTaskId);
+
+ /**
+ * 工作台查询
+ */
+ public DeliveTaskSumPO workbenchQuery();
+
+ public int receive(Long deliverTaskId);
+
+ public int refuse(Long deliverTaskId);
+
+ /**
+ * 查询列表表头数量
+ */
+ public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java
new file mode 100644
index 000000000..73148fcbf
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/facade/IDeliveTaskTypeService.java
@@ -0,0 +1,21 @@
+package com.mhd.wms.domain.deliveTask.repository.facade;
+
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+
+/**
+ * @author ZhouGY
+ * @title IWaveOrderType
+ * @description: 任务下发
+ * @date 2024/6/4 10:42
+ **/
+public interface IDeliveTaskTypeService {
+
+ /**
+ * @description 更新订单任务下发状态
+ * @author ZhouGY
+ * @date 2024/6/4 10:43
+ * @param deliveTaskDO
+ * @return Boolean
+ */
+ public Boolean handleDeliveTask(DeliveTaskDO deliveTaskDO);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java
new file mode 100644
index 000000000..6c5843a79
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/mapper/DeliveTaskMapper.java
@@ -0,0 +1,49 @@
+package com.mhd.wms.domain.deliveTask.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
+
+import java.util.List;
+
+/**
+ * 下发任务Mapper接口
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+public interface DeliveTaskMapper extends BaseMapper
+{
+ /**
+ * 查询下发任务列表
+ */
+ public List queryList(DeliveTaskDO deliveTaskDO);
+
+ public DeliveTaskSumPO workbenchQuery(@Param("operatorsBy") Long userid);
+
+ /**
+ * 查询下发任务列表
+ */
+ public List queryListApp(DeliveTaskDO deliveTaskDO);
+ /**
+ * 修改任务状态
+ */
+ @Update("update delive_task set task_status=#{taskStatus} where deliver_task_id=#{deliverTaskId}")
+ public int receive(@Param("deliverTaskId") Long deliverTaskId, @Param("taskStatus") Integer taskStatus);
+
+
+ /**
+ * 修改作业人员
+ */
+ @Update("update delive_task set operators_by=#{operatorsBy},operators_name=#{operatorsName} where deliver_task_id=#{deliverTaskId}")
+ public int updateOperatorsBy(@Param("deliverTaskId") Long deliverTaskId, @Param("operatorsBy") Long operatorsBy, @Param("operatorsName") String operatorsName);
+
+ /**
+ * 查询下发任务列表
+ */
+ public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java
new file mode 100644
index 000000000..992200e6f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/persistence/DeliveTaskImpl.java
@@ -0,0 +1,174 @@
+package com.mhd.wms.domain.deliveTask.repository.persistence;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mhd.common.core.domain.dto.NoticeMessageLoggingDto;
+import com.mhd.common.core.enums.MessageTypeEnum;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.core.web.domain.AjaxResult;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.SystemServiceFeign;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
+import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
+import com.mhd.wms.domain.deliveTask.repository.mapper.DeliveTaskMapper;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 下发任务Service业务层处理
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+@Service
+public class DeliveTaskImpl extends ServiceImpl implements IDeliveTaskService{
+ @Autowired
+ private DeliveTaskMapper deliveTaskMapper;
+ @Autowired
+ private SystemServiceFeign systemServiceFeign;
+ /**
+ * 查询下发任务列表
+ */
+ @Override
+ public List queryList(DeliveTaskDO deliveTaskDO)
+ {
+ return deliveTaskMapper.queryList(deliveTaskDO);
+ }
+ /**
+ * 查询下发任务列表
+ */
+ @Override
+ public List queryListApp(DeliveTaskDO deliveTaskDO)
+ {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if(null!=deliveTaskDO.getTabType()&&deliveTaskDO.getTabType()==1){
+ deliveTaskDO.setOperatorsBy(loginUser.getUserid());
+ }else{
+
+ }
+ return deliveTaskMapper.queryListApp(deliveTaskDO);
+ }
+ /**
+ * 新增下发任务
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean batchInsert(List deliveTaskDOList) {
+ List deliveTaskList = new ArrayList<>();
+ List noticeMessageLoggingDtoList = new ArrayList<>();
+ for (DeliveTaskDO deliveTaskDO : deliveTaskDOList){
+ DeliveTask deliveTask = new DeliveTask();
+ BeanUtils.copyProperties(deliveTaskDO,deliveTask);
+ deliveTaskList.add(deliveTask);
+ NoticeMessageLoggingDto noticeMessageLoggingDto = new NoticeMessageLoggingDto();
+ noticeMessageLoggingDto.setUserId(deliveTaskDO.getOperatorsBy());
+ noticeMessageLoggingDto.setUserName(deliveTaskDO.getOperatorsName());
+ noticeMessageLoggingDto.setNoticeMessageType(MessageTypeEnum.system_notifications.getCode());
+ noticeMessageLoggingDto.setNoticeMessageName(MessageTypeEnum.system_notifications.getInfo());
+ noticeMessageLoggingDto.setNoticeMessageTitle("任务下发通知");
+ noticeMessageLoggingDto.setMessageReadStatus(2);
+ String text="";
+ if(deliveTaskDO.getTaskType()==1){
+ text="有一个指派给您的收货任务,请尽快处理";
+ }else if(deliveTaskDO.getTaskType()==2){
+ text="有一个指派给您的上架任务,请尽快处理";
+ }else if(deliveTaskDO.getTaskType()==3){
+ text="有一个指派给您的拣货任务,请尽快处理";
+ }else if(deliveTaskDO.getTaskType()==4){
+ text="有一个指派给您的复盘任务,请尽快处理";
+ }else if(deliveTaskDO.getTaskType()==5){
+ text="有一个指派给您的移位任务,请尽快处理";
+ }else if(deliveTaskDO.getTaskType()==6){
+ text="有一个指派给您的盘点任务,请尽快处理";
+ }
+ noticeMessageLoggingDto.setMessagePushTime(new Date());
+ noticeMessageLoggingDto.setMessageSource(2);
+ noticeMessageLoggingDto.setTopOrganizationId(deliveTaskDO.getTopOrganizationId());
+ noticeMessageLoggingDto.setWaybillNumber(deliveTaskDO.getTrackingNumber());
+ noticeMessageLoggingDto.setDataSourceSystem(3);
+ noticeMessageLoggingDto.setDelFlag(1);
+ noticeMessageLoggingDto.setJumpPage(0);
+ noticeMessageLoggingDto.setNoticeMessageContent(text);
+ noticeMessageLoggingDto.setCreateBy(deliveTaskDO.getCreateBy());
+ noticeMessageLoggingDto.setCreateByName(deliveTaskDO.getCreateByName());
+ noticeMessageLoggingDto.setCreateTime(new Date());
+ noticeMessageLoggingDto.setMessagePushTime(new Date());
+ noticeMessageLoggingDtoList.add(noticeMessageLoggingDto);
+ }
+ saveBatch(deliveTaskList);
+ NoticeMessageLoggingDto noticeMessageLogging = new NoticeMessageLoggingDto();
+ noticeMessageLogging.setNoticeList(noticeMessageLoggingDtoList);
+ AjaxResult ajaxResult= systemServiceFeign.addMessageLoggingList(noticeMessageLogging);
+ if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
+ throw new ServiceException("保存消息信息失败");
+ }
+ return true;
+ }
+
+ /**
+ * 批量删除下发任务
+ */
+ @Override
+ public Boolean delete(Long[] deliverTaskIds ) {
+ List list = new ArrayList<>();
+ for (Long id : deliverTaskIds) {
+ DeliveTask deliveTask = new DeliveTask();
+ deliveTask.setDeliverTaskId(id);
+ deliveTask.setDelFlag(2);
+ list.add(deliveTask);
+ }
+ return this.updateBatchById(list);
+ }
+
+ /**
+ * 修改下发任务
+ */
+ @Override
+ public DeliveTaskPO getInfo(Long deliverTaskId) {
+ DeliveTask deliveTask = this.getById(deliverTaskId);
+ DeliveTaskPO deliveTaskPO = new DeliveTaskPO();
+ BeanUtils.copyProperties(deliveTask,deliveTaskPO);
+ return deliveTaskPO;
+ }
+ /**
+ * 工作台查询
+ */
+ @Override
+ public DeliveTaskSumPO workbenchQuery() {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+
+ return deliveTaskMapper.workbenchQuery(loginUser.getUserid());
+ }
+ /**
+ * 接收操作
+ */
+ @Override
+ public int receive(Long deliverTaskId) {
+ return deliveTaskMapper.receive(deliverTaskId,1);
+ }
+ /**
+ * 拒绝操作
+ */
+ @Override
+ public int refuse(Long deliverTaskId) {
+ int update=deliveTaskMapper.receive(deliverTaskId,2);
+ if(update==1){
+ deliveTaskMapper.updateOperatorsBy(deliverTaskId, Long.valueOf("0"),"");
+ }
+ return update;
+ }
+
+ @Override
+ public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) {
+ return deliveTaskMapper.querySum(deliveTaskDO);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java
new file mode 100644
index 000000000..2e233188b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskPO.java
@@ -0,0 +1,118 @@
+package com.mhd.wms.domain.deliveTask.repository.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 下发任务对象 delive_task
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+
+@Data
+@ApiModel(value = "下发任务对象", description = "下发任务响应对象")
+public class DeliveTaskPO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("任务id")
+ private Long deliverTaskId;
+
+ @ApiModelProperty("任务单号")
+ @Excel(name = "任务单号")
+ private String taskNumber;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String trackingNumber;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ private Integer taskType;
+
+ @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ private Integer taskStatus;
+
+ @ApiModelProperty("是否下发 0-否 1-是")
+ @Excel(name = "是否下发 0-否 1-是")
+ private Integer taskDistribution;
+
+ @ApiModelProperty("下发时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date taskDistributionTime;
+
+ @ApiModelProperty("下发人id")
+ @Excel(name = "下发人id")
+ private Long taskDistributionId;
+
+ @ApiModelProperty("下发人名称")
+ @Excel(name = "下发人名称")
+ private String taskDistributionName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("重新指派时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date reassignTime;
+
+ @ApiModelProperty("重新指派人id")
+ @Excel(name = "重新指派人id")
+ private Long reassignById;
+
+ @ApiModelProperty("重新指派人")
+ @Excel(name = "重新指派人")
+ private String reassignByName;
+
+ @ApiModelProperty("是否下发 0-否 1-是")
+ @Excel(name = "是否下发 0-否 1-是")
+ private Integer designateSum;
+
+ @ApiModelProperty("是否下发 0-否 1-是")
+ @Excel(name = "是否下发 0-否 1-是")
+ private Integer taskSum;
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java
new file mode 100644
index 000000000..14bc511eb
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/po/DeliveTaskSumPO.java
@@ -0,0 +1,37 @@
+package com.mhd.wms.domain.deliveTask.repository.po;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 下发任务对象 delive_task
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+
+@Data
+@ApiModel(value = "下发任务对象", description = "下发任务响应对象")
+public class DeliveTaskSumPO {
+
+ @ApiModelProperty("待收货数量")
+ private Integer receivedQuantity;
+
+ @ApiModelProperty("待上架数量")
+ private Integer listingQuantity;
+
+ @ApiModelProperty("待拣货数量")
+ private Integer pickQuantity;
+
+ @ApiModelProperty("待复核数量")
+ private Integer recheckQuantity;
+
+ @ApiModelProperty("待移位数量")
+ private Integer displacementQuantity;
+
+ @ApiModelProperty("待盘点数量")
+ private Integer stockQuantity;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java
new file mode 100644
index 000000000..c880530f8
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/repository/todo/DeliveTaskDO.java
@@ -0,0 +1,118 @@
+package com.mhd.wms.domain.deliveTask.repository.todo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 下发任务对象 delive_task
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+
+@Data
+public class DeliveTaskDO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("任务id")
+ private Long deliverTaskId;
+
+ @ApiModelProperty("任务单号")
+ @Excel(name = "任务单号")
+ private String taskNumber;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String trackingNumber;
+
+ @ApiModelProperty("组织id")
+ @Excel(name = "组织id")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ @Excel(name = "任务类型 0-无 1-收货 2-上架 3-拣货 4-复核 5-移位 6-盘点")
+ private Integer taskType;
+
+ @ApiModelProperty("任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ @Excel(name = "任务状态 0-未接收 1-已接收 2-已拒绝 3-已完成 4-已关闭")
+ private Integer taskStatus;
+
+ @ApiModelProperty("是否下发 0-否 1-是")
+ @Excel(name = "是否下发 0-否 1-是")
+ private Integer taskDistribution;
+
+ @ApiModelProperty("下发时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date taskDistributionTime;
+
+ @ApiModelProperty("下发人id")
+ @Excel(name = "下发人id")
+ private Long taskDistributionId;
+
+ @ApiModelProperty("下发人名称")
+ @Excel(name = "下发人名称")
+ private String taskDistributionName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("重新指派时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ @Excel(name = "重新指派时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date reassignTime;
+
+ @ApiModelProperty("重新指派人id")
+ @Excel(name = "重新指派人id")
+ private Long reassignById;
+
+ @ApiModelProperty("重新指派人")
+ @Excel(name = "重新指派人")
+ private String reassignByName;
+
+ @ApiModelProperty(name = "组织ID集合")
+ private List organizationIdList;
+
+ @ApiModelProperty(name = "权限菜单ID")
+ private Long permissionMenuId;
+
+ @ApiModelProperty("查询类型 1-指派给我的 2-任务")
+ @Excel(name = "查询类型 1-指派给我的 2-任务")
+ private Long tabType;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java
new file mode 100644
index 000000000..d4e99c3fe
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/deliveTask/service/DeliveTaskDomainService.java
@@ -0,0 +1,117 @@
+package com.mhd.wms.domain.deliveTask.service;
+
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
+import com.mhd.wms.domain.deliveTask.factorys.DeliveTaskServiceFactory;
+import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskPO;
+import com.mhd.wms.domain.deliveTask.repository.po.DeliveTaskSumPO;
+import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 下发任务
+ *
+ * @author gen
+ * @date 2024-07-26
+ */
+@Service
+@Slf4j
+public class DeliveTaskDomainService {
+
+ @Autowired
+ private IDeliveTaskService deliveTaskService;
+ @Autowired
+ private DeliveTaskServiceFactory deliveTaskServiceFactory;
+
+ /**
+ * 分页查询下发任务列表
+ */
+ public List queryList(DeliveTaskDO deliveTaskDO) {
+ return deliveTaskService.queryList(deliveTaskDO);
+ }
+ /**
+ * 分页查询下发任务列表
+ */
+ public List queryListApp(DeliveTaskDO deliveTaskDO) {
+ return deliveTaskService.queryListApp(deliveTaskDO);
+ }
+
+ /**
+ * 批量 新增下发任务
+ */
+ public Boolean batchInsert(List deliveTaskDOList) {
+ return deliveTaskService.batchInsert(deliveTaskDOList);
+ }
+
+
+ /**
+ * 批量删除下发任务
+ */
+ public Boolean delete(Long[] deliverTaskIds) {
+ return deliveTaskService.delete(deliverTaskIds);
+ }
+
+ /**
+ * 获取下发任务详细信息
+ */
+ public DeliveTaskPO getInfo(Long deliverTaskId)
+ {
+ return deliveTaskService.getInfo(deliverTaskId);
+ }
+
+ /**
+ * 工作台查询
+ */
+ public DeliveTaskSumPO workbenchQuery()
+ {
+ return deliveTaskService.workbenchQuery();
+ }
+ /**
+ * 接收操作
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public int receive(Long deliverTaskId) {
+ DeliveTask deliveTask = deliveTaskService.getById(deliverTaskId);
+ if (deliveTask == null){
+ throw new ServiceException("任务不存在");
+ }
+ if (deliveTask.getTaskStatus() > 0){
+ throw new ServiceException("任务已处理,请勿重复处理");
+ }
+ int count = deliveTaskService.receive(deliverTaskId);
+ if (count == 0) {
+ throw new ServiceException("接受任务失败");
+ }
+ DeliveTaskDO deliveTaskDO = new DeliveTaskDO();
+ deliveTaskDO.setTrackingNumber(deliveTask.getTrackingNumber());
+ deliveTaskDO.setOperatorsBy(deliveTask.getOperatorsBy());
+ deliveTaskDO.setOperatorsName(deliveTask.getOperatorsName());
+ deliveTaskServiceFactory.getDeliveTaskTypeService(deliveTask.getTaskType()).handleDeliveTask(deliveTaskDO);
+ return count;
+ }
+ /**
+ * 拒绝操作
+ */
+ public int refuse(Long deliverTaskId) {
+ DeliveTask deliveTask = deliveTaskService.getById(deliverTaskId);
+ if (deliveTask == null){
+ throw new ServiceException("任务不存在");
+ }
+ if (deliveTask.getTaskStatus() > 0){
+ throw new ServiceException("任务已处理,请勿重复处理");
+ }
+ return deliveTaskService.refuse(deliverTaskId);
+ }
+ /**
+ * 查询列表表头数量
+ */
+ public DeliveTaskPO querySum(DeliveTaskDO deliveTaskDO) {
+ return deliveTaskService.querySum(deliveTaskDO);
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java
new file mode 100644
index 000000000..87031715b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/entity/DifferentManage.java
@@ -0,0 +1,117 @@
+package com.mhd.wms.domain.differentManage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 差异单对象 different_manage
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+
+@Data
+public class DifferentManage extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("差异管理id")
+ @TableId(type = IdType.AUTO)
+ private Long differentManageId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("差异单号")
+ @Excel(name = "差异单号")
+ private String differentNumber;
+
+ @ApiModelProperty("盘点单号")
+ @Excel(name = "盘点单号")
+ private String investigationNumber;
+
+ @ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ private Integer investigationStatus;
+
+ @ApiModelProperty("盘点范围")
+ @Excel(name = "盘点范围")
+ private String investigationRange;
+
+ @ApiModelProperty("盘点方式:1.明盘 2.盲盘")
+ @Excel(name = "盘点方式:1.明盘 2.盲盘")
+ private Integer investigationType;
+
+ @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点")
+ @Excel(name = "盘点方法:1.静态盘点 2.动态盘点")
+ private Integer investigationMethod;
+
+ @ApiModelProperty("盘点轮次:1.初盘 2.复盘")
+ @Excel(name = "盘点轮次:1.初盘 2.复盘")
+ private Integer investigationFrequency;
+
+ @ApiModelProperty("监盘人ID")
+ @Excel(name = "监盘人ID")
+ private Long investigationManBy;
+
+ @ApiModelProperty("监盘人姓名")
+ @Excel(name = "监盘人姓名")
+ private String investigationManName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("是否作废: 1-是 2-否")
+ @Excel(name = "是否作废: 1-是 2-否")
+ private Integer nullify;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("是否过账: 1-是 2-否")
+ @Excel(name = "是否过账: 1-是 2-否")
+ private Integer postedFlag;
+
+ @ApiModelProperty("是否重盘: 1-是 2-否")
+ @Excel(name = "是否重盘: 1-是 2-否")
+ private Integer reCountedFlag;
+
+ @ApiModelProperty("盘点详情")
+ @TableField(exist = false)
+ private List investigetionManageDetailList;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java
new file mode 100644
index 000000000..43ea7b9d8
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/facade/IDifferentManageService.java
@@ -0,0 +1,55 @@
+package com.mhd.wms.domain.differentManage.repository.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mhd.wms.domain.differentManage.entity.DifferentManage;
+import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO;
+import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO;
+
+import java.util.List;
+
+/**
+ * 差异单Service接口
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+public interface IDifferentManageService extends IService
+{
+ /**
+ * 分页查询差异单列表
+ */
+ public List queryList(DifferentManageDO differentManageDO);
+
+ /**
+ * 新增差异单
+ */
+ public Boolean insert(DifferentManageDO differentManageDO);
+
+ /**
+ * 修改差异单
+ */
+ public Boolean update(DifferentManageDO differentManageDO);
+
+ /**
+ * 批量删除差异单
+ */
+ public Boolean delete(Long[] differentManageIds);
+
+
+ /**
+ * 查询差异单
+ */
+ public DifferentManagePO getInfo(Long differentManageId);
+
+ /**
+ * 重盘生成新的差异单
+ */
+ public Boolean resetDifferent(DifferentManageDO differentManageDO);
+
+ /**
+ * 差异过账
+ */
+ public Boolean differentRollback(DifferentManageDO differentManageDO);
+
+ public DifferentManagePO getDifferentManageDO(Long differentManageId);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java
new file mode 100644
index 000000000..7c4b9f87d
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/mapper/DifferentManageMapper.java
@@ -0,0 +1,23 @@
+package com.mhd.wms.domain.differentManage.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mhd.wms.domain.differentManage.entity.DifferentManage;
+import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO;
+import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO;
+
+import java.util.List;
+
+/**
+ * 差异单Mapper接口
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+public interface DifferentManageMapper extends BaseMapper
+{
+ /**
+ * 查询差异单列表
+ */
+ public List queryList(DifferentManageDO differentManageDO);
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java
new file mode 100644
index 000000000..ae699716b
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/persistence/DifferentManageImpl.java
@@ -0,0 +1,210 @@
+package com.mhd.wms.domain.differentManage.repository.persistence;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mhd.common.core.domain.po.UserPo;
+import com.mhd.common.core.exception.ServiceException;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.differentManage.entity.DifferentManage;
+import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService;
+import com.mhd.wms.domain.differentManage.repository.mapper.DifferentManageMapper;
+import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO;
+import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO;
+import com.mhd.wms.domain.investigationManage.entity.InvestigationManage;
+import com.mhd.wms.domain.investigetionManageDetail.entity.InvestigetionManageDetail;
+import com.mhd.wms.domain.investigetionManageDetail.repository.mapper.InvestigetionManageDetailMapper;
+import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO;
+import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
+import com.mhd.wms.domain.materialInventory.repository.mapper.MaterialInventoryMapper;
+import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
+import com.mhd.wms.enums.StatusInvestigationEnum;
+import com.mhd.wms.util.UtilloginUserAssemble;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 差异单Service业务层处理
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+@Service
+public class DifferentManageImpl extends ServiceImpl implements IDifferentManageService {
+ @Autowired
+ private DifferentManageMapper differentManageMapper;
+
+ @Autowired
+ private com.mhd.wms.domain.investigationManage.repository.mapper.InvestigationManageMapper investigationManageMapper;
+
+ @Autowired
+ private InvestigetionManageDetailMapper investigetionManageDetailMapper;
+
+ @Autowired
+ private com.mhd.wms.domain.investigationManage.repository.mapper.InvestigationManageMapper InvestigationManageMapper;
+
+ @Autowired
+ private MaterialInventoryMapper materialInventoryMapper;
+
+ /**
+ * 查询差异单列表
+ */
+ @Override
+ public List queryList(DifferentManageDO differentManageDO) {
+ return differentManageMapper.queryList(differentManageDO);
+ }
+
+ /**
+ * 新增差异单
+ */
+ @Override
+ public Boolean insert(DifferentManageDO differentManageDO) {
+ DifferentManage differentManage = new DifferentManage();
+ BeanUtils.copyProperties(differentManageDO, differentManage);
+ return this.save(differentManage);
+ }
+
+ /**
+ * 修改差异单
+ */
+ @Override
+ public Boolean update(DifferentManageDO differentManageDO) {
+ DifferentManage differentManage = new DifferentManage();
+ BeanUtils.copyProperties(differentManageDO, differentManage);
+ return this.updateById(differentManage);
+ }
+
+ /**
+ * 批量删除差异单
+ */
+ @Override
+ public Boolean delete(Long[] differentManageIds) {
+ List list = new ArrayList<>();
+ for (Long id : differentManageIds) {
+ DifferentManage differentManage = new DifferentManage();
+ differentManage.setDifferentManageId(id);
+ differentManage.setDelFlag(2);
+ list.add(differentManage);
+ }
+ return this.updateBatchById(list);
+ }
+
+ /**
+ * 修改差异单
+ */
+ @Override
+ public DifferentManagePO getInfo(Long differentManageId) {
+ DifferentManage differentManage = this.getById(differentManageId);
+ DifferentManagePO differentManagePO = new DifferentManagePO();
+ BeanUtils.copyProperties(differentManage, differentManagePO);
+ return differentManagePO;
+ }
+
+ @Override
+ public Boolean resetDifferent(DifferentManageDO differentManageDO) {
+ // 生成新的盘点单
+ // 查询差异单
+ DifferentManage differentManage = differentManageMapper.selectById(differentManageDO.getDifferentManageId());
+ if(null == differentManage){
+ throw new ServiceException("抱歉,没有找到此差异单信息!");
+ }
+ //盘点单号
+ String investigationNumber = differentManage.getInvestigationNumber();
+ //查询原盘点单信息
+ InvestigationManage investigationManage = investigationManageMapper.selectOne(new QueryWrapper().lambda().eq(InvestigationManage::getInvestigationNumber, investigationNumber));
+ if(null == investigationManage){
+ throw new ServiceException("抱歉,没有找到此差异单关联的盘点单信息!");
+ }
+ //新的盘点单号
+ investigationManage.setInvestigationNumber(panDian());
+ investigationManage.setOldInvestigationNumber(differentManage.getInvestigationNumber());
+ investigationManage.setDifferentNumber(null);
+ investigationManage.setInvestigationFrequency(2);
+ // 基本信息
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ UserPo userPo = loginUser.getUserPo();
+ investigationManage.setOrganizationId(userPo.getOrganizationId());
+ investigationManage.setTopOrganizationId(userPo.getTopOrganizationId());
+ investigationManage.setOrganizationName(userPo.getOrganizationName());
+ investigationManage.setCreateBy(loginUser.getUserid());
+ investigationManage.setCreateByName(loginUser.getUsername());
+ investigationManage.setCreateTime(new Date());
+ investigationManage.setUpdateBy(loginUser.getUserid());
+ investigationManage.setUpdateByName(loginUser.getUsername());
+ investigationManage.setUpdateTime(new Date());
+
+ //设置新盘点单状态--待盘点(禅道7820)
+ investigationManage.setInvestigationStatus(StatusInvestigationEnum.pending.getCode());
+ //根据差异单生成新盘点单明细
+ List investigetionManageDetailList = investigetionManageDetailMapper.selectList(new QueryWrapper().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationNumber));
+ for(InvestigetionManageDetail investigetionManageDetail : investigetionManageDetailList){
+ investigetionManageDetail.setDifferentNumber(null);
+ investigetionManageDetail.setInvestigationNumber(investigationManage.getInvestigationNumber());
+ investigetionManageDetail.setInvestigationStatus(StatusInvestigationEnum.pending.getCode());
+ investigetionManageDetail.setInvestigationFrequency(2);
+ //获取最新的库存数量
+ MaterialInventory materialInventory = materialInventoryMapper.selectOne(new QueryWrapper().lambda().eq(MaterialInventory::getMaterialInventoryId, investigetionManageDetail.getMaterialInventoryId()));
+ investigetionManageDetail.setInventoryQuantity(materialInventory.getInventoryQuantity());
+ //盘点数量设置为0
+ investigetionManageDetail.setInvestigationQuantity(BigDecimal.ZERO);
+ //差异数量设置为0
+ investigetionManageDetail.setDifferentQuantity(BigDecimal.ZERO);
+ UtilloginUserAssemble assembler = new UtilloginUserAssemble();
+ assembler.fillCommonProperties(investigetionManageDetail, loginUser);
+ investigetionManageDetail.setInvestigationManageDetailId(null);
+ //保存明细
+ investigetionManageDetailMapper.insert(investigetionManageDetail);
+ }
+
+ return InvestigationManageMapper.insert(investigationManage) > 0;
+ }
+
+ @Override
+ public Boolean differentRollback(DifferentManageDO differentManageDO1) {
+ DifferentManagePO differentManagePO = getDifferentManageDO(differentManageDO1.getDifferentManageId());
+ DifferentManageDO differentManageDO = JSONUtil.toBean(JSONUtil.toJsonStr(differentManagePO), DifferentManageDO.class);
+ // 库存差异更新
+ List investigetionManageDetailList = differentManageDO.getInvestigetionManageDetailList();
+ investigetionManageDetailList.forEach(e->{
+ MaterialInventory materialInventory = new MaterialInventory();
+ if (e.getInvestigationStatus() != 3){ // 库存更新
+ materialInventory = materialInventoryMapper.selectById(e.getMaterialInventoryId());
+ materialInventory.setInventoryQuantity(e.getInvestigationQuantity());
+
+ }
+ materialInventoryMapper.updateMaterial(JSONUtil.toBean(JSONUtil.toJsonStr(materialInventory), MaterialInventoryDO.class));
+ });
+ return true;
+ }
+
+ @Override
+ public DifferentManagePO getDifferentManageDO(Long differentManageId) {
+ DifferentManage differentManage = differentManageMapper.selectById(differentManageId);
+ String investigationNumber = differentManage.getInvestigationNumber();
+ List investigetionManageDetails = investigetionManageDetailMapper.selectList(new QueryWrapper().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationNumber));
+ List investigetionManageDetailList = new ArrayList<>();
+ for (InvestigetionManageDetail e : investigetionManageDetails) {
+ if (e.getInvestigationResult() != 3) {
+ investigetionManageDetailList.add(e);
+ }
+ }
+ differentManage.setInvestigetionManageDetailList(investigetionManageDetailList);
+ return JSONUtil.toBean(JSONUtil.toJsonStr(differentManage),DifferentManagePO.class);
+ }
+
+ public String panDian() {
+ String panDian = "PD";
+ LocalDateTime loc = LocalDateTime.now();
+ panDian += loc.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+ return panDian;
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java
new file mode 100644
index 000000000..5463e476f
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/po/DifferentManagePO.java
@@ -0,0 +1,117 @@
+package com.mhd.wms.domain.differentManage.repository.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import com.mhd.wms.domain.investigetionManageDetail.repository.po.InvestigetionManageDetailPO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 差异单对象 different_manage
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+
+@Data
+@ApiModel(value = "差异单对象", description = "差异单响应对象")
+public class DifferentManagePO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("差异管理id")
+ private Long differentManageId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("差异单号")
+ @Excel(name = "差异单号")
+ private String differentNumber;
+
+ @ApiModelProperty("盘点单号")
+ @Excel(name = "盘点单号")
+ private String investigationNumber;
+
+@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ private Integer investigationStatus;
+
+ @ApiModelProperty("盘点范围")
+ @Excel(name = "盘点范围")
+ private String investigationRange;
+
+ @ApiModelProperty("盘点方式:1.明盘 2.盲盘")
+ @Excel(name = "盘点方式:1.明盘 2.盲盘")
+ private Integer investigationType;
+
+ @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点")
+ @Excel(name = "盘点方法:1.静态盘点 2.动态盘点")
+ private Integer investigationMethod;
+
+ @ApiModelProperty("盘点轮次:1.初盘 2.复盘")
+ @Excel(name = "盘点轮次:1.初盘 2.复盘")
+ private Integer investigationFrequency;
+
+ @ApiModelProperty("监盘人ID")
+ @Excel(name = "监盘人ID")
+ private Long investigationManBy;
+
+ @ApiModelProperty("监盘人姓名")
+ @Excel(name = "监盘人姓名")
+ private String investigationManName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("是否作废: 1-是 2-否")
+ @Excel(name = "是否作废: 1-是 2-否")
+ private Integer nullify;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty("是否过账: 1-是 2-否")
+ @Excel(name = "是否过账: 1-是 2-否")
+ private Integer postedFlag;
+
+ @ApiModelProperty("是否重盘: 1-是 2-否")
+ @Excel(name = "是否重盘: 1-是 2-否")
+ private Integer reCountedFlag;
+
+ @ApiModelProperty("盘点详情")
+ @TableField(exist = false)
+ private List investigetionManageDetailList;
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java
new file mode 100644
index 000000000..4aa8a986e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/repository/todo/DifferentManageDO.java
@@ -0,0 +1,120 @@
+package com.mhd.wms.domain.differentManage.repository.todo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import com.mhd.wms.domain.investigetionManageDetail.repository.todo.InvestigetionManageDetailDO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 差异单对象 different_manage
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+
+@Data
+public class DifferentManageDO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("差异管理id")
+ private Long differentManageId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("差异单号")
+ @Excel(name = "差异单号")
+ private String differentNumber;
+
+ @ApiModelProperty("盘点单号")
+ @Excel(name = "盘点单号")
+ private String investigationNumber;
+
+@ApiModelProperty("盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ @Excel(name = "盘点状态: 1.已创建 2.待盘点 3.盘点中 4.盘点完成")
+ private Integer investigationStatus;
+
+ @ApiModelProperty("盘点范围")
+ @Excel(name = "盘点范围")
+ private String investigationRange;
+
+ @ApiModelProperty("盘点方式:1.明盘 2.盲盘")
+ @Excel(name = "盘点方式:1.明盘 2.盲盘")
+ private Integer investigationType;
+
+ @ApiModelProperty("盘点方法:1.静态盘点 2.动态盘点")
+ @Excel(name = "盘点方法:1.静态盘点 2.动态盘点")
+ private Integer investigationMethod;
+
+ @ApiModelProperty("盘点轮次:1.初盘 2.复盘")
+ @Excel(name = "盘点轮次:1.初盘 2.复盘")
+ private Integer investigationFrequency;
+
+ @ApiModelProperty("监盘人ID")
+ @Excel(name = "监盘人ID")
+ private Long investigationManBy;
+
+ @ApiModelProperty("监盘人姓名")
+ @Excel(name = "监盘人姓名")
+ private String investigationManName;
+
+ @ApiModelProperty("作业人用户ID")
+ @Excel(name = "作业人用户ID")
+ private Long operatorsBy;
+
+ @ApiModelProperty("作业人姓名")
+ @Excel(name = "作业人姓名")
+ private String operatorsName;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("是否作废: 1-是 2-否")
+ @Excel(name = "是否作废: 1-是 2-否")
+ private Integer nullify;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty(name = "组织ID集合")
+ private List organizationIdList;
+
+ @ApiModelProperty(name = "权限菜单ID")
+ private Long permissionMenuId;
+
+ @ApiModelProperty("是否过账: 1-是 2-否")
+ @Excel(name = "是否过账: 1-是 2-否")
+ private Integer postedFlag;
+
+ @ApiModelProperty("是否重盘: 1-是 2-否")
+ @Excel(name = "是否重盘: 1-是 2-否")
+ private Integer reCountedFlag;
+
+ @ApiModelProperty("盘点详情")
+ @TableField(exist = false)
+ private List investigetionManageDetailList;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java
new file mode 100644
index 000000000..017214cd4
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/differentManage/service/DifferentManageDomainService.java
@@ -0,0 +1,74 @@
+package com.mhd.wms.domain.differentManage.service;
+
+import com.mhd.wms.domain.differentManage.repository.facade.IDifferentManageService;
+import com.mhd.wms.domain.differentManage.repository.po.DifferentManagePO;
+import com.mhd.wms.domain.differentManage.repository.todo.DifferentManageDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 差异单
+ *
+ * @author gen
+ * @date 2024-07-20
+ */
+@Service
+@Slf4j
+public class DifferentManageDomainService {
+
+ @Autowired
+ private IDifferentManageService differentManageService;
+
+
+ /**
+ * 分页查询差异单列表
+ */
+ public List queryList(DifferentManageDO differentManageDO) {
+ return differentManageService.queryList(differentManageDO);
+ }
+
+
+ /**
+ * 新增差异单
+ */
+ public Boolean insert(DifferentManageDO differentManageDO) {
+
+ return differentManageService.insert(differentManageDO);
+ }
+
+ /**
+ * 修改差异单
+ */
+ public Boolean update(DifferentManageDO differentManageDO) {
+ return differentManageService.update(differentManageDO);
+ }
+
+ /**
+ * 批量删除差异单
+ */
+ public Boolean delete(Long[] differentManageIds) {
+ return differentManageService.delete(differentManageIds);
+ }
+
+ /**
+ * 获取差异单详细信息
+ */
+ public DifferentManagePO getInfo(Long differentManageId) {
+ return differentManageService.getInfo(differentManageId);
+ }
+
+ public Boolean resetDifferent(DifferentManageDO differentManageDO){
+ return differentManageService.resetDifferent(differentManageDO);
+ }
+ public Boolean differentRollback(DifferentManageDO differentManageDO){
+ return differentManageService.differentRollback(differentManageDO);
+ }
+
+ public DifferentManagePO getDifferentManageDO(Long differentManageId){
+ return differentManageService.getDifferentManageDO(differentManageId);
+ }
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java
new file mode 100644
index 000000000..a16cbc689
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/entity/HandoverTaskOrder.java
@@ -0,0 +1,129 @@
+package com.mhd.wms.domain.handoverTaskOrder.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 交接作业单对象 handover_task_order
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+
+@Data
+public class HandoverTaskOrder extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("交接作业单id")
+ @TableId(type = IdType.AUTO)
+ private Long handoverTaskOrderId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("作业流水号")
+ @Excel(name = "作业流水号")
+ private String serialNumber;
+
+ @ApiModelProperty("作业单号")
+ @Excel(name = "作业单号")
+ private String taskNumber;
+
+ @ApiModelProperty("交接状态: 1-未交接 2-已交接")
+ @Excel(name = "交接状态: 1-未交接 2-已交接")
+ private Integer status;
+
+ @ApiModelProperty("月台id")
+ @Excel(name = "月台id")
+ private Long platformId;
+
+ @ApiModelProperty("月台编码")
+ @Excel(name = "月台编码")
+ private String platformCode;
+
+ @ApiModelProperty("月台名称 ")
+ @Excel(name = "月台名称 ")
+ private String platformName;
+
+ @ApiModelProperty("月台使用时间管理id")
+ @Excel(name = "月台使用时间管理id")
+ private Long platformUseTimeId;
+
+ @ApiModelProperty("月台使用开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseStartTime;
+
+ @ApiModelProperty("月台使用结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseEndTime;
+
+ @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放")
+ @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放")
+ private Integer platformUseStatus;
+
+ @ApiModelProperty("出库单类型编码")
+ @Excel(name = "出库单类型编码")
+ private String orderTypeCode;
+
+ @ApiModelProperty("出库单类型名称")
+ @Excel(name = "出库单类型名称")
+ private String orderTypeName;
+
+ @ApiModelProperty("预计出货时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date expectTime;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("货主id")
+ @Excel(name = "货主id")
+ private Long shipperId;
+
+ @ApiModelProperty("货主名称")
+ @Excel(name = "货主名称")
+ private String shipperName;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String orderNumber;
+
+ @ApiModelProperty("拣货单号")
+ @Excel(name = "拣货单号")
+ private String pickingOrderNumber;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java
new file mode 100644
index 000000000..4c6826611
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/facade/IHandoverTaskOrderService.java
@@ -0,0 +1,43 @@
+package com.mhd.wms.domain.handoverTaskOrder.repository.facade;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
+import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
+import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
+
+import java.util.List;
+
+/**
+ * 交接作业单Service接口
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+public interface IHandoverTaskOrderService extends IService
+{
+ /**
+ * 分页查询交接作业单列表
+ */
+ public List queryList(HandoverTaskOrderDO handoverTaskOrderDO);
+
+ /**
+ * 新增交接作业单
+ */
+ public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO);
+
+ /**
+ * 修改交接作业单
+ */
+ public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO);
+
+ /**
+ * 批量删除交接作业单
+ */
+ public Boolean delete(Long[] outTaskOrderIds);
+
+
+ /**
+ * 查询交接作业单
+ */
+ public HandoverTaskOrderPO getInfo(Long outTaskOrderId);
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java
new file mode 100644
index 000000000..61b4af1bf
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/mapper/HandoverTaskOrderMapper.java
@@ -0,0 +1,23 @@
+package com.mhd.wms.domain.handoverTaskOrder.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
+import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
+import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
+
+import java.util.List;
+
+/**
+ * 交接作业单Mapper接口
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+public interface HandoverTaskOrderMapper extends BaseMapper
+{
+ /**
+ * 查询交接作业单列表
+ */
+ public List queryList(HandoverTaskOrderDO handoverTaskOrderDO);
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java
new file mode 100644
index 000000000..de919fd5e
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/persistence/HandoverTaskOrderImpl.java
@@ -0,0 +1,81 @@
+package com.mhd.wms.domain.handoverTaskOrder.repository.persistence;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
+import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
+import com.mhd.wms.domain.handoverTaskOrder.repository.mapper.HandoverTaskOrderMapper;
+import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
+import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 交接作业单Service业务层处理
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+public class HandoverTaskOrderImpl extends ServiceImpl implements IHandoverTaskOrderService {
+ @Autowired
+ private HandoverTaskOrderMapper handoverTaskOrderMapper;
+
+ /**
+ * 查询交接作业单列表
+ */
+ @Override
+ public List queryList(HandoverTaskOrderDO handoverTaskOrderDO)
+ {
+ return handoverTaskOrderMapper.queryList(handoverTaskOrderDO);
+ }
+
+ /**
+ * 新增交接作业单
+ */
+ @Override
+ public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO) {
+ HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder();
+ BeanUtils.copyProperties(handoverTaskOrderDO,handoverTaskOrder);
+ return this.save(handoverTaskOrder);
+ }
+
+ /**
+ * 修改交接作业单
+ */
+ @Override
+ public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO) {
+ HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder();
+ BeanUtils.copyProperties(handoverTaskOrderDO,handoverTaskOrder);
+ return this.updateById(handoverTaskOrder);
+ }
+
+ /**
+ * 批量删除交接作业单
+ */
+ @Override
+ public Boolean delete(Long[] outTaskOrderIds ) {
+ List list = new ArrayList<>();
+ for (Long id : outTaskOrderIds) {
+ HandoverTaskOrder handoverTaskOrder = new HandoverTaskOrder();
+ handoverTaskOrder.setHandoverTaskOrderId(id);
+ handoverTaskOrder.setDelFlag(2);
+ list.add(handoverTaskOrder);
+ }
+ return this.updateBatchById(list);
+ }
+
+ /**
+ * 修改交接作业单
+ */
+ @Override
+ public HandoverTaskOrderPO getInfo(Long outTaskOrderId) {
+ HandoverTaskOrder handoverTaskOrder = this.getById(outTaskOrderId);
+ HandoverTaskOrderPO handoverTaskOrderPO = new HandoverTaskOrderPO();
+ BeanUtils.copyProperties(handoverTaskOrder,handoverTaskOrderPO);
+ return handoverTaskOrderPO;
+ }
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java
new file mode 100644
index 000000000..e8e86272c
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/po/HandoverTaskOrderPO.java
@@ -0,0 +1,129 @@
+package com.mhd.wms.domain.handoverTaskOrder.repository.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 交接作业单对象 handover_task_order
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+
+@Data
+@ApiModel(value = "交接作业单对象", description = "交接作业单响应对象")
+public class HandoverTaskOrderPO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("交接作业单id")
+ private Long handoverTaskOrderId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("作业流水号")
+ @Excel(name = "作业流水号")
+ private String serialNumber;
+
+ @ApiModelProperty("作业单号")
+ @Excel(name = "作业单号")
+ private String taskNumber;
+
+ @ApiModelProperty("交接状态: 1-未交接 2-已交接")
+ @Excel(name = "交接状态: 1-未交接 2-已交接")
+ private Integer status;
+
+ @ApiModelProperty("月台id")
+ @Excel(name = "月台id")
+ private Long platformId;
+
+ @ApiModelProperty("月台编码")
+ @Excel(name = "月台编码")
+ private String platformCode;
+
+ @ApiModelProperty("月台名称 ")
+ @Excel(name = "月台名称 ")
+ private String platformName;
+
+ @ApiModelProperty("月台使用时间管理id")
+ @Excel(name = "月台使用时间管理id")
+ private Long platformUseTimeId;
+
+ @ApiModelProperty("月台使用开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseStartTime;
+
+ @ApiModelProperty("月台使用结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseEndTime;
+
+ @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放")
+ @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放")
+ private Integer platformUseStatus;
+
+ @ApiModelProperty("出库单类型编码")
+ @Excel(name = "出库单类型编码")
+ private String orderTypeCode;
+
+ @ApiModelProperty("出库单类型名称")
+ @Excel(name = "出库单类型名称")
+ private String orderTypeName;
+
+ @ApiModelProperty("预计出货时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date expectTime;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("货主id")
+ @Excel(name = "货主id")
+ private Long shipperId;
+
+ @ApiModelProperty("货主名称")
+ @Excel(name = "货主名称")
+ private String shipperName;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String orderNumber;
+
+ @ApiModelProperty("拣货单号")
+ @Excel(name = "拣货单号")
+ private String pickingOrderNumber;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+
+
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java
new file mode 100644
index 000000000..3d89bd667
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/repository/todo/HandoverTaskOrderDO.java
@@ -0,0 +1,134 @@
+package com.mhd.wms.domain.handoverTaskOrder.repository.todo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.mhd.common.core.annotation.Excel;
+import com.mhd.common.core.web.domain.BaseVOEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 交接作业单对象 handover_task_order
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+
+@Data
+public class HandoverTaskOrderDO extends BaseVOEntity {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("交接作业单id")
+ private Long handoverTaskOrderId;
+
+ @ApiModelProperty("组织表ID")
+ @Excel(name = "组织表ID")
+ private Long organizationId;
+
+ @ApiModelProperty("组织名称")
+ @Excel(name = "组织名称")
+ private String organizationName;
+
+ @ApiModelProperty("一级组织表ID")
+ @Excel(name = "一级组织表ID")
+ private Long topOrganizationId;
+
+ @ApiModelProperty("作业流水号")
+ @Excel(name = "作业流水号")
+ private String serialNumber;
+
+ @ApiModelProperty("作业单号")
+ @Excel(name = "作业单号")
+ private String taskNumber;
+
+ @ApiModelProperty("交接状态: 1-未交接 2-已交接")
+ @Excel(name = "交接状态: 1-未交接 2-已交接")
+ private Integer status;
+
+ @ApiModelProperty("月台id")
+ @Excel(name = "月台id")
+ private Long platformId;
+
+ @ApiModelProperty("月台编码")
+ @Excel(name = "月台编码")
+ private String platformCode;
+
+ @ApiModelProperty("月台名称 ")
+ @Excel(name = "月台名称 ")
+ private String platformName;
+
+ @ApiModelProperty("月台使用时间管理id")
+ @Excel(name = "月台使用时间管理id")
+ private Long platformUseTimeId;
+
+ @ApiModelProperty("月台使用开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseStartTime;
+
+ @ApiModelProperty("月台使用结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "月台使用结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date platformUseEndTime;
+
+ @ApiModelProperty("月台使用状态:1-未使用 2-使用中 3-已释放")
+ @Excel(name = "月台使用状态:1-未使用 2-使用中 3-已释放")
+ private Integer platformUseStatus;
+
+ @ApiModelProperty("出库单类型编码")
+ @Excel(name = "出库单类型编码")
+ private String orderTypeCode;
+
+ @ApiModelProperty("出库单类型名称")
+ @Excel(name = "出库单类型名称")
+ private String orderTypeName;
+
+ @ApiModelProperty("预计出货时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "预计出货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date expectTime;
+
+ @ApiModelProperty("仓库id")
+ @Excel(name = "仓库id")
+ private Long warehouseId;
+
+ @ApiModelProperty("仓库编码")
+ @Excel(name = "仓库编码")
+ private String warehouseCode;
+
+ @ApiModelProperty("仓库名称")
+ @Excel(name = "仓库名称")
+ private String warehouseName;
+
+ @ApiModelProperty("货主id")
+ @Excel(name = "货主id")
+ private Long shipperId;
+
+ @ApiModelProperty("货主名称")
+ @Excel(name = "货主名称")
+ private String shipperName;
+
+ @ApiModelProperty("来源单号")
+ @Excel(name = "来源单号")
+ private String orderNumber;
+
+ @ApiModelProperty("拣货单号")
+ @Excel(name = "拣货单号")
+ private String pickingOrderNumber;
+
+ @ApiModelProperty("备注")
+ @Excel(name = "备注")
+ private String remark;
+
+ @ApiModelProperty(name = "组织ID集合")
+ private List organizationIdList;
+
+ @ApiModelProperty(name = "权限菜单ID")
+ private Long permissionMenuId;
+
+ @ApiModelProperty("交接作业单id")
+ private List handoverTaskOrderIds;
+}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java
new file mode 100644
index 000000000..9513e558c
--- /dev/null
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/handoverTaskOrder/service/HandoverTaskOrderDomainService.java
@@ -0,0 +1,130 @@
+package com.mhd.wms.domain.handoverTaskOrder.service;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.mhd.common.security.utils.SecurityUtils;
+import com.mhd.system.api.model.LoginUser;
+import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
+import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
+import com.mhd.wms.domain.handoverTaskOrder.repository.po.HandoverTaskOrderPO;
+import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 交接作业单
+ *
+ * @author gen
+ * @date 2024-05-28
+ */
+@Service
+@Slf4j
+public class HandoverTaskOrderDomainService {
+
+ @Autowired
+ private IHandoverTaskOrderService handoverTaskOrderService;
+
+
+ /**
+ * 分页查询交接作业单列表
+ */
+ public List