Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
秦鸿展
2026-01-20 08:45:51 +08:00
836 changed files with 96189 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
# 基础镜像
FROM arm64v8/openjdk:8
# author
MAINTAINER manhuoda
#指定东八区时区
ENV TZ Asia/Shanghai
#指定utf-8编码格
ENV JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
#将当前mhd_special_logistics.jar 复制到容器根目录下
ADD mhd_wms.jar mhd_wms.jar
#暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口
EXPOSE 8017
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xms1000m", "-Xmx1500m","-jar","/mhd_wms.jar"]
+182
View File
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>mhd</artifactId>
<groupId>com.mhd</groupId>
<version>3.6.0</version>
</parent>
<groupId>com.mhd</groupId>
<artifactId>mhd_wms</artifactId>
<name>mhd_wms</name>
<description>mhd_wms 仓储</description>
<dependencies>
<!--添加web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加feign依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<exclusions>
<exclusion>
<artifactId>bcpkix-jdk15on</artifactId>
<groupId>org.bouncycastle</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<!--nacos 服务注册客户端依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Sentinel⽀持采⽤ Nacos 作为规则配置数据源,引⼊该适配依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!--sentinel 核⼼环境 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Alibaba Fastjson -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
</dependency>
<!-- Mhd Common Core-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-core</artifactId>
</dependency>
<!-- Mhd Common Log -->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-log</artifactId>
</dependency>
<!-- Mhd Common Redis-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-redis</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--import mybatis plus 它会自动引入mybatis及mybatis spring切勿重复引用以免冲突-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!--添加druid连接池 依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.11</version>
</dependency>
<!--链路追踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Mhd Common Security-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-common-security</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- Mhd Api System-->
<dependency>
<groupId>com.mhd</groupId>
<artifactId>mhd-api-system</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.1.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>mhd_wms</id>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
@@ -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);
}
}
@@ -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<CommonSettingsPO> 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);
}
}
@@ -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<ContainerUsageRecordPO> 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);
}
}
@@ -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<DeliveTaskPO> 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<DeliveTaskPO> 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<DeliveTaskDO> 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);
}
}
@@ -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<DifferentManagePO> 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);
}
}
@@ -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<HandoverTaskOrderPO> 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);
}
}
}
@@ -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<InMaterialDetailPO> 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);
}
}
@@ -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<InMaterialDetailSerialNumberPO> 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);
}
}
@@ -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<InOrderAbnormalPO> 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);
}
}
@@ -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<InventoryAdjustmentRecordPO> 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);
}
}
@@ -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<InventoryAllocationRulePO> 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<InventoryAllocationRuleDetailDO> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<InventoryAllocationRuleDetailDO> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<InventoryAllocationRuleDetailPO> inventoryAllocationRuleDetailPOS =
inventoryAllocationRuleDetailDomainService.selectListByInventoryAllocationRuleId(id);
inventoryAllocationRulePO.setInventoryAllocationRuleDetailList(inventoryAllocationRuleDetailPOS);
return inventoryAllocationRulePO;
}
}
@@ -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<InventoryAllocationRuleDetailPO> 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);
}
}
@@ -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<InventoryStandingDetailPO> 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);
}
}
@@ -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<InventoryStandingReportPO> 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);
}
}
@@ -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<InventoryTurnoverRulePO> 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<InventoryTurnoverRuleDetailDO> 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<InventoryTurnoverRuleDetailDO> 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<InventoryTurnoverRuleDetailPO> inventoryTurnoverRuleDetailPOList =
inventoryTurnoverRuleDetailDomainService.selectListByInventoryTurnoverRuleId(id);
inventoryTurnoverRulePO.setInventoryTurnoverRuleDetailList(inventoryTurnoverRuleDetailPOList);
return inventoryTurnoverRulePO;
}
}
@@ -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<InventoryTurnoverRuleDetailPO> 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);
}
}
@@ -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<InventoryWarningAnalyzePO> 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<InventoryWarningAnalyzePO> 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<MaterialInventoryWarningPO> materialInventoryWarningPOList = materialInventoryWarningDomainService.queryAllList();
List<InventoryWarningAnalyze> 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);
}
}
@@ -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<InvestigationManagePO> 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<InvestigetionManageDetailPO> investigetionManageDetailPODbList = investigetionManageDetailDomainService.queryList(investigetionManageDetailDOByQuery);
Map<Long, InvestigetionManageDetailPO> taskPickingMaterialDetailDbMap = investigetionManageDetailPODbList.stream().collect(Collectors.toMap(InvestigetionManageDetailPO::getInvestigationManageDetailId, Function.identity()));
List<InvestigetionManageDetailDO> 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());
}
}
@@ -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<InvestigetionManageDetailPO> 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);
}
}
@@ -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<MaterialBarCodePO> 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);
}
}
@@ -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<MaterialBaseInfoPO> 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);
}
}
@@ -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<MaterialCommonPO> 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);
}
}
@@ -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<MaterialGoodsRulePO> 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);
}
}
@@ -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<MaterialInventoryPO> 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<MaterialInventoryPO> 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<com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryQueryListPO>
* @author: lianzj
* @time: 2024-07-16 14:43:38
*/
public List<MaterialInventoryQueryListPO> 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);
}
}
@@ -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<MaterialInventoryWarningPO> 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);
}
}
@@ -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<MaterialMoreDetailPO> 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);
}
}
@@ -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<MaterialWarehouseControlPO> 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);
}
}
@@ -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<MobilizeManagePO> 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);
}
}
@@ -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<MobilizeManageDetailPO> 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);
}
}
@@ -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<NoticeMaterialDetailPO> 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);
}
}
@@ -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<NoticeOrderPO> 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<NoticeOrderDO>
*/
public Boolean nullifyByIds(Long[] noticeIds) {
return noticeOrderDomainService.nullifyByIds(noticeIds);
}
/**
* @description 生成入库单
* @author ZhouGY
* @date 2024/5/22 10:14
* @param noticeIds
* @return List<NoticeOrderDO>
*/
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<SysDictData> 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<SysDictData> 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());
}
}
}
@@ -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<OutMaterialDetailSerialNumberPO> 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);
}
}
@@ -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<OutOrderAbnormalPO> 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);
}
}
@@ -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<OverStockPO> 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<com.mhd.wms.domain.overStock.repository.po.OverStockPO>
* @author: lianzj
* @time: 2024-07-23 17:25:53
*/
public List<QueryOrderOverStockPO> 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);
}
}
@@ -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<PickingOrderPO> 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<PickingMaterialDetailPO> pickingMaterialDetailPODbList = pickingMaterialDetailDomainService.queryList(pickingMaterialDetailDOByQuery);
Map<Long, PickingMaterialDetailPO> pickingMaterialDetailDbMap = pickingMaterialDetailPODbList.stream().collect(Collectors.toMap(PickingMaterialDetailPO::getMaterialDetailId, Function.identity()));
List<PickingMaterialDetailDO> 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;
}
}
@@ -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<PutawayRulePO> 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<PutawayRuleDetailDO> putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS();
List<PutawayRuleDetail> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<PutawayRuleDetailDO> putawayRuleDetailDOS = putawayRuleDO.getPutawayRuleDetailDOS();
List<PutawayRuleDetail> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> transportTypeDictMap = transportTypeDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
List<String> 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<Long> putawayRleDetailIds = putawayRuleDetailDomainService.selectListByPutawayRuleId(ids);
return putawayRuleDetailDomainService.delete(putawayRleDetailIds.toArray(new Long[putawayRleDetailIds.size()]));
}
/**
* 获取上架规则详细信息
*/
public PutawayRulePO getInfo(Long id)
{
return putawayRuleDomainService.getInfo(id);
}
}
@@ -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<PutawayRuleDetailPO> 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);
}
}
@@ -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<QcRulePO> 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<QcRuleDetailDO> 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<SysDictDataVo> transportTypeDictList = JSONUtil.toList(JSONUtil.toJsonStr(transportTypeDict.get("data")), SysDictDataVo.class);
Map<String, String> 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<QcRuleDetailDO> 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<QcRuleDetailPO> qcRuleDetailPOS = qcRuleDetailDomainService.selectListByQcRuleId(id);
qcRulePO.setQcRuleDetailList(qcRuleDetailPOS);
return qcRulePO;
}
}
@@ -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<QcRuleDetailPO> 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);
}
}
@@ -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<QualityInspectionPO> 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);
}
}
@@ -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<ReceiptMaterialDetailPO> 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);
}
}
@@ -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<ReplenishmentNoticePO> 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);
}
}
@@ -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<SerialNumberPO> 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<SerialNumberPO> serialNumberPos = serialNumberDomainService.queryList(serialNumberDO);
if (CollectionUtil.isEmpty(serialNumberPos)){
throw new RuntimeException("序列号不存在");
}else if (serialNumberPos.size() >1) {
throw new RuntimeException("数据错误:系统内存在多个相同序列号");
}
return true;
}
}
@@ -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<ShelfMaterialDetailPO> 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);
}
}
@@ -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<ShiftManagePO> 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<ShiftMaterialDetailDO> shiftMaterialDetailDOList = shiftManageDO.getShiftMaterialDetailList();
shiftMaterialDetailDOList.forEach(shiftMaterialDetailDO -> {
List<ShiftMaterialDetailDO> 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<ShiftMaterialDetailDO> 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<String>
*/
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<String>
*/
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<ContainerShiftDO> 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<ShiftMaterialDetailPO> shiftMaterialDetailPODbList = shiftMaterialDetailDomainService.queryList(shiftMaterialDetailDOByQuery);
Map<Long, ShiftMaterialDetailPO> shiftMaterialDetailPODbMap = shiftMaterialDetailPODbList.stream().collect(Collectors.toMap(ShiftMaterialDetailPO::getShiftIoDetailId, Function.identity()));
BigDecimal totalShiftQuantity = BigDecimal.ZERO;//移位单当前作业收货数
int totalActualReceiptMaterialQuantity = 0;//移位单收货物料种数
List<ShiftMaterialDetailDO> 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<ShiftMaterialDetailDO> returnShiftMaterialDetailDOChildList = new ArrayList<>();
List<ShiftMaterialDetailDO> 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<ContainerShiftDO> containerShiftDOList){
for (ContainerShiftDO containerShiftDO : containerShiftDOList){
List<ShiftMoveMaterialQuantityPO> 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;
}
}
}
@@ -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<ShiftMaterialDetailPO> 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<ShiftMaterialDetailPO> 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);
}
}
@@ -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<SowingDistributionDetailsPO> 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<WaveOutOrderRelevancePO>
*/
public List<SowingDistributionDetailsPO> 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<WaveOutOrderRelevancePO>
*/
public List<SowingDistributionDetailsPO> 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());
}
}
@@ -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<SowingWallPO> 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);
}
}
@@ -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<ImmediateInventoryPO> 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<WarehousingReportPO> 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<WarehousingReportPO> 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<WarehousingReportPO> 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);
}
}
@@ -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<StockInOrderPO> 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<SysDictData> 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<SysDictData> 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());
}
}
}
@@ -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<StockInTaskOrderPO> 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);
}
}
@@ -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<StockOutOrderPO> 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<OutMaterialDetailPO> outMaterialDetailPODbList = outMaterialDetailDomainService.queryList(outMaterialDetailDOByQuery);
Map<Long, OutMaterialDetailPO> outMaterialDetailDbMap = outMaterialDetailPODbList.stream().collect(Collectors.toMap(OutMaterialDetailPO::getMaterialDetailId, Function.identity()));
List<OutMaterialDetailDO> 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<OutMaterialDetailDO> returnOutMaterialDetailDOChildList = new ArrayList<>();
List<OutMaterialDetailDO> 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<SysDictData> 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<SysDictData> 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());
}
}
@@ -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<StockOutTaskOrderPO> 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<TaskPickingMaterialDetailPO> taskPickingMaterialDetailPODbList = taskPickingMaterialDetailDomainService.queryList(taskPickingMaterialDetailDOByQuery);
Map<Long, TaskPickingMaterialDetailPO> taskPickingMaterialDetailDbMap = taskPickingMaterialDetailPODbList.stream().collect(Collectors.toMap(TaskPickingMaterialDetailPO::getMaterialDetailId, Function.identity()));
List<TaskPickingMaterialDetailDO> 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;
}
}
@@ -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<StockReceiptOrderPO> 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<ReceiptMaterialDetailPO> 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<ReceiptMaterialDetailDO> receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> {
List<ReceiptMaterialDetailDO> 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<ReceiptMaterialDetailDO> 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<ReceiptMaterialDetailDO> receiptMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
receiptMaterialDetailDOList.forEach(receiptMaterialDetailDO -> {
List<ReceiptMaterialDetailDO> 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<ReceiptMaterialDetailDO> 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<ReceiptMaterialDetailPO> receiptMaterialDetailPODbList = receiptMaterialDetailDomainService.queryList(receiptMaterialDetailDOByQuery);
Map<Long, ReceiptMaterialDetailPO> receiptMaterialDetailDbMap = receiptMaterialDetailPODbList.stream().collect(Collectors.toMap(ReceiptMaterialDetailPO::getMaterialDetailId, Function.identity()));
BigDecimal totalActualQuantity = BigDecimal.ZERO;//收货单当前作业收货数
int totalActualReceiptMaterialQuantity = 0;//收货单收货物料种数
List<ReceiptMaterialDetailDO> 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<ReceiptMaterialDetailDO> returnReceiptMaterialDetailDOChildList = new ArrayList<>();
List<ReceiptMaterialDetailDO> 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<InMaterialDetailDO> 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<ReceiptMaterialDetailDO> 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<SysDictData> 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());
}
}
@@ -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<StockShelfOrderPO> 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<ShelfMaterialDetailDO> shelfMaterialDetailDOList = stockReceiptOrderDO.getMaterialDetailList();
shelfMaterialDetailDOList.forEach(shelfMaterialDetailDO -> {
List<ShelfMaterialDetailDO> 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<ShelfMaterialDetailDO> 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<ShelfMaterialDetailPO> shelfMaterialDetailPODbList = shelfMaterialDetailDomainService.queryList(shelfMaterialDetailDOByQuery);
Map<Long, ShelfMaterialDetailPO> receiptMaterialDetailDbMap = shelfMaterialDetailPODbList.stream().collect(Collectors.toMap(ShelfMaterialDetailPO::getMaterialDetailId, Function.identity()));
BigDecimal totalActualQuantity = BigDecimal.ZERO;//上架单当前作业收货数
int totalActualShelfMaterialQuantity = 0;//上架单收货物料种数
List<ShelfMaterialDetailDO> 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<ShelfMaterialDetailDO> returnShelfMaterialDetailDOChildList = new ArrayList<>();
List<ShelfMaterialDetailDO> 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;
}
}
}
@@ -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<TaskReceiptMaterialDetailPO> 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);
}
}
@@ -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<TaskShelfMaterialDetailPO> 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);
}
}
@@ -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<UserCommonSettingsPO> 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<UserCommonSettingsAddDTO> 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);
}
}
@@ -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<WaveMaterialDetailPO> 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);
}
}
@@ -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<WaveOrderPO> 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);
}
}
@@ -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<WaveRulePO> 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);
}
}
@@ -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;
}
@@ -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<CommonSettings>
{
/**
* 分页查询常用设置列表
*/
public List<CommonSettingsPO> queryList(CommonSettingsDO commonSettingsDO);
/**
* 新增常用设置
*/
public Boolean insert(CommonSettingsDO commonSettingsDO);
/**
* 修改常用设置
*/
public Boolean update(CommonSettingsDO commonSettingsDO);
/**
* 批量删除常用设置
*/
public Boolean delete(Long[] commonSettingsIds);
/**
* 查询常用设置
*/
public CommonSettingsPO getInfo(Long commonSettingsId);
}
@@ -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<CommonSettings>
{
/**
* 查询常用设置列表
*/
public List<CommonSettingsPO> queryList(CommonSettingsDO commonSettingsDO);
}
@@ -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<CommonSettingsMapper, CommonSettings> implements ICommonSettingsService{
@Autowired
private CommonSettingsMapper commonSettingsMapper;
/**
* 查询常用设置列表
*/
@Override
public List<CommonSettingsPO> 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<CommonSettings> 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;
}
}
@@ -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;
}
@@ -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<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
}
@@ -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<CommonSettingsPO> 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);
}
}
@@ -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;
}
@@ -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<ContainerUsageRecord>
{
/**
* 分页查询容器使用记录列表
*/
public List<ContainerUsageRecordPO> queryList(ContainerUsageRecordDO containerUsageRecordDO);
/**
* 新增容器使用记录
*/
public Boolean insert(ContainerUsageRecordDO containerUsageRecordDO);
/**
* 修改容器使用记录
*/
public Boolean update(ContainerUsageRecordDO containerUsageRecordDO);
/**
* 批量删除容器使用记录
*/
public Boolean delete(String[] ids);
/**
* 查询容器使用记录
*/
public ContainerUsageRecordPO getInfo(String id);
}
@@ -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<ContainerUsageRecord>
{
/**
* 查询容器使用记录列表
*/
public List<ContainerUsageRecordPO> queryList(ContainerUsageRecordDO containerUsageRecordDO);
}
@@ -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<ContainerUsageRecordMapper, ContainerUsageRecord> implements IContainerUsageRecordService {
@Autowired
private ContainerUsageRecordMapper containerUsageRecordMapper;
/**
* 查询容器使用记录列表
*/
@Override
public List<ContainerUsageRecordPO> 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<ContainerUsageRecord> 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;
}
}
@@ -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;
}
@@ -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<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
}
@@ -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<ContainerUsageRecordPO> 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);
}
}
@@ -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;
}
@@ -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<String, IDeliveTaskTypeService> 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);
}
}
@@ -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<DeliveTask>
{
/**
* 分页查询下发任务列表
*/
public List<DeliveTaskPO> queryList(DeliveTaskDO deliveTaskDO);
/**
* 分页查询下发任务列表
*/
public List<DeliveTaskPO> queryListApp(DeliveTaskDO deliveTaskDO);
/**
* 批量 新增下发任务
*/
public Boolean batchInsert(List<DeliveTaskDO> 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);
}
@@ -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);
}
@@ -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<DeliveTask>
{
/**
* 查询下发任务列表
*/
public List<DeliveTaskPO> queryList(DeliveTaskDO deliveTaskDO);
public DeliveTaskSumPO workbenchQuery(@Param("operatorsBy") Long userid);
/**
* 查询下发任务列表
*/
public List<DeliveTaskPO> 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);
}
@@ -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<DeliveTaskMapper, DeliveTask> implements IDeliveTaskService{
@Autowired
private DeliveTaskMapper deliveTaskMapper;
@Autowired
private SystemServiceFeign systemServiceFeign;
/**
* 查询下发任务列表
*/
@Override
public List<DeliveTaskPO> queryList(DeliveTaskDO deliveTaskDO)
{
return deliveTaskMapper.queryList(deliveTaskDO);
}
/**
* 查询下发任务列表
*/
@Override
public List<DeliveTaskPO> 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<DeliveTaskDO> deliveTaskDOList) {
List<DeliveTask> deliveTaskList = new ArrayList<>();
List<NoticeMessageLoggingDto> 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<DeliveTask> 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);
}
}
@@ -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;
}
@@ -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;
}
@@ -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<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("查询类型 1-指派给我的 2-任务")
@Excel(name = "查询类型 1-指派给我的 2-任务")
private Long tabType;
}
@@ -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<DeliveTaskPO> queryList(DeliveTaskDO deliveTaskDO) {
return deliveTaskService.queryList(deliveTaskDO);
}
/**
* 分页查询下发任务列表
*/
public List<DeliveTaskPO> queryListApp(DeliveTaskDO deliveTaskDO) {
return deliveTaskService.queryListApp(deliveTaskDO);
}
/**
* 批量 新增下发任务
*/
public Boolean batchInsert(List<DeliveTaskDO> 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);
}
}
@@ -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<InvestigetionManageDetail> investigetionManageDetailList;
}
@@ -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<DifferentManage>
{
/**
* 分页查询差异单列表
*/
public List<DifferentManagePO> 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);
}
@@ -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<DifferentManage>
{
/**
* 查询差异单列表
*/
public List<DifferentManagePO> queryList(DifferentManageDO differentManageDO);
}
@@ -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<DifferentManageMapper, DifferentManage> 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<DifferentManagePO> 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<DifferentManage> 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<InvestigationManage>().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<InvestigetionManageDetail> investigetionManageDetailList = investigetionManageDetailMapper.selectList(new QueryWrapper<InvestigetionManageDetail>().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<MaterialInventory>().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<InvestigetionManageDetailDO> 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<InvestigetionManageDetail> investigetionManageDetails = investigetionManageDetailMapper.selectList(new QueryWrapper<InvestigetionManageDetail>().lambda().eq(InvestigetionManageDetail::getInvestigationNumber, investigationNumber));
List<InvestigetionManageDetail> 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;
}
}
@@ -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<InvestigetionManageDetailPO> investigetionManageDetailList;
}
@@ -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<Long> 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<InvestigetionManageDetailDO> investigetionManageDetailList;
}
@@ -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<DifferentManagePO> 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);
}
}
@@ -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;
}
@@ -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<HandoverTaskOrder>
{
/**
* 分页查询交接作业单列表
*/
public List<HandoverTaskOrderPO> queryList(HandoverTaskOrderDO handoverTaskOrderDO);
/**
* 新增交接作业单
*/
public Boolean insert(HandoverTaskOrderDO handoverTaskOrderDO);
/**
* 修改交接作业单
*/
public Boolean update(HandoverTaskOrderDO handoverTaskOrderDO);
/**
* 批量删除交接作业单
*/
public Boolean delete(Long[] outTaskOrderIds);
/**
* 查询交接作业单
*/
public HandoverTaskOrderPO getInfo(Long outTaskOrderId);
}
@@ -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<HandoverTaskOrder>
{
/**
* 查询交接作业单列表
*/
public List<HandoverTaskOrderPO> queryList(HandoverTaskOrderDO handoverTaskOrderDO);
}
@@ -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<HandoverTaskOrderMapper, HandoverTaskOrder> implements IHandoverTaskOrderService {
@Autowired
private HandoverTaskOrderMapper handoverTaskOrderMapper;
/**
* 查询交接作业单列表
*/
@Override
public List<HandoverTaskOrderPO> 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<HandoverTaskOrder> 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;
}
}
@@ -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;
}
@@ -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<Long> organizationIdList;
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("交接作业单id")
private List<Long> handoverTaskOrderIds;
}

Some files were not shown because too many files have changed in this diff Show More