集成oms服务模块
This commit is contained in:
@@ -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_oms.jar mhd_oms.jar
|
||||
#暴露容器端口 Docker镜像告知Docker宿主机应用监听了端口
|
||||
EXPOSE 8017
|
||||
# 运行jar包
|
||||
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Xms1000m", "-Xmx1500m","-jar","/mhd_oms.jar"]
|
||||
+169
@@ -0,0 +1,169 @@
|
||||
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.mhd</groupId>
|
||||
<artifactId>mhd</artifactId>
|
||||
<version>3.6.0</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>mhd_oms</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<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>
|
||||
</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>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-amqp</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 Redis-->
|
||||
<dependency>
|
||||
<groupId>com.mhd</groupId>
|
||||
<artifactId>mhd-common-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.dameng</groupId>
|
||||
<artifactId>DmJdbcDriver18</artifactId>
|
||||
<version>8.1.1.193</version>
|
||||
</dependency>
|
||||
<!--添加druid连接池 依赖 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.2.11</version>
|
||||
</dependency>
|
||||
<!--lombok工具-->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!--链路追踪-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-sleuth</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-zipkin</artifactId>
|
||||
<version>2.2.8.RELEASE</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Mhd Common Security-->
|
||||
<dependency>
|
||||
<groupId>com.mhd</groupId>
|
||||
<artifactId>mhd-common-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>3.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mhd</groupId>
|
||||
<artifactId>mhd_common_db</artifactId>
|
||||
<version>3.6.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.mhd</groupId>
|
||||
<artifactId>mhd-common-log</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>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>mhd_oms</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>dockerfile-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.mhd.oms;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = {"com.mhd"},
|
||||
exclude = DataSourceAutoConfiguration.class)
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackages = {"com.mhd",})
|
||||
@MapperScan("com.mhd.oms.domain.**.mapper")
|
||||
public class OMSApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(OMSApplication.class, args);
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.deliveryInfo;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.deliveryInfo.service.DeliveryInfoDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class DeliveryInfoApplicationService {
|
||||
@Autowired
|
||||
private DeliveryInfoDomainService deliveryInfoDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询发货信息列表
|
||||
*/
|
||||
|
||||
public List<DeliveryInfoPO> queryList(DeliveryInfoDO deliveryInfoDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
deliveryInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return deliveryInfoDomainService.queryList(deliveryInfoDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增发货信息
|
||||
*/
|
||||
public Boolean insert(DeliveryInfoDO deliveryInfoDO) {
|
||||
|
||||
return deliveryInfoDomainService.insert(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改发货信息
|
||||
*/
|
||||
public Boolean update(DeliveryInfoDO deliveryInfoDO) {
|
||||
return deliveryInfoDomainService.update(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除发货信息
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return deliveryInfoDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取发货信息详细信息
|
||||
*/
|
||||
public DeliveryInfoPO getInfo(Long id)
|
||||
{
|
||||
return deliveryInfoDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.goods;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.goods.service.GoodsDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class GoodsApplicationService {
|
||||
@Autowired
|
||||
private GoodsDomainService goodsDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询商品信息列表
|
||||
*/
|
||||
|
||||
public List<GoodsPO> queryList(GoodsDO goodsDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
goodsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return goodsDomainService.queryList(goodsDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*/
|
||||
public Boolean insert(GoodsDO goodsDO) {
|
||||
|
||||
return goodsDomainService.insert(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*/
|
||||
public Boolean update(GoodsDO goodsDO) {
|
||||
return goodsDomainService.update(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除商品信息
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return goodsDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品信息详细信息
|
||||
*/
|
||||
public GoodsPO getInfo(Long id)
|
||||
{
|
||||
return goodsDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.interceptOrder;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
import com.mhd.oms.domain.interceptOrder.service.InterceptOrderDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-30
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class InterceptOrderApplicationService {
|
||||
@Autowired
|
||||
private InterceptOrderDomainService interceptOrderDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询拦截订单列表
|
||||
*/
|
||||
|
||||
public List<InterceptOrderPO> queryList(InterceptOrderDO interceptOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
interceptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return interceptOrderDomainService.queryList(interceptOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增拦截订单
|
||||
*/
|
||||
public Boolean insert(InterceptOrderDO interceptOrderDO) {
|
||||
|
||||
return interceptOrderDomainService.insert(interceptOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改拦截订单
|
||||
*/
|
||||
public Boolean update(InterceptOrderDO interceptOrderDO) {
|
||||
return interceptOrderDomainService.update(interceptOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除拦截订单
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return interceptOrderDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取拦截订单详细信息
|
||||
*/
|
||||
public InterceptOrderPO getInfo(Long id)
|
||||
{
|
||||
return interceptOrderDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.logistics;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.logistics.service.LogisticsDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class LogisticsApplicationService {
|
||||
@Autowired
|
||||
private LogisticsDomainService logisticsDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询物流信息列表
|
||||
*/
|
||||
|
||||
public List<LogisticsPO> queryList(LogisticsDO logisticsDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
logisticsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return logisticsDomainService.queryList(logisticsDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增物流信息
|
||||
*/
|
||||
public Boolean insert(LogisticsDO logisticsDO) {
|
||||
|
||||
return logisticsDomainService.insert(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改物流信息
|
||||
*/
|
||||
public Boolean update(LogisticsDO logisticsDO) {
|
||||
return logisticsDomainService.update(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除物流信息
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return logisticsDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取物流信息详细信息
|
||||
*/
|
||||
public LogisticsPO getInfo(Long id)
|
||||
{
|
||||
return logisticsDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.mhd.oms.application.service.orderType;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypeDictPO;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO;
|
||||
import com.mhd.oms.domain.orderType.service.OrderTypeDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-15
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class OrderTypeApplicationService {
|
||||
@Autowired
|
||||
private OrderTypeDomainService orderTypeDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询订单类型关系列表
|
||||
*/
|
||||
|
||||
public List<OrderTypePO> queryList(OrderTypeDO orderTypeDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
orderTypeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return orderTypeDomainService.queryList(orderTypeDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增订单类型关系
|
||||
*/
|
||||
public Boolean insert(OrderTypeDO orderTypeDO) {
|
||||
//获取当前登录人,获取当前登录人的租户
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
orderTypeDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
return orderTypeDomainService.insert(orderTypeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单类型关系
|
||||
*/
|
||||
public Boolean update(OrderTypeDO orderTypeDO) {
|
||||
return orderTypeDomainService.update(orderTypeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除订单类型关系
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return orderTypeDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单类型关系详细信息
|
||||
*/
|
||||
public OrderTypePO getInfo(Long id)
|
||||
{
|
||||
return orderTypeDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public List<OrderTypeDictPO> listDict() {
|
||||
return orderTypeDomainService.listDict();
|
||||
}
|
||||
}
|
||||
+549
@@ -0,0 +1,549 @@
|
||||
package com.mhd.oms.application.service.purchaseOrder;
|
||||
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.mhd.common.core.enums.DictCode;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
|
||||
import com.mhd.common.core.utils.OrderSequence;
|
||||
import com.mhd.common.core.web.domain.AjaxResult;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.deliveryInfo.service.DeliveryInfoDomainService;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.goods.service.GoodsDomainService;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
import com.mhd.oms.domain.interceptOrder.service.InterceptOrderDomainService;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.logistics.service.LogisticsDomainService;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.service.OrderTypeDomainService;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderAddDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderAuditDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.service.PurchaseOrderDomainService;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.receiptInfo.service.ReceiptInfoDomainService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import com.mhd.oms.domain.scmOrder.service.ScmOrderDomainService;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import com.mhd.oms.domain.settlement.service.SettlementDomainService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.service.TaskOrderDomainService;
|
||||
import com.mhd.oms.infrastructure.feign.vo.SysDictDataVo;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.system.api.SystemServiceFeign;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 采购订单管理ApplicationService
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PurchaseOrderApplicationService {
|
||||
@Resource
|
||||
private PurchaseOrderDomainService purchaseOrderDomainService;//采购订单基本信息
|
||||
|
||||
@Resource
|
||||
private SettlementDomainService settlementDomainService;//采购结算信息
|
||||
|
||||
@Resource
|
||||
private DeliveryInfoDomainService deliveryInfoDomainService;//采购发货信息
|
||||
|
||||
@Resource
|
||||
private ReceiptInfoDomainService receiptInfoDomainService;//采购订单收货信息
|
||||
|
||||
@Resource
|
||||
private LogisticsDomainService logisticsDomainService;//采购订单物流信息
|
||||
|
||||
@Resource
|
||||
private GoodsDomainService goodsDomainService;//采购订单物料信息
|
||||
|
||||
@Resource
|
||||
private OrderTypeDomainService orderTypeDomainService;//订单类型关系
|
||||
|
||||
@Resource
|
||||
private TaskOrderDomainService taskOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private InterceptOrderDomainService interceptOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private ScmOrderDomainService scmOrderDomainService;
|
||||
|
||||
@Autowired
|
||||
private SystemServiceFeign systemServiceFeign;
|
||||
|
||||
/**
|
||||
* 分页查询采购订单管理列表
|
||||
*/
|
||||
|
||||
public List<PurchaseOrderPO> queryList(PurchaseOrderDO purchaseOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
purchaseOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
purchaseOrderDO.setSource(0);
|
||||
return purchaseOrderDomainService.queryList(purchaseOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增采购订单管理
|
||||
*/
|
||||
@Transactional
|
||||
public Boolean insert(PurchaseOrderAddDO purchaseOrderAddDO) {
|
||||
|
||||
|
||||
//获取当前登录人,获取当前登录人的租户
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
List<GoodsDO> goodsDOList = purchaseOrderAddDO.getGoodsDOList();
|
||||
//1、采购订单基本信息保存
|
||||
PurchaseOrderDO purchaseOrderDo = purchaseOrderAddDO.getPurchaseOrderDo();
|
||||
//查询订单关系表信息
|
||||
OrderTypePO orderTypePO = orderTypeDomainService.getInfo(purchaseOrderDo.getOrderTypeId());
|
||||
purchaseOrderDo.setJobTaskTypeId(orderTypePO.getJobTaskTypeId());
|
||||
purchaseOrderDo.setJobTaskType(orderTypePO.getJobTaskType());
|
||||
purchaseOrderDo.setOrderType(orderTypePO.getOrderType());
|
||||
purchaseOrderDo.setDeliverySystem(orderTypePO.getDeliverySystem());
|
||||
purchaseOrderDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
//物料信息
|
||||
String goodNames = goodsDOList.stream().map(GoodsDO::getGoodsName).collect(Collectors.joining(","));
|
||||
//物料数量
|
||||
Integer goodSum = goodsDOList.stream().mapToInt(GoodsDO::getMaterialUnitEaQuantity).sum();
|
||||
purchaseOrderDo.setMaterialInfo(goodNames);
|
||||
purchaseOrderDo.setMaterialNum(goodSum);
|
||||
Long orderId = purchaseOrderDomainService.insertReturnId(purchaseOrderDo);
|
||||
//2、采购订单结算信息保存
|
||||
SettlementDO settlementDo = purchaseOrderAddDO.getSettlementDo();
|
||||
//数据字典信息获取:结算方式、支付状态
|
||||
AjaxResult settlementDict = systemServiceFeign.selectListByDictType(DictCode.OMS_SETTLE_WAY.getCode());
|
||||
if (!"200".equals(String.valueOf(settlementDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(结算方式-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> settlementDictListDictMap = settlementDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!settlementDictListDictMap.containsKey(settlementDo.getSettlementWayId())) {
|
||||
throw new ServiceException("结算方式未找到");
|
||||
}
|
||||
AjaxResult payStateDict = systemServiceFeign.selectListByDictType(DictCode.OMS_PYA_STATE.getCode());
|
||||
if (!"200".equals(String.valueOf(payStateDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(支付状态-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> payStateDictMap = payStateDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!payStateDictMap.containsKey(settlementDo.getPayStatusId())) {
|
||||
throw new ServiceException("支付状态未找到");
|
||||
}
|
||||
settlementDo.setOrderId(orderId);
|
||||
settlementDo.setSettlementWay(settlementDictListDictMap.get(settlementDo.getSettlementWayId()));
|
||||
settlementDo.setPayStatus(payStateDictMap.get(settlementDo.getPayStatusId()));
|
||||
settlementDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
settlementDomainService.insert(settlementDo);
|
||||
//3、采购订单发货信息保存
|
||||
DeliveryInfoDO deliveryInfoDo = purchaseOrderAddDO.getDeliveryInfoDo();
|
||||
deliveryInfoDo.setOrderId(orderId);
|
||||
deliveryInfoDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveryInfoDomainService.insert(deliveryInfoDo);
|
||||
//4、采购订单收货信息保存
|
||||
ReceiptInfoDO receiptInfoDo = purchaseOrderAddDO.getReceiptInfoDo();
|
||||
receiptInfoDo.setOrderId(orderId);
|
||||
receiptInfoDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
receiptInfoDomainService.insert(receiptInfoDo);
|
||||
//5、采购订单物流信息保存
|
||||
LogisticsDO logisticsDo = purchaseOrderAddDO.getLogisticsDo();
|
||||
AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.OMS_TRANSPORT_TYPE.getCode());
|
||||
if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(运输方式-OMS)获取失败");
|
||||
}
|
||||
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(logisticsDo.getShippingTypeId())) {
|
||||
// throw new ServiceException("运输方式未找到");
|
||||
// }
|
||||
logisticsDo.setShippingType(transportTypeDictMap.get(logisticsDo.getShippingTypeId()));
|
||||
logisticsDo.setOrderId(orderId);
|
||||
logisticsDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
logisticsDomainService.insert(logisticsDo);
|
||||
//6、采购订单物料信息保存
|
||||
|
||||
//6.1、物料信息删除
|
||||
goodsDomainService.deleteByOrderId(orderId);
|
||||
//6.1、物料信息保存
|
||||
goodsDOList.forEach(goodsDO -> {
|
||||
goodsDO.setOrderId(orderId);
|
||||
goodsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
});
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改采购订单管理
|
||||
*/
|
||||
@Transactional
|
||||
public Boolean update(PurchaseOrderAddDO purchaseOrderAddDO) {
|
||||
|
||||
//1、采购订单基本信息保存
|
||||
PurchaseOrderDO purchaseOrderDo = purchaseOrderAddDO.getPurchaseOrderDo();
|
||||
List<GoodsDO> goodsDOList = purchaseOrderAddDO.getGoodsDOList();
|
||||
//查询订单类型信息
|
||||
OrderTypePO orderTypePO = orderTypeDomainService.getInfo(purchaseOrderDo.getOrderTypeId());
|
||||
purchaseOrderDo.setJobTaskTypeId(orderTypePO.getJobTaskTypeId());
|
||||
purchaseOrderDo.setJobTaskType(orderTypePO.getJobTaskType());
|
||||
purchaseOrderDo.setOrderType(orderTypePO.getOrderType());
|
||||
purchaseOrderDo.setDeliverySystem(orderTypePO.getDeliverySystem());
|
||||
//物料信息
|
||||
String goodNames = goodsDOList.stream().map(GoodsDO::getGoodsName).collect(Collectors.joining(","));
|
||||
//物料数量
|
||||
Integer goodSum = goodsDOList.stream().mapToInt(GoodsDO::getMaterialUnitEaQuantity).sum();
|
||||
purchaseOrderDo.setMaterialInfo(goodNames);
|
||||
purchaseOrderDo.setMaterialNum(goodSum);
|
||||
purchaseOrderDomainService.update(purchaseOrderDo);
|
||||
//2、采购订单结算信息保存
|
||||
SettlementDO settlementDo = purchaseOrderAddDO.getSettlementDo();
|
||||
//数据字典信息获取:结算方式、支付状态
|
||||
AjaxResult settlementDict = systemServiceFeign.selectListByDictType(DictCode.OMS_SETTLE_WAY.getCode());
|
||||
if (!"200".equals(String.valueOf(settlementDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(结算方式-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> settlementDictListDictMap = settlementDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!settlementDictListDictMap.containsKey(settlementDo.getSettlementWayId())) {
|
||||
throw new ServiceException("结算方式未找到");
|
||||
}
|
||||
AjaxResult payStateDict = systemServiceFeign.selectListByDictType(DictCode.OMS_PYA_STATE.getCode());
|
||||
if (!"200".equals(String.valueOf(payStateDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(支付状态-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> payStateDictMap = payStateDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!payStateDictMap.containsKey(settlementDo.getPayStatusId())) {
|
||||
throw new ServiceException("支付状态未找到");
|
||||
}
|
||||
settlementDo.setOrderId(purchaseOrderDo.getId());
|
||||
settlementDo.setSettlementWay(settlementDictListDictMap.get(settlementDo.getSettlementWayId()));
|
||||
settlementDo.setPayStatus(payStateDictMap.get(settlementDo.getPayStatusId()));
|
||||
if(settlementDo.getId() != null){//如果ID不为空则走修改方法
|
||||
settlementDomainService.update(settlementDo);
|
||||
} else {
|
||||
settlementDomainService.insert(settlementDo);
|
||||
}
|
||||
|
||||
//3、采购订单发货信息保存
|
||||
DeliveryInfoDO deliveryInfoDo = purchaseOrderAddDO.getDeliveryInfoDo();
|
||||
deliveryInfoDo.setOrderId(purchaseOrderDo.getId());
|
||||
if (deliveryInfoDo.getId() != null) {
|
||||
deliveryInfoDomainService.update(deliveryInfoDo);
|
||||
} else {
|
||||
deliveryInfoDomainService.insert(deliveryInfoDo);
|
||||
}
|
||||
|
||||
//4、采购订单收货信息保存
|
||||
ReceiptInfoDO receiptInfoDo = purchaseOrderAddDO.getReceiptInfoDo();
|
||||
receiptInfoDo.setOrderId(purchaseOrderDo.getId());
|
||||
if (receiptInfoDo.getOrderId() != null) {
|
||||
receiptInfoDomainService.update(receiptInfoDo);
|
||||
} else {
|
||||
receiptInfoDomainService.insert(receiptInfoDo);
|
||||
}
|
||||
|
||||
//5、采购订单物流信息保存
|
||||
LogisticsDO logisticsDo = purchaseOrderAddDO.getLogisticsDo();
|
||||
|
||||
AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.OMS_TRANSPORT_TYPE.getCode());
|
||||
if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(运输方式-OMS)获取失败");
|
||||
}
|
||||
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(logisticsDo.getShippingTypeId())) {
|
||||
throw new ServiceException("运输方式未找到");
|
||||
}
|
||||
|
||||
logisticsDo.setOrderId(purchaseOrderDo.getId());
|
||||
logisticsDo.setShippingType(transportTypeDictMap.get(logisticsDo.getShippingTypeId()));
|
||||
if (logisticsDo.getId() != null) {
|
||||
logisticsDomainService.update(logisticsDo);
|
||||
} else {
|
||||
logisticsDomainService.insert(logisticsDo);
|
||||
}
|
||||
|
||||
//6、采购订单物料信息保存
|
||||
|
||||
//6.1、物料信息删除
|
||||
goodsDomainService.deleteByOrderId(purchaseOrderDo.getId());
|
||||
//6.1、物料信息保存
|
||||
goodsDOList.forEach(goodsDO -> goodsDO.setOrderId(purchaseOrderDo.getId()));
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除采购订单管理
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return purchaseOrderDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取采购订单管理详细信息
|
||||
*/
|
||||
public PurchaseOrderDetailsPO getInfo(Long id)
|
||||
{
|
||||
return purchaseOrderDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 采购订单审核
|
||||
* @param purchaseOrderAuditDO
|
||||
* @return
|
||||
*/
|
||||
public Boolean audit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
|
||||
return purchaseOrderDomainService.audit(purchaseOrderAuditDO);
|
||||
}
|
||||
|
||||
public Boolean cancelAudit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
return purchaseOrderDomainService.cancelAudit(purchaseOrderAuditDO);
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void importPurOrderExcel(List<PurchaseOrderExcelDTO> purchaseOrderExcelDtoList) {
|
||||
// TODO:缺少对ID字段的相关处理
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
if (CollUtil.isEmpty(purchaseOrderExcelDtoList)) {
|
||||
throw new ServiceException("导入信息为空");
|
||||
}
|
||||
List<SettlementDO> settlementDOList = new ArrayList<>();
|
||||
List<DeliveryInfoDO> deliveryInfoDOList = new ArrayList<>();
|
||||
List<ReceiptInfoDO> receiptInfoDOList = new ArrayList<>();
|
||||
List<LogisticsDO> logisticsDOList = new ArrayList<>();
|
||||
List<GoodsDO> goodsDOList = new ArrayList<>();
|
||||
|
||||
// =================== 遍历导入数据,保存销售订单并将其余表数据处理为可批量插入的数据 =========================
|
||||
purchaseOrderExcelDtoList.forEach( x -> {
|
||||
// 采购订单信息
|
||||
PurchaseOrder purOrder = purchaseOrderDomainService.saveFromImportSalesOrder(x);
|
||||
// 结算信息保存到列表中进行批量保存
|
||||
settlementDomainService.listAddFromImportPurOrder(settlementDOList, x, purOrder);
|
||||
// 发货信息保存到列表中进行批量保存
|
||||
deliveryInfoDomainService.listAddFromImportPurOrder(deliveryInfoDOList, x, purOrder);
|
||||
// 收货信息保存到列表中进行批量保存
|
||||
receiptInfoDomainService.listAddFromImportPurOrder(receiptInfoDOList, x, purOrder);
|
||||
// 物流信息保存到列表中进行批量保存
|
||||
logisticsDomainService.listAddFromImportPurOrder(logisticsDOList, x, purOrder);
|
||||
// 物料信息保存到列表中进行批量保存(导入的每个订单只能有一条明细)
|
||||
goodsDomainService.listAddFromImportPurOrder(goodsDOList, x, purOrder);
|
||||
});
|
||||
|
||||
// ================== 列表存在数据则保存 ==================
|
||||
if(settlementDOList.size() > 0){
|
||||
settlementDomainService.batchInsert(settlementDOList);
|
||||
}
|
||||
if(deliveryInfoDOList.size() > 0){
|
||||
deliveryInfoDomainService.batchInsert(deliveryInfoDOList);
|
||||
}
|
||||
if(receiptInfoDOList.size() > 0){
|
||||
receiptInfoDomainService.batchInsert(receiptInfoDOList);
|
||||
}
|
||||
if(logisticsDOList.size() > 0){
|
||||
logisticsDomainService.batchInsert(logisticsDOList);
|
||||
}
|
||||
if(goodsDOList.size() > 0){
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
}
|
||||
}
|
||||
|
||||
public List<PurchaseOrderPO> orderPoolList(PurchaseOrderDO purchaseOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
purchaseOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
purchaseOrderDO.setSource(1);
|
||||
|
||||
return purchaseOrderDomainService.queryList(purchaseOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 拦截采购订单
|
||||
*
|
||||
* 传入多个订单ID,获取订单下全部任务并分组MAP <订单m,List<m下的所有任务n>>,
|
||||
* 遍历分组,处理每组对应的采购订单及任务列表
|
||||
* 不管拦截成功或失败,都会新增一条记录到拦截表中,拦截成功后会同步修改下游数据表中的状态
|
||||
*
|
||||
* @param idList
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void interceptOrder(List<Long> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
|
||||
// 查询采购订单列表下所有的任务组 <订单m,List<m下的所有任务n>>,
|
||||
Map<Long, List<TaskOrderPO>> taskMapGroupByOrderId = taskOrderDomainService.getMapByOrderIdList(idList, OrderConstant.SCM_SOURCE_1);
|
||||
|
||||
taskMapGroupByOrderId.forEach((k,v) -> {
|
||||
// 校验订单
|
||||
PurchaseOrderDetailsPO purOrder = purchaseOrderDomainService.getInfo(k);
|
||||
if(ArrayUtil.contains(OrderConstant.PUR_STATUS_GROUP_UNABLE_INTERCEPT, purOrder.getPurchaseOrderPO().getOrderState())){
|
||||
throw new ServiceException(String.format("【%s】当前订单状态无需进行拦截!",purOrder.getPurchaseOrderPO().getOrderNo()));
|
||||
//break;
|
||||
}
|
||||
|
||||
// 保存订单拦截表
|
||||
InterceptOrderDO interceptOrderDO = interceptOrderDomainService.saveInterceptOrder(k, v);
|
||||
|
||||
// 拦截成功修改其他表数据
|
||||
if(OrderConstant.INTERCEPT_STATUS_1.equals(interceptOrderDO.getInterceptState())){
|
||||
// 采购订单修改为已拦截
|
||||
purchaseOrderDomainService.updateStateById(k, OrderConstant.PUR_STATUS_8);
|
||||
// 供应链订单修改为已拦截
|
||||
scmOrderDomainService.interceptByOrderId(k);
|
||||
// 作业任务修改为已拦截(排除已取消状态的)
|
||||
taskOrderDomainService.interceptByOrderId(k);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Boolean createSco(List<Long> ids) {
|
||||
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
String userName = loginUser.getUsername();
|
||||
// 获取登录人id
|
||||
Long userId = loginUser.getUserid();
|
||||
|
||||
//1、先查询采购订单的基本信息
|
||||
List<PurchaseOrderPO> purchaseOrderPOS = purchaseOrderDomainService.getInfo(ids);
|
||||
//1、1 采购订单只有在已审核状态下才可以生成供应链订单
|
||||
List<PurchaseOrderPO> stateCount = purchaseOrderPOS.stream().filter(e -> e.getOrderState() != 2).collect(Collectors.toList());
|
||||
if (!stateCount.isEmpty()) {
|
||||
throw new ServiceException("已审核状态下才可以生成供应链订单");
|
||||
}
|
||||
//1.2 更新采购订单的状态
|
||||
List<PurchaseOrderDO> purchaseOrderDOS = purchaseOrderPOS.stream().map(purchaseOrderPO -> {
|
||||
PurchaseOrderDO purchaseOrderDO = new PurchaseOrderDO();
|
||||
BeanUtils.copyProperties(purchaseOrderPO, purchaseOrderDO);
|
||||
purchaseOrderDO.setOrderState(4);
|
||||
return purchaseOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
Boolean updateBoolean = purchaseOrderDomainService.batchUpdate(purchaseOrderDOS);
|
||||
|
||||
//2、数据处理,采购订单处理成供应链订单
|
||||
List<ScmOrderDO> scmOrderDOS = purchaseOrderPOS.stream().map(purchaseOrderPO -> {
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
scmOrderDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0")));
|
||||
scmOrderDO.setCreateByName(userName);
|
||||
scmOrderDO.setCreateTime(new Date());
|
||||
scmOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
scmOrderDO.setScmSource(1);
|
||||
scmOrderDO.setOrderId(purchaseOrderPO.getId());
|
||||
scmOrderDO.setScmNo(OrderSequence.getOrderCode(OrderConstant.SCM_NO_PREFIX));
|
||||
return scmOrderDO;
|
||||
|
||||
}).collect(Collectors.toList());
|
||||
Boolean insertBoolean = false;
|
||||
if (Boolean.TRUE.equals(updateBoolean)) {
|
||||
insertBoolean = scmOrderDomainService.batchInsert(scmOrderDOS);
|
||||
}
|
||||
return insertBoolean;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Boolean cancelSco(List<Long> ids) {
|
||||
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
|
||||
|
||||
//查询所有的采购订单信息
|
||||
List<PurchaseOrderPO> purchaseOrderPOS = purchaseOrderDomainService.getInfo(ids);
|
||||
//判断一下是否生成供应链订单,未生成则不需要取消
|
||||
List<PurchaseOrderPO> purchaseCollect = purchaseOrderPOS.stream().filter(purchaseOrderPO -> purchaseOrderPO.getOrderState() < 4)
|
||||
.collect(Collectors.toList());
|
||||
if (!purchaseCollect.isEmpty()) {
|
||||
throw new ServiceException("供应链订单尚未生成,无需进行取消");
|
||||
}
|
||||
|
||||
//根据采购订单查询作业任务
|
||||
List<TaskOrderPO> taskOrderPOS = taskOrderDomainService.getInfosByOrderId(ids);
|
||||
//过滤作业任务(如果作业任务包含未下发/已下发/已完成 的,则不允许取消作业任务)
|
||||
List<TaskOrderPO> collect = taskOrderPOS.stream().filter(taskOrderPO -> taskOrderPO.getTaskStatus() == 0 ||
|
||||
taskOrderPO.getTaskStatus() == 1 || taskOrderPO.getTaskStatus() == 2).collect(Collectors.toList());
|
||||
|
||||
if (!collect.isEmpty()) {
|
||||
throw new ServiceException("该订单已生成作业任务,当前无法进行供应链订单的取消操作");
|
||||
}
|
||||
//查询所有的供应链订单信息,根据采购单ID
|
||||
List<ScmOrderPO> scmOrderPOS = scmOrderDomainService.getInfosByOrderId(ids);
|
||||
//修改供应链订单状态,修改未已取消状态
|
||||
List<ScmOrderDO> scmOrderDOS = scmOrderPOS.stream().map(scmOrderPO -> {
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
scmOrderDO.setId(scmOrderPO.getId());
|
||||
scmOrderDO.setOrderState(7);
|
||||
scmOrderDO.setUpdateTime(new Date());
|
||||
scmOrderDO.setUpdateBy(loginUser.getUserid());
|
||||
scmOrderDO.setUpdateByName(loginUser.getUsername());
|
||||
return scmOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
if (scmOrderDOS.isEmpty()) {
|
||||
throw new ServiceException("未查询到供应链订单");
|
||||
}
|
||||
Boolean scm = scmOrderDomainService.batchUpdate(scmOrderDOS);
|
||||
// 修改采购订单,采购订单修改为已审核状态下
|
||||
List<PurchaseOrderDO> purchaseOrderDOS = purchaseOrderPOS.stream().map(purchaseOrderPO -> {
|
||||
PurchaseOrderDO purchaseOrderDO = new PurchaseOrderDO();
|
||||
purchaseOrderDO.setId(purchaseOrderPO.getId());
|
||||
purchaseOrderDO.setOrderState(2);
|
||||
purchaseOrderDO.setUpdateTime(new Date());
|
||||
purchaseOrderDO.setUpdateBy(loginUser.getUserid());
|
||||
purchaseOrderDO.setUpdateByName(loginUser.getUsername());
|
||||
return purchaseOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
if (Boolean.TRUE.equals(scm)) {
|
||||
return purchaseOrderDomainService.batchUpdate(purchaseOrderDOS);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.receiptInfo;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.receiptInfo.service.ReceiptInfoDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ReceiptInfoApplicationService {
|
||||
@Autowired
|
||||
private ReceiptInfoDomainService receiptInfoDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询收货信息列表
|
||||
*/
|
||||
|
||||
public List<ReceiptInfoPO> queryList(ReceiptInfoDO receiptInfoDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
receiptInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return receiptInfoDomainService.queryList(receiptInfoDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增收货信息
|
||||
*/
|
||||
public Boolean insert(ReceiptInfoDO receiptInfoDO) {
|
||||
|
||||
return receiptInfoDomainService.insert(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改收货信息
|
||||
*/
|
||||
public Boolean update(ReceiptInfoDO receiptInfoDO) {
|
||||
return receiptInfoDomainService.update(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除收货信息
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return receiptInfoDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取收货信息详细信息
|
||||
*/
|
||||
public ReceiptInfoPO getInfo(Long id)
|
||||
{
|
||||
return receiptInfoDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+537
@@ -0,0 +1,537 @@
|
||||
package com.mhd.oms.application.service.salesOrder;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.github.pagehelper.util.StringUtil;
|
||||
import com.mhd.common.core.enums.DictCode;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
|
||||
import com.mhd.common.core.utils.OrderSequence;
|
||||
import com.mhd.common.core.web.domain.AjaxResult;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.deliveryInfo.service.DeliveryInfoDomainService;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.goods.service.GoodsDomainService;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
import com.mhd.oms.domain.interceptOrder.service.InterceptOrderDomainService;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.logistics.service.LogisticsDomainService;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.service.OrderTypeDomainService;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.receiptInfo.service.ReceiptInfoDomainService;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderDetailsPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderAddDO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderAuditDO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderDO;
|
||||
import com.mhd.oms.domain.salesOrder.service.SalesOrderDomainService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import com.mhd.oms.domain.scmOrder.service.ScmOrderDomainService;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import com.mhd.oms.domain.settlement.service.SettlementDomainService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.service.TaskOrderDomainService;
|
||||
import com.mhd.oms.infrastructure.feign.vo.SysDictDataVo;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.SystemServiceFeign;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 销售订单ApplicationService
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SalesOrderApplicationService {
|
||||
@Autowired
|
||||
private SalesOrderDomainService salesOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private ScmOrderDomainService scmOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private TaskOrderDomainService taskOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private OrderTypeDomainService orderTypeDomainService;//订单类型关系
|
||||
|
||||
@Resource
|
||||
private SystemServiceFeign systemServiceFeign;
|
||||
|
||||
@Resource
|
||||
private SettlementDomainService settlementDomainService;
|
||||
|
||||
@Resource
|
||||
private DeliveryInfoDomainService deliveryInfoDomainService;
|
||||
|
||||
@Resource
|
||||
private ReceiptInfoDomainService receiptInfoDomainService;
|
||||
|
||||
@Resource
|
||||
private LogisticsDomainService logisticsDomainService;
|
||||
|
||||
@Resource
|
||||
private GoodsDomainService goodsDomainService;
|
||||
|
||||
@Resource
|
||||
private InterceptOrderDomainService interceptOrderDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询销售订单列表
|
||||
*/
|
||||
|
||||
public List<SalesOrderPO> queryList(SalesOrderDO salesOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
salesOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
salesOrderDO.setSource(0);
|
||||
return salesOrderDomainService.queryList(salesOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单池,查询source 等于 1
|
||||
* @param salesOrderDO
|
||||
* @return
|
||||
*/
|
||||
public List<SalesOrderPO> listPool(SalesOrderDO salesOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
salesOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
salesOrderDO.setSource(1);
|
||||
return salesOrderDomainService.queryList(salesOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增销售订单
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insert(SalesOrderAddDO salesOrderAddDO) {
|
||||
//获取当前登录人,获取当前登录人的租户
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
//1、销售订单基本信息保存
|
||||
SalesOrderDO salesOrderDO = salesOrderAddDO.getSalesOrderDO();
|
||||
//查询订单关系表信息
|
||||
OrderTypePO orderTypePO = orderTypeDomainService.getInfo(salesOrderDO.getOrderTypeId());
|
||||
salesOrderDO.setJobTaskTypeId(orderTypePO.getJobTaskTypeId());
|
||||
salesOrderDO.setJobTaskType(orderTypePO.getJobTaskType());
|
||||
salesOrderDO.setOrderType(orderTypePO.getOrderType());
|
||||
salesOrderDO.setDeliverySystem(orderTypePO.getDeliverySystem());
|
||||
salesOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
Long orderId = salesOrderDomainService.insertReturnId(salesOrderDO);
|
||||
//2、销售订单结算信息保存
|
||||
SettlementDO settlementDo = salesOrderAddDO.getSettlementDO();
|
||||
//数据字典信息获取:结算方式、支付状态
|
||||
AjaxResult settlementDict = systemServiceFeign.selectListByDictType(DictCode.OMS_SETTLE_WAY.getCode());
|
||||
if (!"200".equals(String.valueOf(settlementDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(结算方式-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> settlementDictListDictMap = settlementDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!settlementDictListDictMap.containsKey(settlementDo.getSettlementWayId())) {
|
||||
throw new ServiceException("结算方式未找到");
|
||||
}
|
||||
AjaxResult payStateDict = systemServiceFeign.selectListByDictType(DictCode.OMS_PYA_STATE.getCode());
|
||||
if (!"200".equals(String.valueOf(payStateDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(支付状态-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> payStateDictMap = payStateDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!payStateDictMap.containsKey(settlementDo.getPayStatusId())) {
|
||||
throw new ServiceException("支付状态未找到");
|
||||
}
|
||||
settlementDo.setOrderId(orderId);
|
||||
settlementDo.setSettlementWay(settlementDictListDictMap.get(settlementDo.getSettlementWayId()));
|
||||
settlementDo.setPayStatus(payStateDictMap.get(settlementDo.getPayStatusId()));
|
||||
settlementDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
settlementDomainService.insert(settlementDo);
|
||||
|
||||
//3、销售订单发货信息保存
|
||||
DeliveryInfoDO deliveryInfoDo = salesOrderAddDO.getDeliveryInfoDO();
|
||||
deliveryInfoDo.setOrderId(orderId);
|
||||
deliveryInfoDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveryInfoDomainService.insert(deliveryInfoDo);
|
||||
//4、销售订单收货信息保存
|
||||
ReceiptInfoDO receiptInfoDo = salesOrderAddDO.getReceiptInfoDO();
|
||||
receiptInfoDo.setOrderId(orderId);
|
||||
receiptInfoDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
receiptInfoDomainService.insert(receiptInfoDo);
|
||||
//5、销售订单物流信息保存
|
||||
LogisticsDO logisticsDo = salesOrderAddDO.getLogisticsDO();
|
||||
logisticsDo.setOrderId(orderId);
|
||||
logisticsDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
if(StringUtil.isNotEmpty(logisticsDo.getShippingTypeId())){
|
||||
AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.OMS_TRANSPORT_TYPE.getCode());
|
||||
if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(运输方式-OMS)获取失败");
|
||||
}
|
||||
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(logisticsDo.getShippingTypeId())) {
|
||||
throw new ServiceException("运输方式未找到");
|
||||
}
|
||||
logisticsDo.setShippingType(transportTypeDictMap.get(logisticsDo.getShippingTypeId()));
|
||||
}
|
||||
logisticsDomainService.insert(logisticsDo);
|
||||
//6、销售订单物料信息保存
|
||||
List<GoodsDO> goodsDOList = salesOrderAddDO.getGoodsDOS();
|
||||
//6.1、物料信息删除
|
||||
goodsDomainService.deleteByOrderId(orderId);
|
||||
//6.1、物料信息保存
|
||||
goodsDOList.forEach(goodsDO -> {
|
||||
goodsDO.setOrderId(orderId);
|
||||
goodsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
});
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改销售订单
|
||||
*/
|
||||
public Boolean update(SalesOrderAddDO salesOrderAddDO) {
|
||||
//1、采购订单基本信息保存
|
||||
SalesOrderDO salesOrderDO = salesOrderAddDO.getSalesOrderDO();
|
||||
List<GoodsDO> goodsDOList = salesOrderAddDO.getGoodsDOS();
|
||||
//查询订单类型信息
|
||||
OrderTypePO orderTypePO = orderTypeDomainService.getInfo(salesOrderDO.getOrderTypeId());
|
||||
salesOrderDO.setJobTaskTypeId(orderTypePO.getJobTaskTypeId());
|
||||
salesOrderDO.setJobTaskType(orderTypePO.getJobTaskType());
|
||||
salesOrderDO.setOrderType(orderTypePO.getOrderType());
|
||||
salesOrderDO.setDeliverySystem(orderTypePO.getDeliverySystem());
|
||||
//物料信息
|
||||
//String goodNames = goodsDOList.stream().map(GoodsDO::getGoodsName).collect(Collectors.joining(","));
|
||||
//物料数量
|
||||
//Integer goodSum = goodsDOList.stream().mapToInt(GoodsDO::getMaterialUnitEaQuantity).sum();
|
||||
//salesOrderDO.setMaterialInfo(goodNames);
|
||||
//salesOrderDO.setMaterialNum(goodSum);
|
||||
salesOrderDomainService.update(salesOrderDO);
|
||||
//2、采购订单结算信息保存
|
||||
SettlementDO settlementDo = salesOrderAddDO.getSettlementDO();
|
||||
//数据字典信息获取:结算方式、支付状态
|
||||
AjaxResult settlementDict = systemServiceFeign.selectListByDictType(DictCode.OMS_SETTLE_WAY.getCode());
|
||||
if (!"200".equals(String.valueOf(settlementDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(结算方式-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> settlementDictList = JSONUtil.toList(JSONUtil.toJsonStr(settlementDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> settlementDictListDictMap = settlementDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!settlementDictListDictMap.containsKey(settlementDo.getSettlementWayId())) {
|
||||
throw new ServiceException("结算方式未找到");
|
||||
}
|
||||
AjaxResult payStateDict = systemServiceFeign.selectListByDictType(DictCode.OMS_PYA_STATE.getCode());
|
||||
if (!"200".equals(String.valueOf(payStateDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(支付状态-OMS)获取失败");
|
||||
}
|
||||
List<SysDictDataVo> payStateDictList = JSONUtil.toList(JSONUtil.toJsonStr(payStateDict.get("data")), SysDictDataVo.class);
|
||||
Map<String, String> payStateDictMap = payStateDictList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
if (!payStateDictMap.containsKey(settlementDo.getPayStatusId())) {
|
||||
throw new ServiceException("支付状态未找到");
|
||||
}
|
||||
settlementDo.setOrderId(salesOrderDO.getId());
|
||||
settlementDo.setSettlementWay(settlementDictListDictMap.get(settlementDo.getSettlementWayId()));
|
||||
settlementDo.setPayStatus(payStateDictMap.get(settlementDo.getPayStatusId()));
|
||||
if(settlementDo.getId() != null){//如果ID不为空则走修改方法
|
||||
settlementDomainService.update(settlementDo);
|
||||
} else {
|
||||
settlementDomainService.insert(settlementDo);
|
||||
}
|
||||
|
||||
//3、销售订单发货信息保存
|
||||
DeliveryInfoDO deliveryInfoDo = salesOrderAddDO.getDeliveryInfoDO();
|
||||
deliveryInfoDo.setOrderId(salesOrderDO.getId());
|
||||
if (deliveryInfoDo.getId() != null) {
|
||||
deliveryInfoDomainService.update(deliveryInfoDo);
|
||||
} else {
|
||||
deliveryInfoDomainService.insert(deliveryInfoDo);
|
||||
}
|
||||
|
||||
//4、销售订单收货信息保存
|
||||
ReceiptInfoDO receiptInfoDo = salesOrderAddDO.getReceiptInfoDO();
|
||||
receiptInfoDo.setOrderId(salesOrderDO.getId());
|
||||
if (receiptInfoDo.getOrderId() != null) {
|
||||
receiptInfoDomainService.update(receiptInfoDo);
|
||||
} else {
|
||||
receiptInfoDomainService.insert(receiptInfoDo);
|
||||
}
|
||||
|
||||
//5、销售订单物流信息保存
|
||||
LogisticsDO logisticsDo = salesOrderAddDO.getLogisticsDO();
|
||||
|
||||
AjaxResult transportTypeDict = systemServiceFeign.selectListByDictType(DictCode.OMS_TRANSPORT_TYPE.getCode());
|
||||
if (!"200".equals(String.valueOf(transportTypeDict.get("code")))) {
|
||||
throw new ServiceException("字典信息(运输方式-OMS)获取失败");
|
||||
}
|
||||
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(logisticsDo.getShippingTypeId())) {
|
||||
throw new ServiceException("运输方式未找到");
|
||||
}
|
||||
|
||||
logisticsDo.setOrderId(salesOrderDO.getId());
|
||||
logisticsDo.setShippingType(transportTypeDictMap.get(logisticsDo.getShippingTypeId()));
|
||||
if (logisticsDo.getId() != null) {
|
||||
logisticsDomainService.update(logisticsDo);
|
||||
} else {
|
||||
logisticsDomainService.insert(logisticsDo);
|
||||
}
|
||||
|
||||
//6、销售订单物料信息保存
|
||||
|
||||
//6.1、物料信息删除
|
||||
goodsDomainService.deleteByOrderId(salesOrderDO.getId());
|
||||
//6.1、物料信息保存
|
||||
goodsDOList.forEach(goodsDO -> goodsDO.setOrderId(salesOrderDO.getId()));
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除销售订单
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return salesOrderDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取销售订单详细信息
|
||||
*/
|
||||
public SalesOrderPO getInfo(Long id)
|
||||
{
|
||||
return salesOrderDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public Boolean createSco(List<Long> ids) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
//供应链订单号
|
||||
String scmNo = OrderSequence.getOrderCode(OrderConstant.SCM_NO_PREFIX);
|
||||
String userName = loginUser.getUsername();
|
||||
// 获取登录人id
|
||||
Long userId = loginUser.getUserid();
|
||||
//1、先查询销售订单的基本信息
|
||||
List<SalesOrderPO> salesOrderPOS = salesOrderDomainService.getInfos(ids);
|
||||
if (salesOrderPOS.isEmpty()) {
|
||||
throw new ServiceException("未查询到匹配的销售订单信息");
|
||||
}
|
||||
//2、销售订单只有在已审核状态下才可以生成供应链订单
|
||||
List<SalesOrderPO> stateCount = salesOrderPOS.stream().filter(e -> e.getOrderState() != 2).collect(Collectors.toList());
|
||||
if (!stateCount.isEmpty()) {
|
||||
throw new ServiceException("已审核状态下才可以生成供应链订单");
|
||||
}
|
||||
//3、更新销售订单的状态
|
||||
List<SalesOrderDO> salesOrderDOS = salesOrderPOS.stream().map(salesOrderPO -> {
|
||||
SalesOrderDO salesOrderDO = new SalesOrderDO();
|
||||
BeanUtils.copyProperties(salesOrderPO, salesOrderDO);
|
||||
salesOrderDO.setOrderState(4);
|
||||
salesOrderDO.setScoNo(scmNo);//回填供应链订单号
|
||||
return salesOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
//4、批量更新销售订单
|
||||
Boolean updateBoolean = salesOrderDomainService.batchUpdate(salesOrderDOS);
|
||||
//5、数据处理,销售订单处理成供应链订单
|
||||
List<ScmOrderDO> scmOrderDOS = salesOrderPOS.stream().map(salesOrderPO -> {
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
scmOrderDO.setCreateBy(ObjectUtil.defaultIfNull(userId, new Long("0")));
|
||||
scmOrderDO.setCreateByName(userName);
|
||||
scmOrderDO.setCreateTime(new Date());
|
||||
scmOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
scmOrderDO.setScmSource(2);
|
||||
scmOrderDO.setOrderId(salesOrderPO.getId());
|
||||
scmOrderDO.setScmNo(scmNo);
|
||||
return scmOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
Boolean insertBoolean = false;
|
||||
if (Boolean.TRUE.equals(updateBoolean)) {
|
||||
insertBoolean = scmOrderDomainService.batchInsert(scmOrderDOS);
|
||||
}
|
||||
|
||||
return insertBoolean;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Boolean audit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
return salesOrderDomainService.audit(salesOrderAuditDO);
|
||||
}
|
||||
|
||||
public Boolean cancelAudit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
return salesOrderDomainService.cancelAudit(salesOrderAuditDO);
|
||||
}
|
||||
|
||||
public Boolean cancelSco(List<Long> ids) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
//查询所有的销售订单信息
|
||||
List<SalesOrderPO> salesOrderPOS = salesOrderDomainService.getInfos(ids);
|
||||
//判断一下是否生成供应链订单,未生成则不需要取消
|
||||
List<SalesOrderPO> salesCollect = salesOrderPOS.stream().filter(salesOrderPO -> salesOrderPO.getOrderState() < 4)
|
||||
.collect(Collectors.toList());
|
||||
if (!salesCollect.isEmpty()) {
|
||||
throw new ServiceException("供应链订单尚未生成,无需进行取消");
|
||||
}
|
||||
|
||||
//根据采购订单查询作业任务
|
||||
List<TaskOrderPO> taskOrderPOS = taskOrderDomainService.getInfosByOrderId(ids);
|
||||
//过滤作业任务(如果作业任务包含未下发/已下发/已完成 的,则不允许取消作业任务)
|
||||
List<TaskOrderPO> collect = taskOrderPOS.stream().filter(taskOrderPO -> taskOrderPO.getTaskStatus() == 0 ||
|
||||
taskOrderPO.getTaskStatus() == 1 || taskOrderPO.getTaskStatus() == 2).collect(Collectors.toList());
|
||||
if (!collect.isEmpty()) {
|
||||
throw new ServiceException("订单已生成作业任务,当前无法进行供应链订单的取消操作");
|
||||
}
|
||||
//查询所有的供应链订单信息,根据采购单ID
|
||||
List<ScmOrderPO> scmOrderPOS = scmOrderDomainService.getInfosByOrderId(ids);
|
||||
//修改供应链订单状态,修改未已取消状态
|
||||
List<ScmOrderDO> scmOrderDOS = scmOrderPOS.stream().map(scmOrderPO -> {
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
scmOrderDO.setId(scmOrderPO.getId());
|
||||
scmOrderDO.setOrderState(7);
|
||||
scmOrderDO.setUpdateTime(new Date());
|
||||
scmOrderDO.setUpdateBy(loginUser.getUserid());
|
||||
scmOrderDO.setUpdateByName(loginUser.getUsername());
|
||||
return scmOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
if (scmOrderDOS.isEmpty()) {
|
||||
throw new ServiceException("未查询到供应链订单");
|
||||
}
|
||||
Boolean scm = scmOrderDomainService.batchUpdate(scmOrderDOS);
|
||||
// 修改销售订单,销售订单修改为已审核状态下
|
||||
List<SalesOrderDO> salesOrderDOS = salesOrderPOS.stream().map(salesOrderPO -> {
|
||||
SalesOrderDO salesOrderDO = new SalesOrderDO();
|
||||
salesOrderDO.setId(salesOrderPO.getId());
|
||||
salesOrderDO.setOrderState(2);
|
||||
salesOrderDO.setScoNo("");
|
||||
salesOrderDO.setUpdateTime(new Date());
|
||||
salesOrderDO.setUpdateBy(loginUser.getUserid());
|
||||
salesOrderDO.setUpdateByName(loginUser.getUsername());
|
||||
return salesOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
if (Boolean.TRUE.equals(scm)) {
|
||||
return salesOrderDomainService.batchUpdate(salesOrderDOS);
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Boolean interceptOrder(List<Long> idList) {
|
||||
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
|
||||
// 查询销售订单列表下所有的任务组
|
||||
Map<Long, List<TaskOrderPO>> taskMapGroupByOrderId = taskOrderDomainService.getMapByOrderIdList(idList, OrderConstant.SCM_SOURCE_2);
|
||||
// 遍历采购订单下的任务信息,有已下发、已完成、未下发已合并的保存到拦截表【失败】,否则更改为任务(排除已取消)、供应链订单、采购订单状态为已拦截
|
||||
taskMapGroupByOrderId.forEach((k,v) -> {
|
||||
SalesOrderPO salesOrderPO = salesOrderDomainService.getInfo(k);
|
||||
if(ArrayUtil.contains(OrderConstant.PUR_STATUS_GROUP_UNABLE_INTERCEPT, salesOrderPO.getOrderState())){
|
||||
throw new ServiceException(String.format("【%s】当前订单状态无需进行拦截!",salesOrderPO.getOrderNo()));
|
||||
//break;
|
||||
}
|
||||
// 保存订单拦截表
|
||||
InterceptOrderDO interceptOrderDO = interceptOrderDomainService.saveInterceptOrder(k, v);
|
||||
|
||||
// 拦截成功修改其他表数据
|
||||
if(OrderConstant.INTERCEPT_STATUS_1.equals(interceptOrderDO.getInterceptState())){
|
||||
// 采购订单修改为已拦截
|
||||
salesOrderDomainService.updateStateById(k, OrderConstant.PUR_STATUS_8);
|
||||
// 供应链订单修改为已拦截
|
||||
scmOrderDomainService.interceptByOrderId(k);
|
||||
// 作业任务修改为已拦截
|
||||
taskOrderDomainService.interceptByOrderId(k);
|
||||
}
|
||||
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
public SalesOrderDetailsPO getetails(Long id) {
|
||||
return salesOrderDomainService.getetails(id);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void importSalesOrder(List<SalesOrderExcelDTO> salesExcelList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser)) {
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
if (CollUtil.isEmpty(salesExcelList)) {
|
||||
throw new ServiceException("导入信息为空");
|
||||
}
|
||||
|
||||
List<SettlementDO> settlementDOList = new ArrayList<>();
|
||||
List<DeliveryInfoDO> deliveryInfoDOList = new ArrayList<>();
|
||||
List<ReceiptInfoDO> receiptInfoDOList = new ArrayList<>();
|
||||
List<LogisticsDO> logisticsDOList = new ArrayList<>();
|
||||
List<GoodsDO> goodsDOList = new ArrayList<>();
|
||||
|
||||
// =================== 遍历导入数据,保存销售订单并将其余表数据处理为可批量插入的数据 =========================
|
||||
salesExcelList.forEach( x -> {
|
||||
// 保存销售订单
|
||||
SalesOrder salesOrder = salesOrderDomainService.saveFromImportSalesOrder(x);
|
||||
// 结算信息保存到 【settlementDOList】 列表中进行批量保存
|
||||
settlementDomainService.listAddFromImportSalesOrder(settlementDOList, x, salesOrder);
|
||||
// 发货信息保存到 【deliveryInfoDOList】 列表中进行批量保存
|
||||
deliveryInfoDomainService.listAddFromImportSalesOrder(deliveryInfoDOList, x, salesOrder);
|
||||
// 收货信息保存到 【receiptInfoDOList】 列表中进行批量保存
|
||||
receiptInfoDomainService.listAddFromImportSalesOrder(receiptInfoDOList, x, salesOrder);
|
||||
// 物流信息保存到 【logisticsDOList】 列表中进行批量保存
|
||||
logisticsDomainService.listAddFromImportSalesOrder(logisticsDOList, x, salesOrder);
|
||||
// 物料信息保存到 【goodsDOList】列表中进行批量保存(导入的每个订单只能有一条明细)
|
||||
goodsDomainService.listAddFromImportSalesOrder(goodsDOList, x, salesOrder);
|
||||
});
|
||||
|
||||
// ================== 列表存在数据则保存 ==================
|
||||
if(settlementDOList.size() > 0){
|
||||
settlementDomainService.batchInsert(settlementDOList);
|
||||
}
|
||||
if(deliveryInfoDOList.size() > 0){
|
||||
deliveryInfoDomainService.batchInsert(deliveryInfoDOList);
|
||||
}
|
||||
if(receiptInfoDOList.size() > 0){
|
||||
receiptInfoDomainService.batchInsert(receiptInfoDOList);
|
||||
}
|
||||
if(logisticsDOList.size() > 0){
|
||||
logisticsDomainService.batchInsert(logisticsDOList);
|
||||
}
|
||||
if(goodsDOList.size() > 0){
|
||||
goodsDomainService.batchInsert(goodsDOList);
|
||||
}
|
||||
}
|
||||
}
|
||||
+330
@@ -0,0 +1,330 @@
|
||||
package com.mhd.oms.application.service.scmOrder;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.goods.service.GoodsDomainService;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.service.PurchaseOrderDomainService;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.service.SalesOrderDomainService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import com.mhd.oms.domain.scmOrder.service.ScmOrderDomainService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskUpperDataPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.CreateTaskOrderDO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
import com.mhd.oms.domain.taskOrder.service.TaskOrderDomainService;
|
||||
import com.mhd.oms.interfaces.dto.taskOrder.CreateTaskOrderGoodsInfoDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* 供应链订单ApplicationService
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ScmOrderApplicationService {
|
||||
@Autowired
|
||||
private ScmOrderDomainService scmOrderDomainService;
|
||||
@Resource
|
||||
private GoodsDomainService goodsDomainService;
|
||||
@Resource
|
||||
private PurchaseOrderDomainService purchaseOrderDomainService;
|
||||
@Resource
|
||||
private SalesOrderDomainService salesOrderDomainService;
|
||||
@Resource
|
||||
private TaskOrderDomainService taskOrderDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询供应链订单列表
|
||||
*/
|
||||
|
||||
public List<ScmOrderPO> queryList(ScmOrderDO scmOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
scmOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return scmOrderDomainService.queryList(scmOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增供应链订单
|
||||
*/
|
||||
public Boolean insert(ScmOrderDO scmOrderDO) {
|
||||
|
||||
return scmOrderDomainService.insert(scmOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应链订单
|
||||
*/
|
||||
public Boolean update(ScmOrderDO scmOrderDO) {
|
||||
return scmOrderDomainService.update(scmOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除供应链订单
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return scmOrderDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取供应链订单详细信息
|
||||
*/
|
||||
public ScmOrderPO getInfo(Long id)
|
||||
{
|
||||
return scmOrderDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成作业任务
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void createTaskOrder(CreateTaskOrderDO createTaskOrderDO) {
|
||||
|
||||
// ============== 供应链订单及任务上层数据 ===========
|
||||
ScmOrderPO scmOrder = scmOrderDomainService.getInfo(createTaskOrderDO.getScmId());
|
||||
TaskUpperDataPO upperData = new TaskUpperDataPO();
|
||||
|
||||
// =================== 校验+数据获取 ==================
|
||||
if(ObjectUtil.isNull(scmOrder)){
|
||||
throw new ServiceException("未获取到供应链订单信息!");
|
||||
}
|
||||
if(!ArrayUtil.contains(OrderConstant.SCM_STATUS_GROUP_CAN_GENERATE_TASK, scmOrder.getOrderState())) {
|
||||
throw new ServiceException("当前供应链订单状态不可生成作业任务!");
|
||||
}
|
||||
// 获取任务上层数据:采购订单、销售订单等
|
||||
getTaskUpperData(upperData, scmOrder);
|
||||
|
||||
// =================== 作业任务处理 ===================
|
||||
ArrayList<TaskOrderDO> taskOrderList = new ArrayList<>();
|
||||
createTaskOrderDO.getGoodsInfoList().forEach(
|
||||
x -> handleTaskOrderFromCreateTaskOrder(taskOrderList, x, createTaskOrderDO, upperData)
|
||||
);
|
||||
|
||||
// ================= 作业任务数据持久化 ================
|
||||
taskOrderDomainService.batchInsert(taskOrderList);
|
||||
|
||||
// ================== 供应链订单状态修改 ==============
|
||||
updateScmOrderFromCreateTaskOrder(createTaskOrderDO, upperData, taskOrderList.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务的上层数据,根据供应链订单的来源判断获取采购订单|销售订单
|
||||
*/
|
||||
private void getTaskUpperData(TaskUpperDataPO upperData, ScmOrderPO scmOrder) {
|
||||
upperData.setScmOrder(scmOrder);
|
||||
if(OrderConstant.SCM_SOURCE_1.equals(scmOrder.getScmSource())){
|
||||
PurchaseOrderDetailsPO purchaseOrderDetails = purchaseOrderDomainService.getInfo(scmOrder.getOrderId());
|
||||
if(ObjectUtil.isNull(purchaseOrderDetails) || ObjectUtil.isNull(purchaseOrderDetails.getPurchaseOrderPO())){
|
||||
throw new ServiceException("未获取到采购订单信息!");
|
||||
}
|
||||
upperData.setPurOrderPo(purchaseOrderDetails.getPurchaseOrderPO());
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_2.equals(scmOrder.getScmSource())){
|
||||
SalesOrderPO salesOrderPo = salesOrderDomainService.getInfo(scmOrder.getOrderId());
|
||||
if(ObjectUtil.isNull(salesOrderPo)){
|
||||
throw new ServiceException("未获取到采购订单信息!");
|
||||
}
|
||||
upperData.setSalesOrderPo(salesOrderPo);
|
||||
}
|
||||
else{
|
||||
throw new ServiceException("错误的供应链订单来源!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成作业任务 - 判断并更新上游供应链订单对应数据状态(部分生成作业任务|全部生成作业任务)
|
||||
*
|
||||
* @param createTaskOrderDO - 生成作业任务DO
|
||||
* @param upperData - 采购订单数据
|
||||
* @param taskNum - 本次生成的作业任务数量
|
||||
*/
|
||||
private void updateScmOrderFromCreateTaskOrder(CreateTaskOrderDO createTaskOrderDO, TaskUpperDataPO upperData, Integer taskNum) {
|
||||
// =============== 数据初始化 =============
|
||||
ScmOrderPO scmOrder = upperData.getScmOrder();
|
||||
// 供应链订单全部完成生成标志
|
||||
AtomicBoolean completeFlag = new AtomicBoolean(true);
|
||||
|
||||
// ========= 查询订单下货物列表 ============
|
||||
GoodsDO goodsDO = new GoodsDO();
|
||||
if(OrderConstant.SCM_SOURCE_1.equals(scmOrder.getScmSource())){
|
||||
goodsDO.setOrderId(upperData.getPurOrderPo().getId());
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_2.equals(scmOrder.getScmSource())){
|
||||
goodsDO.setOrderId(upperData.getSalesOrderPo().getId());
|
||||
}
|
||||
List<GoodsPO> goodsList = goodsDomainService.queryList(goodsDO);
|
||||
|
||||
// ============== 遍历货物列表,货物对应货物在任务重的数量,存在不相等的则说明供应链订单未全部生成 =================
|
||||
goodsList.forEach(x -> {
|
||||
BigDecimal totalEffectiveNum = taskOrderDomainService.queryEffectiveNumByScmId(createTaskOrderDO.getScmId(), x.getId());
|
||||
if(BigDecimal.valueOf(x.getMaterialUnitEaQuantity()).compareTo(totalEffectiveNum) != 0){
|
||||
completeFlag.set(false);
|
||||
}
|
||||
});
|
||||
|
||||
// ==================== 更新供应链订单数据 ======================
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
BeanUtils.copyProperties(scmOrder, scmOrderDO, IgnoreNullUtil.getNullPropertyNames(scmOrder));
|
||||
scmOrderDO.setOrderState(completeFlag.get() ? OrderConstant.SCM_STATUS_4 : OrderConstant.SCM_STATUS_3);
|
||||
scmOrderDO.setTaskNum(scmOrderDO.getTaskNum() + taskNum);
|
||||
scmOrderDO.setActiveTaskNum(scmOrderDO.getActiveTaskNum() + taskNum);
|
||||
scmOrderDomainService.update(scmOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成作业任务 - 根据已有数据处理为要生成的作业任务DO
|
||||
* @param taskOrderList - 要执行批量新增任务
|
||||
* @param x - 要生成的作业任务的商品信息
|
||||
* @param createTaskOrderDO - 后端接收对象
|
||||
* @param upperData - 上层数据集
|
||||
*/
|
||||
private void handleTaskOrderFromCreateTaskOrder(ArrayList<TaskOrderDO> taskOrderList, CreateTaskOrderGoodsInfoDTO x, CreateTaskOrderDO createTaskOrderDO, TaskUpperDataPO upperData) {
|
||||
if(ObjectUtil.isNull(x.getId())){
|
||||
throw new ServiceException("物料ID不能为空!");
|
||||
}
|
||||
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
GoodsPO goodsInfo = goodsDomainService.getInfo(x.getId());
|
||||
// 作业任务中有效物料数量
|
||||
BigDecimal effectiveNum = taskOrderDomainService.queryEffectiveNumByScmId(createTaskOrderDO.getScmId(), x.getId());
|
||||
// 剩余物料数量
|
||||
BigDecimal surplusNum = BigDecimal.valueOf(goodsInfo.getMaterialUnitEaQuantity()).subtract(effectiveNum);
|
||||
|
||||
if(OrderConstant.SCM_SOURCE_1.equals(upperData.getScmOrder().getScmSource())){
|
||||
if(!upperData.getPurOrderPo().getId().equals(goodsInfo.getOrderId())){
|
||||
throw new ServiceException("采购订单中无ID为"+ goodsInfo.getId() + "的物料信息");
|
||||
}
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_2.equals(upperData.getScmOrder().getScmSource())){
|
||||
if(!upperData.getSalesOrderPo().getId().equals(goodsInfo.getOrderId())){
|
||||
throw new ServiceException("销售订单中无ID为"+ goodsInfo.getId() + "的物料信息");
|
||||
}
|
||||
}
|
||||
|
||||
// 生成方式为部分生成,则计划作业数量必填,计划数量必须小于等于剩余数量(物料表数量-作业任务表已生效任务数量)
|
||||
if(createTaskOrderDO.getCreateType() == 0){
|
||||
if(ObjectUtil.isNull(x.getPlanNum())){
|
||||
throw new ServiceException("物料计划任务数量不能为空!");
|
||||
}
|
||||
if(BigDecimal.ZERO.compareTo(x.getPlanNum()) >= 0){
|
||||
throw new ServiceException("物料计划任务数量不能小于或等于0");
|
||||
}
|
||||
if(x.getPlanNum().compareTo(surplusNum) > 0){
|
||||
throw new ServiceException("计划数量大于剩余待生成作业任务数量!");
|
||||
}
|
||||
taskOrderDO.setPlanNum(x.getPlanNum());
|
||||
}
|
||||
// 生成方式为全部生成,则将剩余数量全部作为计划数量
|
||||
else if(createTaskOrderDO.getCreateType() == 1){
|
||||
taskOrderDO.setPlanNum(surplusNum);
|
||||
}
|
||||
// 没有其他的生成方式了
|
||||
else{
|
||||
throw new ServiceException("错误的生成作业方式");
|
||||
}
|
||||
|
||||
BeanUtils.copyProperties(createTaskOrderDO, taskOrderDO, IgnoreNullUtil.getNullPropertyNames(createTaskOrderDO));
|
||||
taskOrderDO.setGoodsId(x.getId());
|
||||
taskOrderDO.setScmId(createTaskOrderDO.getScmId());
|
||||
taskOrderDO.setScmSource(upperData.getScmOrder().getScmSource());
|
||||
// TODO:暂未获取仓库数据 createTaskOrderDO.getWarehouseId()
|
||||
String warehouseName = "临沂仓库";
|
||||
taskOrderDO.setWarehouseName(warehouseName);
|
||||
|
||||
if(OrderConstant.SCM_SOURCE_1.equals(upperData.getScmOrder().getScmSource())){
|
||||
taskOrderDO.setOrderId(upperData.getPurOrderPo().getId());
|
||||
taskOrderDO.setTaskTypeId(upperData.getPurOrderPo().getJobTaskTypeId());
|
||||
taskOrderDO.setTaskTypeName(upperData.getPurOrderPo().getJobTaskType());
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_2.equals(upperData.getScmOrder().getScmSource())){
|
||||
taskOrderDO.setOrderId(upperData.getSalesOrderPo().getId());
|
||||
taskOrderDO.setTaskTypeId(upperData.getSalesOrderPo().getJobTaskTypeId());
|
||||
taskOrderDO.setTaskTypeName(upperData.getSalesOrderPo().getJobTaskType());
|
||||
}
|
||||
|
||||
taskOrderList.add(taskOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单审核【批量】
|
||||
* @param idList - 供应链订单ID列表
|
||||
*/
|
||||
public Boolean batchAudit(List<String> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if(ObjectUtils.isNull(loginUser)){
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
|
||||
// =============== 订单审核 =================
|
||||
return scmOrderDomainService.batchAuditOrCancelAudit(1, idList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单取消审核【批量】
|
||||
* @param idList - 供应链订单ID列表
|
||||
*/
|
||||
public Boolean batchCancelAudit(List<String> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if(ObjectUtils.isNull(loginUser)){
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
|
||||
// =============== 订单取消审核 =================
|
||||
return scmOrderDomainService.batchAuditOrCancelAudit(2, idList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 一键生成作业任务【批量】
|
||||
* @param idList - 要生成作业任务的供应链订单ID列表
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchCreateTaskOrder(List<Long> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if(ObjectUtils.isNull(loginUser)){
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
|
||||
// 供应链订单对应的所有物料的信息列表 <供应链订单,List<全部物料列表(总物料数量、作业任务中已生成物料数量)>>
|
||||
Map<Long, List<ScmOrderPO>> scmGoodsMap = scmOrderDomainService.getGoodsAndTaskInfoList(idList);
|
||||
|
||||
// 更新供应链订单状态为全部生成;应生成的作业任务列表数据处理;供应链订单任务数量、有效数量增加生成的作业任务数量
|
||||
List<TaskOrderDO> taskOrderList = scmOrderDomainService.handlerbatchCreateTaskOrder(scmGoodsMap);
|
||||
|
||||
// 保存作业任务
|
||||
taskOrderDomainService.batchInsert(taskOrderList);
|
||||
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.application.service.settlement;
|
||||
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import com.mhd.oms.domain.settlement.service.SettlementDomainService;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SettlementApplicationService {
|
||||
@Autowired
|
||||
private SettlementDomainService settlementDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询结算信息列表
|
||||
*/
|
||||
|
||||
public List<SettlementPO> queryList(SettlementDO settlementDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
settlementDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return settlementDomainService.queryList(settlementDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增结算信息
|
||||
*/
|
||||
public Boolean insert(SettlementDO settlementDO) {
|
||||
|
||||
return settlementDomainService.insert(settlementDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改结算信息
|
||||
*/
|
||||
public Boolean update(SettlementDO settlementDO) {
|
||||
return settlementDomainService.update(settlementDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除结算信息
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return settlementDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结算信息详细信息
|
||||
*/
|
||||
public SettlementPO getInfo(Long id)
|
||||
{
|
||||
return settlementDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+315
@@ -0,0 +1,315 @@
|
||||
package com.mhd.oms.application.service.taskOrder;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.exception.ExcelAnalysisException;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.DigitalLogisticsException;
|
||||
import com.mhd.common.core.exception.digitalLogisticsException.UserError;
|
||||
import com.mhd.common.core.utils.OrderSequence;
|
||||
import com.mhd.common.core.web.domain.AjaxResult;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.service.GoodsDomainService;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.service.PurchaseOrderDomainService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.service.ScmOrderDomainService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
import com.mhd.oms.domain.taskOrder.service.TaskOrderDomainService;
|
||||
import com.mhd.oms.interfaces.dto.taskOrder.PoMergeTaskDTO;
|
||||
import com.mhd.oms.util.SetGroupUtil;
|
||||
import com.mhd.system.api.WmsServiceFeign;
|
||||
import com.mhd.system.api.domain.NoticeMaterialDetailDTO;
|
||||
import com.mhd.system.api.domain.NoticeOrderDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 作业任务ApplicationService
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class TaskOrderApplicationService {
|
||||
@Resource
|
||||
private TaskOrderDomainService taskOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private PurchaseOrderDomainService purchaseOrderDomainService;
|
||||
@Resource
|
||||
private ScmOrderDomainService scmOrderDomainService;
|
||||
|
||||
@Resource
|
||||
private WmsServiceFeign wmsServiceFeign;
|
||||
|
||||
@Resource
|
||||
private GoodsDomainService goodsDomainService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询作业任务列表
|
||||
*/
|
||||
|
||||
public List<TaskOrderPO> queryList(TaskOrderDO taskOrderDO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null){
|
||||
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
|
||||
if (topOrganizationId != null && topOrganizationId != 1){
|
||||
taskOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
}
|
||||
}
|
||||
return taskOrderDomainService.queryList(taskOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增作业任务
|
||||
*/
|
||||
public Boolean insert(TaskOrderDO taskOrderDO) {
|
||||
|
||||
return taskOrderDomainService.insert(taskOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改作业任务
|
||||
*/
|
||||
public Boolean update(TaskOrderDO taskOrderDO) {
|
||||
return taskOrderDomainService.update(taskOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除作业任务
|
||||
*/
|
||||
public boolean delete(Long[] ids) {
|
||||
return taskOrderDomainService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取作业任务详细信息
|
||||
*/
|
||||
public TaskOrderPO getInfo(Long id)
|
||||
{
|
||||
return taskOrderDomainService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public Boolean deliverTask(List<Long> ids) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ids.isEmpty()) {
|
||||
throw new ServiceException("传递的ID值缺失或为空");
|
||||
}
|
||||
//根据ids集合查询所有的任务信息包括已合并的任务信息
|
||||
List<TaskOrderPO> taskOrderPOS = taskOrderDomainService.getInfoByIds(ids);
|
||||
//只有未下发的任务才可以下发
|
||||
List<TaskOrderPO> stateCollect = taskOrderPOS.stream().filter(taskOrderPO -> taskOrderPO.getTaskStatus() != 0).collect(Collectors.toList());
|
||||
if (!stateCollect.isEmpty()) {
|
||||
throw new ServiceException("尚未下发的任务方可进行下发操作");
|
||||
}
|
||||
|
||||
List<TaskOrderDO> taskOrderDOS = new ArrayList<>();
|
||||
for (TaskOrderPO taskOrderPO : taskOrderPOS) {
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
BeanUtils.copyProperties(taskOrderPO, taskOrderDO);
|
||||
//组装信息
|
||||
NoticeOrderDTO noticeOrderDTO = createStockOutOrInInfo(taskOrderDO);
|
||||
// 推送给WMS
|
||||
AjaxResult ajaxResult = wmsServiceFeign.stockOutOrInInsert(noticeOrderDTO);
|
||||
//TMS/WMS返回成功后,修改任务状态,改为已下发
|
||||
if ("200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
taskOrderDO.setTaskStatus(1);
|
||||
taskOrderDO.setUpdateTime(new Date());
|
||||
if (loginUser != null){
|
||||
taskOrderDO.setUpdateBy(loginUser.getUserid());
|
||||
taskOrderDO.setUpdateByName(loginUser.getUsername());
|
||||
}
|
||||
taskOrderDOS.add(taskOrderDO);
|
||||
}else {
|
||||
throw new ServiceException(ajaxResult.get("msg").toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return taskOrderDomainService.batchUpdate(taskOrderDOS);
|
||||
}
|
||||
|
||||
private NoticeOrderDTO createStockOutOrInInfo(TaskOrderDO taskOrderDO) {
|
||||
NoticeOrderDTO noticeOrderDTO = new NoticeOrderDTO();
|
||||
OrderInfoPO orderInfoPO = taskOrderDomainService.getOrderInfo(taskOrderDO);
|
||||
//查询供应链订单
|
||||
ScmOrderPO scmOrderPO = scmOrderDomainService.getInfo(taskOrderDO.getScmId());
|
||||
|
||||
noticeOrderDTO.setCustomerOrderNumber(orderInfoPO.getCustomerOrders());
|
||||
noticeOrderDTO.setType(taskOrderDO.getTaskTypeId());
|
||||
noticeOrderDTO.setWarehouseId(taskOrderDO.getWarehouseId());
|
||||
noticeOrderDTO.setShipperId(orderInfoPO.getShipperId());
|
||||
noticeOrderDTO.setOrderTypeCode(orderInfoPO.getOrderTypeCode());
|
||||
noticeOrderDTO.setSupplierId(orderInfoPO.getSupplierId());
|
||||
noticeOrderDTO.setCustomerId(orderInfoPO.getCustomerId());
|
||||
noticeOrderDTO.setExpectTime(new Date());
|
||||
noticeOrderDTO.setSupplyChainNumber(scmOrderPO.getScmNo());
|
||||
noticeOrderDTO.setNullify(2);
|
||||
noticeOrderDTO.setRemark("");
|
||||
//物料信息赋值
|
||||
GoodsPO info = goodsDomainService.getInfo(taskOrderDO.getGoodsId());
|
||||
NoticeMaterialDetailDTO noticeMaterialDetailDTO = new NoticeMaterialDetailDTO();
|
||||
noticeMaterialDetailDTO.setMaterialBaseInfoId(info.getMaterialBaseInfoId());
|
||||
noticeMaterialDetailDTO.setQuantity(taskOrderDO.getPlanNum());
|
||||
List<NoticeMaterialDetailDTO> noticeMaterialDetailDOS = new ArrayList<NoticeMaterialDetailDTO>() {{
|
||||
add(noticeMaterialDetailDTO);
|
||||
}};
|
||||
|
||||
return noticeOrderDTO;
|
||||
}
|
||||
|
||||
public Boolean finishTask(List<Long> ids) {
|
||||
//List<Long> ids = Convert.toList(Long.class, deliverTaskDTO.getIds());
|
||||
List<TaskOrderDO> taskOrderDOS = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
//查询作业任务信息
|
||||
TaskOrderPO taskOrderPO = taskOrderDomainService.getInfo(id);
|
||||
if (ObjectUtil.isNull(taskOrderPO)) {
|
||||
throw new ServiceException("未查询到作业任务信息");
|
||||
}
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
BeanUtils.copyProperties(taskOrderPO, taskOrderDO);
|
||||
//查询采购订单的信息
|
||||
PurchaseOrderDetailsPO purchaseOrderDetailsPO = purchaseOrderDomainService.getInfo(taskOrderPO.getOrderId());
|
||||
// TODO 判断一下所有任务是否都已经完成并且供应链订单已全部生成任务
|
||||
log.info("组装信息");
|
||||
//TMS/WMS返回成功后,修改任务状态,改为已下发
|
||||
taskOrderDO.setTaskStatus(2);
|
||||
taskOrderDOS.add(taskOrderDO);
|
||||
}
|
||||
|
||||
return taskOrderDomainService.batchUpdate(taskOrderDOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并任务前置工作,点击合并任务弹出合并后的列表
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
public List<PoTaskDetailPO> poPreMergeTask(List<Long> ids) {
|
||||
//List<Long> ids = Convert.toList(Long.class, deliverTaskDTO.getIds());
|
||||
if (ids.isEmpty()) {
|
||||
throw new ServiceException("传递的ID值缺失或为空");
|
||||
}
|
||||
//查询是否包含下发/已合并的任务,如果有则无法合并任务
|
||||
Integer quantityDeliver = taskOrderDomainService.getQuantityDeliver(ids);
|
||||
if (quantityDeliver > 0) {
|
||||
throw new ServiceException("数据内包含下发完毕/已合并的任务");
|
||||
}
|
||||
//查询作业任务信息
|
||||
List<PoTaskDetailPO> poTaskDetailPOs = taskOrderDomainService.getPoTaskDetail(ids);
|
||||
// TODO 查询任务合并规则表,取用户设置的默认规则合并任务
|
||||
// 目前规则写死,先按照同一货主、同一仓库进行任务合并
|
||||
Map<String, List<PoTaskDetailPO>> groupMap = SetGroupUtil.groupingBy(poTaskDetailPOs, PoTaskDetailPO::getWarehouseId,
|
||||
PoTaskDetailPO::getShipperId);
|
||||
List<PoTaskDetailPO> poTaskDetailPOList = new ArrayList<>();
|
||||
// Map 处理
|
||||
groupMap.forEach((k, v) -> {
|
||||
PoTaskDetailPO poTaskDetailPO = new PoTaskDetailPO();
|
||||
if (!v.isEmpty()) {
|
||||
poTaskDetailPO = v.get(0);
|
||||
poTaskDetailPO.setTaskNum(v.size());
|
||||
String mergeTaskNo = v.stream().map(PoTaskDetailPO::getTaskNo).collect(Collectors.joining(","));
|
||||
poTaskDetailPO.setMergeTaskNo(mergeTaskNo);
|
||||
poTaskDetailPOList.add(poTaskDetailPO);
|
||||
}
|
||||
});
|
||||
return poTaskDetailPOList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 合并任务
|
||||
* @param poMergeTaskDTOS
|
||||
* @return
|
||||
*/
|
||||
public Boolean poMergeTask(List<PoMergeTaskDTO> poMergeTaskDTOS) {
|
||||
|
||||
List<TaskOrderDO> taskOrderDOS = new ArrayList<>();
|
||||
for (int i = 0; i < poMergeTaskDTOS.size(); i++) {
|
||||
|
||||
|
||||
List<String> taskNos = Convert.toList(String.class, poMergeTaskDTOS.get(i).getMergeTaskNo());
|
||||
//生成合并任务单号
|
||||
String mergeTaskNo = OrderSequence.getOrderCode(OrderConstant.TASK_NO_PREFIX) + "-" + (i + 1);
|
||||
//根据任务单号查询任务信息
|
||||
for (String taskNo : taskNos) {
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
TaskOrderPO taskOrderPO = taskOrderDomainService.getInfoByTaskNo(taskNo);
|
||||
BeanUtils.copyProperties(taskOrderPO, taskOrderDO);
|
||||
taskOrderDO.setMergeTaskNo(mergeTaskNo);
|
||||
taskOrderDO.setMergeState(1);
|
||||
taskOrderDOS.add(taskOrderDO);
|
||||
}
|
||||
}
|
||||
return taskOrderDomainService.batchUpdate(taskOrderDOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消作业任务
|
||||
* @param idList - 要取消的作业任务ID列表
|
||||
*/
|
||||
@Transactional(rollbackFor = ExcelAnalysisException.class)
|
||||
public void cancelTaskOrder(List<Long> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if(ObjectUtils.isNull(loginUser)){
|
||||
throw new DigitalLogisticsException(UserError.TIMEOUT);
|
||||
}
|
||||
if(idList.size() == 0){
|
||||
throw new ServiceException("供应链订单ID列表不能为空");
|
||||
}
|
||||
|
||||
// 取消任务
|
||||
List<TaskOrderPO> ableCancelledScmIdList = taskOrderDomainService.cancelTaskOrder(idList);
|
||||
|
||||
// 更新供应链订单任务数量、状态
|
||||
scmOrderDomainService.updateFromCancelTask(ableCancelledScmIdList);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 还原合并任务
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
public Boolean restoreMergeTask(List<Long> ids) {
|
||||
//根据集合查询所有任务信息
|
||||
List<TaskOrderPO> taskOrderPOS = taskOrderDomainService.getInfos(ids);
|
||||
//只能未下发且有合并作业任务的,允许还原
|
||||
List<TaskOrderPO> stateCollect = taskOrderPOS.stream().filter(taskOrderPO ->
|
||||
taskOrderPO.getTaskStatus() != 0 || taskOrderPO.getMergeState() == 0).collect(Collectors.toList());
|
||||
if (!stateCollect.isEmpty()) {
|
||||
throw new ServiceException("仅允许将处于未下发且已合并状态的任务进行还原");
|
||||
}
|
||||
//处理数据,批量今行数据修改
|
||||
List<TaskOrderDO> taskOrderDOS = taskOrderPOS.stream().map(taskOrderPO -> {
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
BeanUtils.copyProperties(taskOrderPO, taskOrderDO);
|
||||
taskOrderDO.setMergeTaskNo("");
|
||||
taskOrderDO.setMergeState(0);
|
||||
return taskOrderDO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return taskOrderDomainService.batchUpdate(taskOrderDOS);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package com.mhd.oms.constant;
|
||||
|
||||
/**
|
||||
* 作业任务常量
|
||||
* @author Administrator
|
||||
*/
|
||||
public interface OrderConstant {
|
||||
|
||||
/** 作业任务单号前缀 */
|
||||
String TASK_NO_PREFIX = "PO";
|
||||
|
||||
/** 供应链单号前缀 */
|
||||
String SCM_NO_PREFIX = "SCM";
|
||||
|
||||
/** ========================== 采购订单状态 ========================== */
|
||||
/** 未审核 */
|
||||
Integer PUR_STATUS_1 = 1;
|
||||
/** 已审核 */
|
||||
Integer PUR_STATUS_2 = 2;
|
||||
/** 已拒绝 */
|
||||
Integer PUR_STATUS_3 = 3;
|
||||
/** 已生成 */
|
||||
Integer PUR_STATUS_4 = 4;
|
||||
/** 部分采购 */
|
||||
Integer PUR_STATUS_5 = 5;
|
||||
/** 完成 */
|
||||
Integer PUR_STATUS_6 = 6;
|
||||
/** 已取消 */
|
||||
Integer PUR_STATUS_7 = 7;
|
||||
/** 已拦截 */
|
||||
Integer PUR_STATUS_8 = 8;
|
||||
|
||||
/** ========================== 采购订单状态组 ========================== */
|
||||
/** 无需拦截的状态 */
|
||||
Integer[] PUR_STATUS_GROUP_UNABLE_INTERCEPT = {PUR_STATUS_6, PUR_STATUS_7, PUR_STATUS_8};
|
||||
/** 不能被取消审核的状态 */
|
||||
Integer[] PUR_STATUS_GROUP_UNABLE_CANCEL_AUDIT = {PUR_STATUS_1, PUR_STATUS_4, PUR_STATUS_5,PUR_STATUS_6,PUR_STATUS_7,PUR_STATUS_8};
|
||||
|
||||
|
||||
/** ========================== 销售订单状态 ========================== */
|
||||
/** 未审核 */
|
||||
Integer SO_STATUS_1 = 1;
|
||||
/** 已审核 */
|
||||
Integer SO_STATUS_2 = 2;
|
||||
/** 已拒绝 */
|
||||
Integer SO_STATUS_3 = 3;
|
||||
/** 已生成 */
|
||||
Integer SO_STATUS_4 = 4;
|
||||
/** 部分销售 */
|
||||
Integer SO_STATUS_5 = 5;
|
||||
/** 完成 */
|
||||
Integer SO_STATUS_6 = 6;
|
||||
/** 已取消 */
|
||||
Integer SO_STATUS_7 = 7;
|
||||
/** 已拦截 */
|
||||
Integer SO_STATUS_8 = 8;
|
||||
|
||||
/** ========================== 销售订单状态组 ========================== */
|
||||
/** 无需拦截的状态 */
|
||||
Integer[] SO_STATUS_GROUP_UNABLE_INTERCEPT = {PUR_STATUS_6, PUR_STATUS_7, PUR_STATUS_8};
|
||||
/** 不能被取消审核的状态 */
|
||||
Integer[] SO_STATUS_GROUP_UNABLE_CANCEL_AUDIT = {PUR_STATUS_1, PUR_STATUS_4, PUR_STATUS_5,PUR_STATUS_6,PUR_STATUS_7,PUR_STATUS_8};
|
||||
|
||||
|
||||
|
||||
/** ========================== 供应链订单状态 ========================== */
|
||||
/** 未审核 */
|
||||
Integer SCM_STATUS_1 = 1;
|
||||
/** 已审核 */
|
||||
Integer SCM_STATUS_2 = 2;
|
||||
/** 部分生成 */
|
||||
Integer SCM_STATUS_3 = 3;
|
||||
/** 全部生成 */
|
||||
Integer SCM_STATUS_4 = 4;
|
||||
/** 部分完成 */
|
||||
Integer SCM_STATUS_5 = 5;
|
||||
/** 已完成 */
|
||||
Integer SCM_STATUS_6 = 6;
|
||||
/** 已取消 */
|
||||
Integer SCM_STATUS_7 = 7;
|
||||
/** 已拦截 */
|
||||
Integer SCM_STATUS_8 = 8;
|
||||
|
||||
/** ========================== 供应链订单状态组 ========================== */
|
||||
/** 可生成作业任务的状态 */
|
||||
Integer[] SCM_STATUS_GROUP_CAN_GENERATE_TASK = {SCM_STATUS_2, SCM_STATUS_3};
|
||||
|
||||
/** ========================== 供应链订单来源 ========================== */
|
||||
/** 采购订单 */
|
||||
Integer SCM_SOURCE_1 = 1;
|
||||
/** 销售订单 */
|
||||
Integer SCM_SOURCE_2 = 2;
|
||||
/** 运输订单 */
|
||||
Integer SCM_SOURCE_3 = 3;
|
||||
|
||||
/** ========================== 作业任务状态 ========================== */
|
||||
/** 未下发 */
|
||||
Integer TASK_STATUS_0 = 0;
|
||||
/** 已下发 */
|
||||
Integer TASK_STATUS_1 = 1;
|
||||
/** 已完成 */
|
||||
Integer TASK_STATUS_2 = 2;
|
||||
/** 已拦截 */
|
||||
Integer TASK_STATUS_3 = 3;
|
||||
/** 已取消 */
|
||||
Integer TASK_STATUS_4 = 4;
|
||||
|
||||
/** ========================== 作业任务状态组 ========================== */
|
||||
/** 不可拦截状态组 */
|
||||
Integer[] TASK_STATUS_GROUP_UNABLE_INTERCEPT = {TASK_STATUS_1, TASK_STATUS_2};
|
||||
|
||||
/** ========================== 作业任务类型 ========================== */
|
||||
/** 入库 */
|
||||
Integer TASK_TYPE_0 = 0;
|
||||
/** 出库 */
|
||||
Integer TASK_TYPE_1 = 1;
|
||||
/** 运输 */
|
||||
Integer TASK_TYPE_2 = 2;
|
||||
|
||||
|
||||
/** ========================== 拦截订单状态 ========================== */
|
||||
/** 无拦截 */
|
||||
Integer INTERCEPT_STATUS_0 = 0;
|
||||
/** 拦截成功 */
|
||||
Integer INTERCEPT_STATUS_1 = 1;
|
||||
/** 拦截失败 */
|
||||
Integer INTERCEPT_STATUS_2 = 2;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.mhd.oms.constant;
|
||||
|
||||
/**
|
||||
* OMS枚举
|
||||
*
|
||||
* @author
|
||||
*/
|
||||
public enum OrderEnum {
|
||||
// ๑乛◡乛๑卡在了奇怪的地方
|
||||
TEST_1("1", "1");
|
||||
|
||||
private final String code;
|
||||
private final String info;
|
||||
|
||||
OrderEnum(String code, String info)
|
||||
{
|
||||
this.code = code;
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public String getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getInfo()
|
||||
{
|
||||
return info;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.mhd.oms.domain;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "订单公共类", description = "订单公共类")
|
||||
public class OrderInfoPO implements Serializable {
|
||||
|
||||
@ApiModelProperty("订单号/商流订单号")
|
||||
private String orderNo;
|
||||
@ApiModelProperty("货主")
|
||||
private String shipper;
|
||||
@ApiModelProperty("业务订单类型")
|
||||
private String orderType;
|
||||
@ApiModelProperty("客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("作业任务类型名称")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("供应商ID")
|
||||
private Long supplierId;
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
private Long customerId;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("入库单类型编码")
|
||||
private String orderTypeCode;
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 发货信息对象 oms_delivery_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName(value = "oms_delivery_info")
|
||||
public class DeliveryInfo extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("发货人")
|
||||
@Excel(name = "发货人")
|
||||
private String consigner;
|
||||
|
||||
@ApiModelProperty("发货人联系电话")
|
||||
@Excel(name = "发货人联系电话")
|
||||
private String consignerPhone;
|
||||
|
||||
@ApiModelProperty("发货人所在区域编码")
|
||||
@Excel(name = "发货人所在区域编码")
|
||||
private String consignerAreaCode;
|
||||
|
||||
@ApiModelProperty("发货人所在区域")
|
||||
@Excel(name = "发货人所在区域")
|
||||
private String consignerArea;
|
||||
|
||||
@ApiModelProperty("发货人详细地址")
|
||||
@Excel(name = "发货人详细地址")
|
||||
private String consignerAddress;
|
||||
|
||||
@ApiModelProperty("发货地址经纬度")
|
||||
@Excel(name = "发货地址经纬度")
|
||||
private String saddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计发货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedDeliveryTime;
|
||||
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.deliveryInfo.entity.DeliveryInfo;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发货信息Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface IDeliveryInfoService extends IService<DeliveryInfo>
|
||||
{
|
||||
/**
|
||||
* 分页查询发货信息列表
|
||||
*/
|
||||
public List<DeliveryInfoPO> queryList(DeliveryInfoDO deliveryInfoDO);
|
||||
|
||||
/**
|
||||
* 新增发货信息
|
||||
*/
|
||||
public Boolean insert(DeliveryInfoDO deliveryInfoDO);
|
||||
|
||||
/**
|
||||
* 修改发货信息
|
||||
*/
|
||||
public Boolean update(DeliveryInfoDO deliveryInfoDO);
|
||||
|
||||
/**
|
||||
* 批量删除发货信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询发货信息
|
||||
*/
|
||||
public DeliveryInfoPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
Boolean batchInsert(List<DeliveryInfoDO> deliveryInfoDOList);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.deliveryInfo.entity.DeliveryInfo;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发货信息Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface DeliveryInfoMapper extends BaseMapper<DeliveryInfo>
|
||||
{
|
||||
/**
|
||||
* 查询发货信息列表
|
||||
*/
|
||||
public List<DeliveryInfoPO> queryList(DeliveryInfoDO deliveryInfoDO);
|
||||
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.deliveryInfo.entity.DeliveryInfo;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.facade.IDeliveryInfoService;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.mapper.DeliveryInfoMapper;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 发货信息Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class DeliveryInfoImpl extends ServiceImpl<DeliveryInfoMapper, DeliveryInfo> implements IDeliveryInfoService {
|
||||
@Autowired
|
||||
private DeliveryInfoMapper deliveryInfoMapper;
|
||||
|
||||
/**
|
||||
* 查询发货信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<DeliveryInfoPO> queryList(DeliveryInfoDO deliveryInfoDO)
|
||||
{
|
||||
return deliveryInfoMapper.queryList(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增发货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(DeliveryInfoDO deliveryInfoDO) {
|
||||
DeliveryInfo deliveryInfo = new DeliveryInfo();
|
||||
BeanUtils.copyProperties(deliveryInfoDO,deliveryInfo);
|
||||
return this.save(deliveryInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改发货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(DeliveryInfoDO deliveryInfoDO) {
|
||||
DeliveryInfo deliveryInfo = new DeliveryInfo();
|
||||
BeanUtils.copyProperties(deliveryInfoDO,deliveryInfo);
|
||||
return this.updateById(deliveryInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除发货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<DeliveryInfo> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
DeliveryInfo deliveryInfo = new DeliveryInfo();
|
||||
deliveryInfo.setId(id);
|
||||
deliveryInfo.setDelFlag(2);
|
||||
list.add(deliveryInfo);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改发货信息
|
||||
*/
|
||||
@Override
|
||||
public DeliveryInfoPO getInfo(Long id) {
|
||||
DeliveryInfo deliveryInfo = this.getById(id);
|
||||
DeliveryInfoPO deliveryInfoPO = new DeliveryInfoPO();
|
||||
BeanUtils.copyProperties(deliveryInfo,deliveryInfoPO);
|
||||
return deliveryInfoPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchInsert(List<DeliveryInfoDO> deliveryInfoDOList) {
|
||||
List<DeliveryInfo> deliveryInfoList = deliveryInfoDOList.stream().map(deliveryInfoDO -> {
|
||||
DeliveryInfo deliveryInfo = new DeliveryInfo();
|
||||
BeanUtils.copyProperties(deliveryInfoDO, deliveryInfo);
|
||||
return deliveryInfo;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(deliveryInfoList);
|
||||
}
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.repository.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 发货信息对象 oms_delivery_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "发货信息对象", description = "发货信息响应对象")
|
||||
public class DeliveryInfoPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("发货人")
|
||||
@Excel(name = "发货人")
|
||||
private String consigner;
|
||||
|
||||
@ApiModelProperty("发货人联系电话")
|
||||
@Excel(name = "发货人联系电话")
|
||||
private String consignerPhone;
|
||||
|
||||
@ApiModelProperty("发货人所在区域编码")
|
||||
@Excel(name = "发货人所在区域编码")
|
||||
private String consignerAreaCode;
|
||||
|
||||
@ApiModelProperty("发货人所在区域")
|
||||
@Excel(name = "发货人所在区域")
|
||||
private String consignerArea;
|
||||
|
||||
@ApiModelProperty("发货人详细地址")
|
||||
@Excel(name = "发货人详细地址")
|
||||
private String consignerAddress;
|
||||
|
||||
@ApiModelProperty("发货地址经纬度")
|
||||
@Excel(name = "发货地址经纬度")
|
||||
private String saddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计发货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedDeliveryTime;
|
||||
|
||||
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.repository.todo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 发货信息对象 oms_delivery_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class DeliveryInfoDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("发货人")
|
||||
@Excel(name = "发货人")
|
||||
private String consigner;
|
||||
|
||||
@ApiModelProperty("发货人联系电话")
|
||||
@Excel(name = "发货人联系电话")
|
||||
private String consignerPhone;
|
||||
|
||||
@ApiModelProperty("发货人所在区域编码")
|
||||
@Excel(name = "发货人所在区域编码")
|
||||
private String consignerAreaCode;
|
||||
|
||||
@ApiModelProperty("发货人所在区域")
|
||||
@Excel(name = "发货人所在区域")
|
||||
private String consignerArea;
|
||||
|
||||
@ApiModelProperty("发货人详细地址")
|
||||
@Excel(name = "发货人详细地址")
|
||||
private String consignerAddress;
|
||||
|
||||
@ApiModelProperty("发货地址经纬度")
|
||||
@Excel(name = "发货地址经纬度")
|
||||
private String saddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计发货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedDeliveryTime;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.mhd.oms.domain.deliveryInfo.service;
|
||||
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.facade.IDeliveryInfoService;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发货信息
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class DeliveryInfoDomainService {
|
||||
|
||||
@Autowired
|
||||
private IDeliveryInfoService deliveryInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询发货信息列表
|
||||
*/
|
||||
public List<DeliveryInfoPO> queryList(DeliveryInfoDO deliveryInfoDO) {
|
||||
return deliveryInfoService.queryList(deliveryInfoDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增发货信息
|
||||
*/
|
||||
public Boolean insert(DeliveryInfoDO deliveryInfoDO) {
|
||||
|
||||
return deliveryInfoService.insert(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改发货信息
|
||||
*/
|
||||
public Boolean update(DeliveryInfoDO deliveryInfoDO) {
|
||||
return deliveryInfoService.update(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除发货信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return deliveryInfoService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取发货信息详细信息
|
||||
*/
|
||||
public DeliveryInfoPO getInfo(Long id)
|
||||
{
|
||||
return deliveryInfoService.getInfo(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
public Boolean batchInsert(List<DeliveryInfoDO> deliveryInfoDOList) {
|
||||
return deliveryInfoService.batchInsert(deliveryInfoDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入销售订单 - 为传入的发货列表添加一条发货信息
|
||||
*
|
||||
* @param deliveryInfoDOList - 添加数据的列表
|
||||
* @param salesOrderExcelDTO -导入的数据
|
||||
* @param salesOrder - 导入数据中的销售订单信息
|
||||
*/
|
||||
public void listAddFromImportSalesOrder(List<DeliveryInfoDO> deliveryInfoDOList, SalesOrderExcelDTO salesOrderExcelDTO, SalesOrder salesOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
DeliveryInfoDO deliveryInfoDO = new DeliveryInfoDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, deliveryInfoDO, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
deliveryInfoDO.setOrderId(salesOrder.getId());
|
||||
deliveryInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveryInfoDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
deliveryInfoDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
deliveryInfoDO.setCreateTime(new Date());
|
||||
deliveryInfoDOList.add(deliveryInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入采购订单 - 为传入的发货列表添加一条发货信息
|
||||
*
|
||||
* @param deliveryInfoDOList - 添加数据的列表
|
||||
* @param purOrderExcelDTO -导入的数据
|
||||
* @param purOrder - 导入的采购订单信息
|
||||
*/
|
||||
public void listAddFromImportPurOrder(List<DeliveryInfoDO> deliveryInfoDOList, PurchaseOrderExcelDTO purOrderExcelDTO, PurchaseOrder purOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
DeliveryInfoDO deliveryInfoDO = new DeliveryInfoDO();
|
||||
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, deliveryInfoDO, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
deliveryInfoDO.setOrderId(purOrder.getId());
|
||||
deliveryInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
deliveryInfoDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
deliveryInfoDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
deliveryInfoDO.setCreateTime(new Date());
|
||||
deliveryInfoDOList.add(deliveryInfoDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
package com.mhd.oms.domain.goods.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* 商品信息对象 oms_goods
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_goods")
|
||||
public class Goods extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("商品编码")
|
||||
@Excel(name = "商品编码")
|
||||
private String goodsNo;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@Excel(name = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("包装规格")
|
||||
@Excel(name = "包装规格")
|
||||
private String packingSize;
|
||||
|
||||
@ApiModelProperty("辅助单位ID")
|
||||
@Excel(name = "辅助单位ID")
|
||||
private String supportUnitId;
|
||||
|
||||
@ApiModelProperty("辅助单位")
|
||||
@Excel(name = "辅助单位")
|
||||
private String supportUnit;
|
||||
|
||||
@ApiModelProperty("辅助单位数量")
|
||||
@Excel(name = "辅助单位数量")
|
||||
private Integer supportUnitQuantity;
|
||||
|
||||
@ApiModelProperty("物料单位EA")
|
||||
@Excel(name = "物料单位EA")
|
||||
private String materialUnitEa;
|
||||
|
||||
@ApiModelProperty("物料数量EA")
|
||||
@Excel(name = "物料数量EA")
|
||||
private Integer materialUnitEaQuantity;
|
||||
|
||||
@ApiModelProperty("单价")
|
||||
@Excel(name = "单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("含税单价")
|
||||
@Excel(name = "含税单价")
|
||||
private BigDecimal taxUnitPrice;
|
||||
|
||||
@ApiModelProperty("税率")
|
||||
@Excel(name = "税率")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
@ApiModelProperty("税金")
|
||||
@Excel(name = "税金")
|
||||
private BigDecimal taxes;
|
||||
|
||||
@ApiModelProperty("金额")
|
||||
@Excel(name = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("物料基础信息id")
|
||||
@Excel(name = "物料基础信息id")
|
||||
private Long materialBaseInfoId;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.mhd.oms.domain.goods.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.goods.entity.Goods;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品信息Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface IGoodsService extends IService<Goods>
|
||||
{
|
||||
/**
|
||||
* 分页查询商品信息列表
|
||||
*/
|
||||
public List<GoodsPO> queryList(GoodsDO goodsDO);
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*/
|
||||
public Boolean insert(GoodsDO goodsDO);
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*/
|
||||
public Boolean update(GoodsDO goodsDO);
|
||||
|
||||
/**
|
||||
* 批量删除商品信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询商品信息
|
||||
*/
|
||||
public GoodsPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 根据订单ID删除物料信息
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
public Boolean deleteByOrderId(Long orderId);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
* @param goodsDOList
|
||||
*/
|
||||
public Boolean batchInsert(List<GoodsDO> goodsDOList);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.goods.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.goods.entity.Goods;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品信息Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface GoodsMapper extends BaseMapper<Goods>
|
||||
{
|
||||
/**
|
||||
* 查询商品信息列表
|
||||
*/
|
||||
public List<GoodsPO> queryList(GoodsDO goodsDO);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.mhd.oms.domain.goods.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.goods.entity.Goods;
|
||||
import com.mhd.oms.domain.goods.repository.facade.IGoodsService;
|
||||
import com.mhd.oms.domain.goods.repository.mapper.GoodsMapper;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 商品信息Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class GoodsImpl extends ServiceImpl<GoodsMapper, Goods> implements IGoodsService {
|
||||
@Autowired
|
||||
private GoodsMapper goodsMapper;
|
||||
|
||||
/**
|
||||
* 查询商品信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<GoodsPO> queryList(GoodsDO goodsDO)
|
||||
{
|
||||
return goodsMapper.queryList(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(GoodsDO goodsDO) {
|
||||
Goods goods = new Goods();
|
||||
BeanUtils.copyProperties(goodsDO,goods);
|
||||
return this.save(goods);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(GoodsDO goodsDO) {
|
||||
Goods goods = new Goods();
|
||||
BeanUtils.copyProperties(goodsDO,goods);
|
||||
return this.updateById(goods);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除商品信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<Goods> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
Goods goods = new Goods();
|
||||
goods.setId(id);
|
||||
goods.setDelFlag(2);
|
||||
list.add(goods);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*/
|
||||
@Override
|
||||
public GoodsPO getInfo(Long id) {
|
||||
Goods goods = this.getById(id);
|
||||
GoodsPO goodsPO = new GoodsPO();
|
||||
BeanUtils.copyProperties(goods,goodsPO);
|
||||
return goodsPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单ID删除物料信息
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteByOrderId(Long orderId) {
|
||||
LambdaUpdateWrapper<Goods> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
lambdaUpdateWrapper.eq(Goods::getOrderId, orderId).set(Goods::getDelFlag, 2);
|
||||
return this.update(null, lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
* @param goodsDOList
|
||||
*/
|
||||
@Override
|
||||
public Boolean batchInsert(List<GoodsDO> goodsDOList) {
|
||||
List<Goods> goodsList = goodsDOList.stream().map(goodsDO -> {
|
||||
Goods goods = new Goods();
|
||||
BeanUtils.copyProperties(goodsDO, goods);
|
||||
return goods;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(goodsList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.mhd.oms.domain.goods.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;
|
||||
|
||||
|
||||
/**
|
||||
* 商品信息对象 oms_goods
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "商品信息对象", description = "商品信息响应对象")
|
||||
public class GoodsPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("商品编码")
|
||||
@Excel(name = "商品编码")
|
||||
private String goodsNo;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@Excel(name = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("包装规格")
|
||||
@Excel(name = "包装规格")
|
||||
private String packingSize;
|
||||
|
||||
@ApiModelProperty("辅助单位ID")
|
||||
@Excel(name = "辅助单位ID")
|
||||
private String supportUnitId;
|
||||
|
||||
@ApiModelProperty("辅助单位")
|
||||
@Excel(name = "辅助单位")
|
||||
private String supportUnit;
|
||||
|
||||
@ApiModelProperty("辅助单位数量")
|
||||
@Excel(name = "辅助单位数量")
|
||||
private Integer supportUnitQuantity;
|
||||
|
||||
@ApiModelProperty("物料单位EA")
|
||||
@Excel(name = "物料单位EA")
|
||||
private String materialUnitEa;
|
||||
|
||||
@ApiModelProperty("物料数量EA")
|
||||
@Excel(name = "物料数量EA")
|
||||
private Integer materialUnitEaQuantity;
|
||||
|
||||
@ApiModelProperty("单价")
|
||||
@Excel(name = "单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("含税单价")
|
||||
@Excel(name = "含税单价")
|
||||
private BigDecimal taxUnitPrice;
|
||||
|
||||
@ApiModelProperty("税率")
|
||||
@Excel(name = "税率")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
@ApiModelProperty("税金")
|
||||
@Excel(name = "税金")
|
||||
private BigDecimal taxes;
|
||||
|
||||
@ApiModelProperty("金额")
|
||||
@Excel(name = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("完成数量")
|
||||
private Integer completeNum;
|
||||
|
||||
@ApiModelProperty("库存可用数量")
|
||||
private Long stockUsableNum;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("物料基础信息id")
|
||||
@Excel(name = "物料基础信息id")
|
||||
private Long materialBaseInfoId;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package com.mhd.oms.domain.goods.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;
|
||||
|
||||
|
||||
/**
|
||||
* 商品信息对象 oms_goods
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class GoodsDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
@ApiModelProperty("ID列表")
|
||||
private List<Long> idList;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("商品编码")
|
||||
@Excel(name = "商品编码")
|
||||
private String goodsNo;
|
||||
|
||||
@ApiModelProperty("商品名称")
|
||||
@Excel(name = "商品名称")
|
||||
private String goodsName;
|
||||
|
||||
@ApiModelProperty("包装规格")
|
||||
@Excel(name = "包装规格")
|
||||
private String packingSize;
|
||||
|
||||
@ApiModelProperty("辅助单位ID")
|
||||
@Excel(name = "辅助单位ID")
|
||||
private String supportUnitId;
|
||||
|
||||
@ApiModelProperty("辅助单位")
|
||||
@Excel(name = "辅助单位")
|
||||
private String supportUnit;
|
||||
|
||||
@ApiModelProperty("辅助单位数量")
|
||||
@Excel(name = "辅助单位数量")
|
||||
private Integer supportUnitQuantity = 0;
|
||||
|
||||
@ApiModelProperty("物料单位EA")
|
||||
@Excel(name = "物料单位EA")
|
||||
private String materialUnitEa;
|
||||
|
||||
@ApiModelProperty("物料数量EA")
|
||||
@Excel(name = "物料数量EA")
|
||||
private Integer materialUnitEaQuantity = 0;
|
||||
|
||||
@ApiModelProperty("单价")
|
||||
@Excel(name = "单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("含税单价")
|
||||
@Excel(name = "含税单价")
|
||||
private BigDecimal taxUnitPrice;
|
||||
|
||||
@ApiModelProperty("税率")
|
||||
@Excel(name = "税率")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
@ApiModelProperty("税金")
|
||||
@Excel(name = "税金")
|
||||
private BigDecimal taxes;
|
||||
|
||||
@ApiModelProperty("金额")
|
||||
@Excel(name = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
|
||||
@ApiModelProperty("供应链订单ID")
|
||||
private Long scmId;
|
||||
|
||||
@ApiModelProperty("物料基础信息id")
|
||||
@Excel(name = "物料基础信息id")
|
||||
private Long materialBaseInfoId;
|
||||
|
||||
public GoodsDO(){
|
||||
|
||||
}
|
||||
|
||||
public GoodsDO(List<Long> idList){
|
||||
this.idList = idList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package com.mhd.oms.domain.goods.service;
|
||||
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.goods.repository.facade.IGoodsService;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 商品信息
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class GoodsDomainService {
|
||||
|
||||
@Autowired
|
||||
private IGoodsService goodsService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询商品信息列表
|
||||
*/
|
||||
public List<GoodsPO> queryList(GoodsDO goodsDO) {
|
||||
return goodsService.queryList(goodsDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增商品信息
|
||||
*/
|
||||
public Boolean insert(GoodsDO goodsDO) {
|
||||
|
||||
return goodsService.insert(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商品信息
|
||||
*/
|
||||
public Boolean update(GoodsDO goodsDO) {
|
||||
return goodsService.update(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除商品信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return goodsService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品信息详细信息
|
||||
*/
|
||||
public GoodsPO getInfo(Long id)
|
||||
{
|
||||
return goodsService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据订单ID删除物料信息
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
public Boolean deleteByOrderId(Long orderId) {
|
||||
return goodsService.deleteByOrderId(orderId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
* @param goodsDOList
|
||||
*/
|
||||
public Boolean batchInsert(List<GoodsDO> goodsDOList) {
|
||||
return goodsService.batchInsert(goodsDOList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导入销售订单 - 为传入的销售明细列表添加一条明细
|
||||
*
|
||||
* @param goodsDOList - 添加数据的列表
|
||||
* @param salesOrderExcelDTO -导入的数据
|
||||
* @param salesOrder - 导入数据中的销售订单信息
|
||||
*/
|
||||
public void listAddFromImportSalesOrder(List<GoodsDO> goodsDOList, SalesOrderExcelDTO salesOrderExcelDTO, SalesOrder salesOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
GoodsDO goodsDO = new GoodsDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, goodsDO, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
goodsDO.setOrderId(salesOrder.getId());
|
||||
goodsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
goodsDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
goodsDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
goodsDO.setCreateTime(new Date());
|
||||
goodsDOList.add(goodsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入采购订单 - 为传入的销售明细列表添加一条明细
|
||||
*
|
||||
* @param goodsDOList - 添加数据的列表
|
||||
* @param purOrderExcelDTO -导入的数据
|
||||
* @param purOrder - 导入的采购订单信息
|
||||
*/
|
||||
public void listAddFromImportPurOrder(List<GoodsDO> goodsDOList, PurchaseOrderExcelDTO purOrderExcelDTO, PurchaseOrder purOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
GoodsDO goodsDO = new GoodsDO();
|
||||
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, goodsDO, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
goodsDO.setOrderId(purOrder.getId());
|
||||
goodsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
goodsDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
goodsDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
goodsDO.setCreateTime(new Date());
|
||||
goodsDOList.add(goodsDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.mhd.oms.domain.interceptOrder.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import 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;
|
||||
|
||||
|
||||
/**
|
||||
* 拦截订单对象 oms_intercept_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_intercept_order")
|
||||
public class InterceptOrder extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单ID")
|
||||
@Excel(name = "订单ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
@Excel(name = "拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
private Integer interceptState;
|
||||
|
||||
@ApiModelProperty("拦截人ID")
|
||||
@Excel(name = "拦截人ID")
|
||||
private Long interceptBy;
|
||||
|
||||
@ApiModelProperty("拦截人名称")
|
||||
@Excel(name = "拦截人名称")
|
||||
private String interceptByName;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date interceptTime;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
@Excel(name = "失败原因")
|
||||
private String failCause;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
@Excel(name = "作业任务号")
|
||||
private String taskNos;
|
||||
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.mhd.oms.domain.interceptOrder.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.interceptOrder.entity.InterceptOrder;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 拦截订单Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
public interface IInterceptOrderService extends IService<InterceptOrder>
|
||||
{
|
||||
/**
|
||||
* 分页查询拦截订单列表
|
||||
*/
|
||||
public List<InterceptOrderPO> queryList(InterceptOrderDO interceptOrderDO);
|
||||
|
||||
/**
|
||||
* 新增拦截订单
|
||||
*/
|
||||
public Boolean insert(InterceptOrderDO interceptOrderDO);
|
||||
|
||||
/**
|
||||
* 修改拦截订单
|
||||
*/
|
||||
public Boolean update(InterceptOrderDO interceptOrderDO);
|
||||
|
||||
/**
|
||||
* 批量删除拦截订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询拦截订单
|
||||
*/
|
||||
public InterceptOrderPO getInfo(Long id);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.interceptOrder.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.interceptOrder.entity.InterceptOrder;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 拦截订单Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
public interface InterceptOrderMapper extends BaseMapper<InterceptOrder>
|
||||
{
|
||||
/**
|
||||
* 查询拦截订单列表
|
||||
*/
|
||||
public List<InterceptOrderPO> queryList(InterceptOrderDO interceptOrderDO);
|
||||
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.mhd.oms.domain.interceptOrder.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.interceptOrder.entity.InterceptOrder;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.facade.IInterceptOrderService;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.mapper.InterceptOrderMapper;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.mapper.ScmOrderMapper;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 拦截订单Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
@Service
|
||||
public class InterceptOrderImpl extends ServiceImpl<InterceptOrderMapper, InterceptOrder> implements IInterceptOrderService{
|
||||
@Autowired
|
||||
private InterceptOrderMapper interceptOrderMapper;
|
||||
|
||||
@Resource
|
||||
private ScmOrderMapper scmOrderMapper;
|
||||
|
||||
/**
|
||||
* 查询拦截订单列表
|
||||
*/
|
||||
@Override
|
||||
public List<InterceptOrderPO> queryList(InterceptOrderDO interceptOrderDO)
|
||||
{
|
||||
List<InterceptOrderPO> interceptOrderPOS = interceptOrderMapper.queryList(interceptOrderDO);
|
||||
for (InterceptOrderPO interceptOrderPO:interceptOrderPOS) {
|
||||
String scmOrderNo = scmOrderMapper.selectScmOrderNoByOrderId(interceptOrderPO.getOrderId());
|
||||
interceptOrderPO.setScmOrderNo(scmOrderNo);
|
||||
}
|
||||
return interceptOrderPOS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增拦截订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(InterceptOrderDO interceptOrderDO) {
|
||||
InterceptOrder interceptOrder = new InterceptOrder();
|
||||
BeanUtils.copyProperties(interceptOrderDO,interceptOrder);
|
||||
return this.save(interceptOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改拦截订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(InterceptOrderDO interceptOrderDO) {
|
||||
InterceptOrder interceptOrder = new InterceptOrder();
|
||||
BeanUtils.copyProperties(interceptOrderDO,interceptOrder);
|
||||
return this.updateById(interceptOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除拦截订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
List<InterceptOrder> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
InterceptOrder interceptOrder = new InterceptOrder();
|
||||
interceptOrder.setId(id);
|
||||
interceptOrder.setDelFlag(2);
|
||||
interceptOrder.setUpdateBy(loginUser.getUserid());
|
||||
interceptOrder.setUpdateByName(loginUser.getUsername());
|
||||
interceptOrder.setUpdateTime(new Date());
|
||||
list.add(interceptOrder);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改拦截订单
|
||||
*/
|
||||
@Override
|
||||
public InterceptOrderPO getInfo(Long id) {
|
||||
InterceptOrder interceptOrder = this.getById(id);
|
||||
InterceptOrderPO interceptOrderPO = new InterceptOrderPO();
|
||||
BeanUtils.copyProperties(interceptOrder,interceptOrderPO);
|
||||
return interceptOrderPO;
|
||||
}
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
package com.mhd.oms.domain.interceptOrder.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;
|
||||
|
||||
|
||||
/**
|
||||
* 拦截订单对象 oms_intercept_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "拦截订单对象", description = "拦截订单响应对象")
|
||||
public class InterceptOrderPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单ID")
|
||||
@Excel(name = "订单ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
@Excel(name = "拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
private Integer interceptState;
|
||||
|
||||
@ApiModelProperty("拦截人ID")
|
||||
@Excel(name = "拦截人ID")
|
||||
private String interceptBy;
|
||||
|
||||
@ApiModelProperty("拦截人名称")
|
||||
@Excel(name = "拦截人名称")
|
||||
private String interceptByName;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date interceptTime;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
@Excel(name = "失败原因")
|
||||
private String failCause;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
@Excel(name = "作业任务号")
|
||||
private String taskNos;
|
||||
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("供应链订单号")
|
||||
@Excel(name = "供应链订单号")
|
||||
private String scmOrderNo;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.mhd.oms.domain.interceptOrder.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;
|
||||
|
||||
|
||||
/**
|
||||
* 拦截订单对象 oms_intercept_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class InterceptOrderDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单ID")
|
||||
@Excel(name = "订单ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
@Excel(name = "拦截状态:0-无拦截、1-拦截成功、2-拦截失败")
|
||||
private Integer interceptState;
|
||||
|
||||
@ApiModelProperty("拦截人ID")
|
||||
@Excel(name = "拦截人ID")
|
||||
private Long interceptBy;
|
||||
|
||||
@ApiModelProperty("拦截人名称")
|
||||
@Excel(name = "拦截人名称")
|
||||
private String interceptByName;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date interceptTime;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
@Excel(name = "失败原因")
|
||||
private String failCause;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
@Excel(name = "作业任务号")
|
||||
private String taskNos;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
package com.mhd.oms.domain.interceptOrder.service;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.facade.IInterceptOrderService;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.po.InterceptOrderPO;
|
||||
import com.mhd.oms.domain.interceptOrder.repository.todo.InterceptOrderDO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
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;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 拦截订单
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-30
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class InterceptOrderDomainService {
|
||||
|
||||
@Autowired
|
||||
private IInterceptOrderService interceptOrderService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询拦截订单列表
|
||||
*/
|
||||
public List<InterceptOrderPO> queryList(InterceptOrderDO interceptOrderDO) {
|
||||
return interceptOrderService.queryList(interceptOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增拦截订单
|
||||
*/
|
||||
public Boolean insert(InterceptOrderDO interceptOrderDO) {
|
||||
|
||||
return interceptOrderService.insert(interceptOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改拦截订单
|
||||
*/
|
||||
public Boolean update(InterceptOrderDO interceptOrderDO) {
|
||||
return interceptOrderService.update(interceptOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除拦截订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return interceptOrderService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取拦截订单详细信息
|
||||
*/
|
||||
public InterceptOrderPO getInfo(Long id)
|
||||
{
|
||||
return interceptOrderService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存订单拦截表
|
||||
*
|
||||
* 获取不可拦截订单列表(已下发、已完成、未下发已合并)
|
||||
* 若不可拦截列表不为空,保存为拦截失败的记录,否则保存为拦截成功
|
||||
*
|
||||
* @param k - 订单ID
|
||||
* @param v - 订单下全部任务列表
|
||||
* @return -拦截订单DO
|
||||
*/
|
||||
public InterceptOrderDO saveInterceptOrder(Long k, List<TaskOrderPO> v) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
|
||||
// =========================== 获取不可拦截的任务列表 ==============================
|
||||
// 不可拦截任务列表1:任务状态不可拦截
|
||||
List<TaskOrderPO> unableInterceptTask1 = v.stream()
|
||||
.filter(x -> ArrayUtil.contains(OrderConstant.TASK_STATUS_GROUP_UNABLE_INTERCEPT, x.getTaskStatus()))
|
||||
.collect(Collectors.toList());
|
||||
// 不可拦截任务列表2:任务未下发但已合并
|
||||
List<TaskOrderPO> unableInterceptTask2 = v.stream()
|
||||
.filter(x -> OrderConstant.TASK_STATUS_0.equals(x.getTaskStatus()) && 1 == x.getMergeState())
|
||||
.collect(Collectors.toList());
|
||||
// 任务单号字符串
|
||||
String taskNos = v.stream().map(TaskOrderPO::getTaskNo)
|
||||
.map(Object::toString)
|
||||
.collect(Collectors.joining(","));
|
||||
|
||||
// =========================== 拦截表数据固定参数组装 ============================
|
||||
InterceptOrderDO interceptOrderDO = new InterceptOrderDO();
|
||||
interceptOrderDO.setCreateBy(loginUser.getUserid());
|
||||
interceptOrderDO.setCreateByName(loginUser.getUsername());
|
||||
interceptOrderDO.setCreateTime(new Date());
|
||||
interceptOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
interceptOrderDO.setOrderId(k);
|
||||
interceptOrderDO.setInterceptState(OrderConstant.INTERCEPT_STATUS_0);
|
||||
interceptOrderDO.setInterceptBy(loginUser.getUserid());
|
||||
interceptOrderDO.setInterceptByName(loginUser.getUsername());
|
||||
interceptOrderDO.setInterceptTime(new Date());
|
||||
interceptOrderDO.setTaskNos(taskNos);
|
||||
|
||||
// ========================== 拦截表数据特殊参数处理:拦截状态、失败原因 ==========================
|
||||
// 如果存在不可拦截任务,保存拦截失败记录
|
||||
if(unableInterceptTask1.size() > 0){
|
||||
interceptOrderDO.setInterceptState(OrderConstant.INTERCEPT_STATUS_2);
|
||||
List<String> unableInterceptTaskNos = unableInterceptTask1.stream().map(TaskOrderPO::getTaskNo)
|
||||
.map(Object::toString)
|
||||
.collect(Collectors.toList());
|
||||
interceptOrderDO.setFailCause(unableInterceptTaskNos + "作业任务状态已下发或已完成");
|
||||
}
|
||||
else if(unableInterceptTask2.size() > 0){
|
||||
interceptOrderDO.setInterceptState(OrderConstant.INTERCEPT_STATUS_2);
|
||||
List<String> unableInterceptTaskNos = unableInterceptTask2.stream().map(TaskOrderPO::getTaskNo)
|
||||
.map(Object::toString)
|
||||
.collect(Collectors.toList());
|
||||
interceptOrderDO.setFailCause(unableInterceptTaskNos + "作业任务已合并");
|
||||
}
|
||||
// 不存在,保存拦截成功记录
|
||||
else{
|
||||
interceptOrderDO.setInterceptState(OrderConstant.INTERCEPT_STATUS_1);
|
||||
}
|
||||
interceptOrderService.insert(interceptOrderDO);
|
||||
return interceptOrderDO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.mhd.oms.domain.logistics.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* 物流信息对象 oms_logistics
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName(value = "oms_logistics")
|
||||
public class Logistics extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("运输方式ID")
|
||||
@Excel(name = "运输方式ID")
|
||||
private String shippingTypeId;
|
||||
|
||||
@ApiModelProperty("运输方式")
|
||||
@Excel(name = "运输方式")
|
||||
private String shippingType;
|
||||
|
||||
@ApiModelProperty("承运商ID")
|
||||
@Excel(name = "承运商ID")
|
||||
private Long carrierId;
|
||||
|
||||
@ApiModelProperty("承运商")
|
||||
@Excel(name = "承运商")
|
||||
private String carrier;
|
||||
|
||||
@ApiModelProperty("物流单号")
|
||||
@Excel(name = "物流单号")
|
||||
private String trackingNum;
|
||||
|
||||
@ApiModelProperty("运费金额")
|
||||
@Excel(name = "运费金额")
|
||||
private BigDecimal freightAmount;
|
||||
|
||||
@ApiModelProperty("车牌号")
|
||||
@Excel(name = "车牌号")
|
||||
private String plateNum;
|
||||
|
||||
@ApiModelProperty("司机")
|
||||
@Excel(name = "司机")
|
||||
private String driverName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
@Excel(name = "联系电话")
|
||||
private String driverPhone;
|
||||
|
||||
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.mhd.oms.domain.logistics.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.logistics.entity.Logistics;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物流信息Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface ILogisticsService extends IService<Logistics>
|
||||
{
|
||||
/**
|
||||
* 分页查询物流信息列表
|
||||
*/
|
||||
public List<LogisticsPO> queryList(LogisticsDO logisticsDO);
|
||||
|
||||
/**
|
||||
* 新增物流信息
|
||||
*/
|
||||
public Boolean insert(LogisticsDO logisticsDO);
|
||||
|
||||
/**
|
||||
* 修改物流信息
|
||||
*/
|
||||
public Boolean update(LogisticsDO logisticsDO);
|
||||
|
||||
/**
|
||||
* 批量删除物流信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询物流信息
|
||||
*/
|
||||
public LogisticsPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
Boolean batchInsert(List<LogisticsDO> logisticsDOList);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.logistics.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.logistics.entity.Logistics;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物流信息Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface LogisticsMapper extends BaseMapper<Logistics>
|
||||
{
|
||||
/**
|
||||
* 查询物流信息列表
|
||||
*/
|
||||
public List<LogisticsPO> queryList(LogisticsDO logisticsDO);
|
||||
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.mhd.oms.domain.logistics.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.logistics.entity.Logistics;
|
||||
import com.mhd.oms.domain.logistics.repository.facade.ILogisticsService;
|
||||
import com.mhd.oms.domain.logistics.repository.mapper.LogisticsMapper;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 物流信息Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class LogisticsImpl extends ServiceImpl<LogisticsMapper, Logistics> implements ILogisticsService {
|
||||
@Autowired
|
||||
private LogisticsMapper logisticsMapper;
|
||||
|
||||
/**
|
||||
* 查询物流信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<LogisticsPO> queryList(LogisticsDO logisticsDO)
|
||||
{
|
||||
return logisticsMapper.queryList(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增物流信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(LogisticsDO logisticsDO) {
|
||||
Logistics logistics = new Logistics();
|
||||
BeanUtils.copyProperties(logisticsDO,logistics);
|
||||
return this.save(logistics);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改物流信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(LogisticsDO logisticsDO) {
|
||||
Logistics logistics = new Logistics();
|
||||
BeanUtils.copyProperties(logisticsDO,logistics);
|
||||
return this.updateById(logistics);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除物流信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<Logistics> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
Logistics logistics = new Logistics();
|
||||
logistics.setId(id);
|
||||
logistics.setDelFlag(2);
|
||||
list.add(logistics);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改物流信息
|
||||
*/
|
||||
@Override
|
||||
public LogisticsPO getInfo(Long id) {
|
||||
Logistics logistics = this.getById(id);
|
||||
LogisticsPO logisticsPO = new LogisticsPO();
|
||||
BeanUtils.copyProperties(logistics,logisticsPO);
|
||||
return logisticsPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchInsert(List<LogisticsDO> logisticsDOList) {
|
||||
List<Logistics> logisticsList = logisticsDOList.stream().map(logisticsDO -> {
|
||||
Logistics logistics = new Logistics();
|
||||
BeanUtils.copyProperties(logisticsDO, logistics);
|
||||
return logistics;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(logisticsList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.mhd.oms.domain.logistics.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;
|
||||
|
||||
|
||||
/**
|
||||
* 物流信息对象 oms_logistics
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "物流信息对象", description = "物流信息响应对象")
|
||||
public class LogisticsPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("运输方式ID")
|
||||
@Excel(name = "运输方式ID")
|
||||
private String shippingTypeId;
|
||||
|
||||
@ApiModelProperty("运输方式")
|
||||
@Excel(name = "运输方式")
|
||||
private String shippingType;
|
||||
|
||||
@ApiModelProperty("承运商ID")
|
||||
@Excel(name = "承运商ID")
|
||||
private Long carrierId;
|
||||
|
||||
@ApiModelProperty("承运商")
|
||||
@Excel(name = "承运商")
|
||||
private String carrier;
|
||||
|
||||
@ApiModelProperty("物流单号")
|
||||
@Excel(name = "物流单号")
|
||||
private String trackingNum;
|
||||
|
||||
@ApiModelProperty("运费金额")
|
||||
@Excel(name = "运费金额")
|
||||
private BigDecimal freightAmount;
|
||||
|
||||
@ApiModelProperty("车牌号")
|
||||
@Excel(name = "车牌号")
|
||||
private String plateNum;
|
||||
|
||||
@ApiModelProperty("司机")
|
||||
@Excel(name = "司机")
|
||||
private String driverName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
@Excel(name = "联系电话")
|
||||
private String driverPhone;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.mhd.oms.domain.logistics.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;
|
||||
|
||||
|
||||
/**
|
||||
* 物流信息对象 oms_logistics
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class LogisticsDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("运输方式ID")
|
||||
@Excel(name = "运输方式ID")
|
||||
private String shippingTypeId;
|
||||
|
||||
@ApiModelProperty("运输方式")
|
||||
@Excel(name = "运输方式")
|
||||
private String shippingType;
|
||||
|
||||
@ApiModelProperty("承运商ID")
|
||||
@Excel(name = "承运商ID")
|
||||
private Long carrierId;
|
||||
|
||||
@ApiModelProperty("承运商")
|
||||
@Excel(name = "承运商")
|
||||
private String carrier;
|
||||
|
||||
@ApiModelProperty("物流单号")
|
||||
@Excel(name = "物流单号")
|
||||
private String trackingNum;
|
||||
|
||||
@ApiModelProperty("运费金额")
|
||||
@Excel(name = "运费金额")
|
||||
private BigDecimal freightAmount;
|
||||
|
||||
@ApiModelProperty("车牌号")
|
||||
@Excel(name = "车牌号")
|
||||
private String plateNum;
|
||||
|
||||
@ApiModelProperty("司机")
|
||||
@Excel(name = "司机")
|
||||
private String driverName;
|
||||
|
||||
@ApiModelProperty("联系电话")
|
||||
@Excel(name = "联系电话")
|
||||
private String driverPhone;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.mhd.oms.domain.logistics.service;
|
||||
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.logistics.repository.facade.ILogisticsService;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物流信息
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class LogisticsDomainService {
|
||||
|
||||
@Autowired
|
||||
private ILogisticsService logisticsService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询物流信息列表
|
||||
*/
|
||||
public List<LogisticsPO> queryList(LogisticsDO logisticsDO) {
|
||||
return logisticsService.queryList(logisticsDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增物流信息
|
||||
*/
|
||||
public Boolean insert(LogisticsDO logisticsDO) {
|
||||
|
||||
return logisticsService.insert(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改物流信息
|
||||
*/
|
||||
public Boolean update(LogisticsDO logisticsDO) {
|
||||
return logisticsService.update(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除物流信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return logisticsService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取物流信息详细信息
|
||||
*/
|
||||
public LogisticsPO getInfo(Long id)
|
||||
{
|
||||
return logisticsService.getInfo(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
public Boolean batchInsert(List<LogisticsDO> logisticsDOList) {
|
||||
return logisticsService.batchInsert(logisticsDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入销售订单 - 为传入的物流列表添加一条物流信息
|
||||
*
|
||||
* @param logisticsDOList - 添加数据的列表
|
||||
* @param salesOrderExcelDTO -导入的数据
|
||||
* @param salesOrder - 导入数据中的销售订单信息
|
||||
*/
|
||||
public void listAddFromImportSalesOrder(List<LogisticsDO> logisticsDOList, SalesOrderExcelDTO salesOrderExcelDTO, SalesOrder salesOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
LogisticsDO logisticsDO = new LogisticsDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, logisticsDO, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
logisticsDO.setOrderId(salesOrder.getId());
|
||||
logisticsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
logisticsDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
logisticsDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
logisticsDO.setCreateTime(new Date());
|
||||
logisticsDOList.add(logisticsDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入采购订单 - 为传入的物流列表添加一条物流信息
|
||||
*
|
||||
* @param logisticsDOList - 添加数据的列表
|
||||
* @param purOrderExcelDTO -导入的数据
|
||||
* @param purOrder - 导入的采购订单信息
|
||||
*/
|
||||
public void listAddFromImportPurOrder(List<LogisticsDO> logisticsDOList, PurchaseOrderExcelDTO purOrderExcelDTO, PurchaseOrder purOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
LogisticsDO logisticsDO = new LogisticsDO();
|
||||
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, logisticsDO, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
logisticsDO.setOrderId(purOrder.getId());
|
||||
logisticsDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
logisticsDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
logisticsDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
logisticsDO.setCreateTime(new Date());
|
||||
logisticsDOList.add(logisticsDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.mhd.oms.domain.orderType.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* 订单类型关系对象 oms_order_type
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_order_type")
|
||||
public class OrderType extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("业务订单类型ID")
|
||||
@Excel(name = "业务订单类型ID")
|
||||
private String businessOrderTypeId;
|
||||
|
||||
@ApiModelProperty("业务订单类型")
|
||||
@Excel(name = "业务订单类型")
|
||||
private String businessOrderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统ID")
|
||||
@Excel(name = "下发系统ID")
|
||||
private String deliverySystemId;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("下发订单类型ID")
|
||||
@Excel(name = "下发订单类型ID")
|
||||
private String orderTypeId;
|
||||
|
||||
@ApiModelProperty("下发订单类型")
|
||||
@Excel(name = "下发订单类型")
|
||||
private String orderType;
|
||||
|
||||
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
package com.mhd.oms.domain.orderType.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.orderType.entity.OrderType;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypeDictPO;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单类型关系Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
public interface IOrderTypeService extends IService<OrderType>
|
||||
{
|
||||
/**
|
||||
* 分页查询订单类型关系列表
|
||||
*/
|
||||
public List<OrderTypePO> queryList(OrderTypeDO orderTypeDO);
|
||||
|
||||
/**
|
||||
* 新增订单类型关系
|
||||
*/
|
||||
public Boolean insert(OrderTypeDO orderTypeDO);
|
||||
|
||||
/**
|
||||
* 修改订单类型关系
|
||||
*/
|
||||
public Boolean update(OrderTypeDO orderTypeDO);
|
||||
|
||||
/**
|
||||
* 批量删除订单类型关系
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询订单类型关系
|
||||
*/
|
||||
public OrderTypePO getInfo(Long id);
|
||||
|
||||
List<OrderTypeDictPO> listDict();
|
||||
}
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.mhd.oms.domain.orderType.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.orderType.entity.OrderType;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypeDictPO;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单类型关系Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
public interface OrderTypeMapper extends BaseMapper<OrderType>
|
||||
{
|
||||
/**
|
||||
* 查询订单类型关系列表
|
||||
*/
|
||||
public List<OrderTypePO> queryList(OrderTypeDO orderTypeDO);
|
||||
|
||||
List<OrderTypeDictPO> listDict();
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
package com.mhd.oms.domain.orderType.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.orderType.entity.OrderType;
|
||||
import com.mhd.oms.domain.orderType.repository.facade.IOrderTypeService;
|
||||
import com.mhd.oms.domain.orderType.repository.mapper.OrderTypeMapper;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypeDictPO;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO;
|
||||
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-15
|
||||
*/
|
||||
@Service
|
||||
public class OrderTypeImpl extends ServiceImpl<OrderTypeMapper, OrderType> implements IOrderTypeService{
|
||||
@Autowired
|
||||
private OrderTypeMapper orderTypeMapper;
|
||||
|
||||
/**
|
||||
* 查询订单类型关系列表
|
||||
*/
|
||||
@Override
|
||||
public List<OrderTypePO> queryList(OrderTypeDO orderTypeDO)
|
||||
{
|
||||
return orderTypeMapper.queryList(orderTypeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增订单类型关系
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(OrderTypeDO orderTypeDO) {
|
||||
OrderType orderType = new OrderType();
|
||||
BeanUtils.copyProperties(orderTypeDO,orderType);
|
||||
return this.save(orderType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单类型关系
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(OrderTypeDO orderTypeDO) {
|
||||
OrderType orderType = new OrderType();
|
||||
BeanUtils.copyProperties(orderTypeDO,orderType);
|
||||
return this.updateById(orderType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除订单类型关系
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<OrderType> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
OrderType orderType = new OrderType();
|
||||
orderType.setId(id);
|
||||
orderType.setDelFlag(2);
|
||||
list.add(orderType);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单类型关系
|
||||
*/
|
||||
@Override
|
||||
public OrderTypePO getInfo(Long id) {
|
||||
OrderType orderType = this.orderTypeMapper.selectOne(new LambdaQueryWrapper<OrderType>()
|
||||
.eq(OrderType::getId,id).eq(OrderType::getDelFlag,1));
|
||||
OrderTypePO orderTypePO = new OrderTypePO();
|
||||
if (orderType != null) {
|
||||
BeanUtils.copyProperties(orderType, orderTypePO);
|
||||
}
|
||||
return orderTypePO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderTypeDictPO> listDict() {
|
||||
return orderTypeMapper.listDict();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.mhd.oms.domain.orderType.repository.po;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "订单类型关系数据字典对象", description = "订单类型关系数据字典对象")
|
||||
public class OrderTypeDictPO {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String businessOrderType;
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.mhd.oms.domain.orderType.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;
|
||||
|
||||
|
||||
/**
|
||||
* 订单类型关系对象 oms_order_type
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "订单类型关系对象", description = "订单类型关系响应对象")
|
||||
public class OrderTypePO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("业务订单类型ID")
|
||||
@Excel(name = "业务订单类型ID")
|
||||
private String businessOrderTypeId;
|
||||
|
||||
@ApiModelProperty("业务订单类型")
|
||||
@Excel(name = "业务订单类型")
|
||||
private String businessOrderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统ID")
|
||||
@Excel(name = "下发系统ID")
|
||||
private String deliverySystemId;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("下发订单类型ID")
|
||||
@Excel(name = "下发订单类型ID")
|
||||
private String orderTypeId;
|
||||
|
||||
@ApiModelProperty("下发订单类型")
|
||||
@Excel(name = "下发订单类型")
|
||||
private String orderType;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.domain.orderType.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;
|
||||
|
||||
|
||||
/**
|
||||
* 订单类型关系对象 oms_order_type
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class OrderTypeDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("业务订单类型ID")
|
||||
@Excel(name = "业务订单类型ID")
|
||||
private String businessOrderTypeId;
|
||||
|
||||
@ApiModelProperty("业务订单类型")
|
||||
@Excel(name = "业务订单类型")
|
||||
private String businessOrderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统ID")
|
||||
@Excel(name = "下发系统ID")
|
||||
private String deliverySystemId;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("下发订单类型ID")
|
||||
@Excel(name = "下发订单类型ID")
|
||||
private String orderTypeId;
|
||||
|
||||
@ApiModelProperty("下发订单类型")
|
||||
@Excel(name = "下发订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
package com.mhd.oms.domain.orderType.service;
|
||||
|
||||
import com.mhd.oms.domain.orderType.repository.facade.IOrderTypeService;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypeDictPO;
|
||||
import com.mhd.oms.domain.orderType.repository.po.OrderTypePO;
|
||||
import com.mhd.oms.domain.orderType.repository.todo.OrderTypeDO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单类型关系
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-15
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class OrderTypeDomainService {
|
||||
|
||||
@Autowired
|
||||
private IOrderTypeService orderTypeService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询订单类型关系列表
|
||||
*/
|
||||
public List<OrderTypePO> queryList(OrderTypeDO orderTypeDO) {
|
||||
return orderTypeService.queryList(orderTypeDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增订单类型关系
|
||||
*/
|
||||
public Boolean insert(OrderTypeDO orderTypeDO) {
|
||||
|
||||
return orderTypeService.insert(orderTypeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改订单类型关系
|
||||
*/
|
||||
public Boolean update(OrderTypeDO orderTypeDO) {
|
||||
return orderTypeService.update(orderTypeDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除订单类型关系
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return orderTypeService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单类型关系详细信息
|
||||
*/
|
||||
public OrderTypePO getInfo(Long id)
|
||||
{
|
||||
return orderTypeService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public List<OrderTypeDictPO> listDict() {
|
||||
return orderTypeService.listDict();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 采购订单管理对象 oms_purchase_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_purchase_order")
|
||||
public class PurchaseOrder extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("采购单号")
|
||||
@Excel(name = "采购单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1待审核2已审核3已拒绝4已生成5部分采购6完成采购7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分采购6完成采购7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应商ID")
|
||||
@Excel(name = "供应商ID")
|
||||
private Long supplierId;
|
||||
|
||||
@ApiModelProperty("供应商")
|
||||
@Excel(name = "供应商")
|
||||
private String supplier;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("收货仓库ID")
|
||||
@Excel(name = "收货仓库ID")
|
||||
private Long receivingWarehouseId;
|
||||
|
||||
@ApiModelProperty("收货仓库")
|
||||
@Excel(name = "收货仓库")
|
||||
private String receivingWarehouse;
|
||||
|
||||
@ApiModelProperty("交货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "交货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("来源;0-内部1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("价税合计")
|
||||
@Excel(name = "价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
@Excel(name = "物料信息")
|
||||
private String materialInfo;
|
||||
|
||||
|
||||
@ApiModelProperty("物料数量")
|
||||
@Excel(name = "物料数量")
|
||||
private Integer materialNum;
|
||||
|
||||
@ApiModelProperty("入库数量")
|
||||
@Excel(name = "入库数量")
|
||||
private Integer inStorageNum;
|
||||
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
}
|
||||
+75
@@ -0,0 +1,75 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderAuditDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 采购订单管理Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface IPurchaseOrderService extends IService<PurchaseOrder>
|
||||
{
|
||||
/**
|
||||
* 分页查询采购订单管理列表
|
||||
*/
|
||||
public List<PurchaseOrderPO> queryList(PurchaseOrderDO purchaseOrderDO);
|
||||
|
||||
/**
|
||||
* 新增采购订单管理
|
||||
*/
|
||||
public Boolean insert(PurchaseOrderDO purchaseOrderDO);
|
||||
/** 新增并返回实体 */
|
||||
public PurchaseOrder insertReturnEntity(PurchaseOrderDO purchaseOrderDO);
|
||||
|
||||
/**
|
||||
* 新增采购订单管理
|
||||
*/
|
||||
public Long insertReturnId(PurchaseOrderDO purchaseOrderDO);
|
||||
|
||||
/**
|
||||
* 修改采购订单管理
|
||||
*/
|
||||
public Boolean update(PurchaseOrderDO purchaseOrderDO);
|
||||
|
||||
/**
|
||||
* 批量删除采购订单管理
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询采购订单管理
|
||||
*/
|
||||
public PurchaseOrderDetailsPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 采购订单审核
|
||||
* @param purchaseOrderAuditDO
|
||||
* @return
|
||||
*/
|
||||
public Boolean audit(PurchaseOrderAuditDO purchaseOrderAuditDO);
|
||||
|
||||
/**
|
||||
* 采购订单取消审核
|
||||
* @param purchaseOrderAuditDO
|
||||
* @return
|
||||
*/
|
||||
public Boolean cancelAudit(PurchaseOrderAuditDO purchaseOrderAuditDO);
|
||||
|
||||
/**
|
||||
* 根据ID更新状态
|
||||
*/
|
||||
void updateStateById(Long id, Integer state);
|
||||
|
||||
List<PurchaseOrderPO> getInfo(List<Long> ids);
|
||||
|
||||
Boolean batchUpdate(List<PurchaseOrderDO> purchaseOrderDOS);
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderDO;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 采购订单管理Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface PurchaseOrderMapper extends BaseMapper<PurchaseOrder>
|
||||
{
|
||||
/**
|
||||
* 查询采购订单管理列表
|
||||
*/
|
||||
public List<PurchaseOrderPO> queryList(PurchaseOrderDO purchaseOrderDO);
|
||||
|
||||
@Select("select order_no, shipper_id, shipper, order_type, customer_orders, tackl_state, job_task_type, supplier_id, order_type_id " +
|
||||
"from oms_purchase_order where id = #{orderId}")
|
||||
OrderInfoPO selectOrderInfoByOrderId(Long orderId);
|
||||
}
|
||||
+307
@@ -0,0 +1,307 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.persistence;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.deliveryInfo.entity.DeliveryInfo;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.mapper.DeliveryInfoMapper;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.goods.entity.Goods;
|
||||
import com.mhd.oms.domain.goods.repository.mapper.GoodsMapper;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.logistics.entity.Logistics;
|
||||
import com.mhd.oms.domain.logistics.repository.mapper.LogisticsMapper;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.facade.IPurchaseOrderService;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.mapper.PurchaseOrderMapper;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderAuditDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderDO;
|
||||
import com.mhd.oms.domain.receiptInfo.entity.ReceiptInfo;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.mapper.ReceiptInfoMapper;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.mapper.ScmOrderMapper;
|
||||
import com.mhd.oms.domain.settlement.entity.Settlement;
|
||||
import com.mhd.oms.domain.settlement.repository.mapper.SettlementMapper;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 采购订单管理Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class PurchaseOrderImpl extends ServiceImpl<PurchaseOrderMapper, PurchaseOrder> implements IPurchaseOrderService {
|
||||
@Autowired
|
||||
private PurchaseOrderMapper purchaseOrderMapper;
|
||||
|
||||
@Resource
|
||||
private SettlementMapper settlementMapper;
|
||||
|
||||
@Resource
|
||||
private DeliveryInfoMapper deliveryInfoMapper;
|
||||
|
||||
@Resource
|
||||
private ReceiptInfoMapper receiptInfoMapper;
|
||||
|
||||
@Resource
|
||||
private LogisticsMapper logisticsMapper;
|
||||
|
||||
@Resource
|
||||
private GoodsMapper goodsMapper;
|
||||
|
||||
@Resource
|
||||
private ScmOrderMapper scmOrderMapper;
|
||||
|
||||
/**
|
||||
* 查询采购订单管理列表
|
||||
*/
|
||||
@Override
|
||||
public List<PurchaseOrderPO> queryList(PurchaseOrderDO purchaseOrderDO)
|
||||
{
|
||||
List<PurchaseOrderPO> purchaseOrderPOS = purchaseOrderMapper.queryList(purchaseOrderDO);
|
||||
for (PurchaseOrderPO purchaseOrderPO : purchaseOrderPOS) {
|
||||
//查询供应链订单号
|
||||
String scmOrderNo = scmOrderMapper.selectScmOrderNoByOrderId(purchaseOrderPO.getId());
|
||||
}
|
||||
return purchaseOrderPOS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增采购订单管理
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(PurchaseOrderDO purchaseOrderDO) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
BeanUtils.copyProperties(purchaseOrderDO,purchaseOrder);
|
||||
return this.save(purchaseOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PurchaseOrder insertReturnEntity(PurchaseOrderDO purchaseOrderDO) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
BeanUtils.copyProperties(purchaseOrderDO,purchaseOrder);
|
||||
this.save(purchaseOrder);
|
||||
return purchaseOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增采购订单管理并且返回主键ID
|
||||
*/
|
||||
@Override
|
||||
public Long insertReturnId(PurchaseOrderDO purchaseOrderDO) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
BeanUtils.copyProperties(purchaseOrderDO,purchaseOrder);
|
||||
this.save(purchaseOrder);
|
||||
return purchaseOrder.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改采购订单管理
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(PurchaseOrderDO purchaseOrderDO) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
BeanUtils.copyProperties(purchaseOrderDO,purchaseOrder);
|
||||
return this.updateById(purchaseOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除采购订单管理
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<PurchaseOrder> list = new ArrayList<>();
|
||||
List<PurchaseOrderPO> purchaseOrderPOS = getInfo(Arrays.asList(ids));
|
||||
//采购订单 订单状态未审核/已审核状态下才可以删除,否则提示异常
|
||||
List<PurchaseOrderPO> collect = purchaseOrderPOS.stream().
|
||||
filter(purchaseOrderPO -> purchaseOrderPO.getOrderState() > 2).collect(Collectors.toList());
|
||||
if (!collect.isEmpty()) {
|
||||
throw new ServiceException("未审核/已审核状态下才可以删除订单");
|
||||
}
|
||||
for (PurchaseOrderPO purchaseOrderPO : purchaseOrderPOS) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
purchaseOrder.setId(purchaseOrderPO.getId());
|
||||
purchaseOrder.setDelFlag(2);
|
||||
list.add(purchaseOrder);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改采购订单管理
|
||||
*/
|
||||
@Override
|
||||
public PurchaseOrderDetailsPO getInfo(Long id) {
|
||||
|
||||
PurchaseOrderDetailsPO purchaseOrderDetailsPO = new PurchaseOrderDetailsPO();
|
||||
PurchaseOrder purchaseOrder = this.getById(id);
|
||||
PurchaseOrderPO purchaseOrderPO = new PurchaseOrderPO();
|
||||
if (ObjectUtil.isNull(purchaseOrder)) {
|
||||
throw new ServiceException("未查询到对应的采购单信息");
|
||||
}
|
||||
BeanUtils.copyProperties(purchaseOrder,purchaseOrderPO);
|
||||
purchaseOrderDetailsPO.setPurchaseOrderPO(purchaseOrderPO);
|
||||
|
||||
SettlementPO settlementPO = new SettlementPO();
|
||||
Settlement settlement = settlementMapper.selectOne(new LambdaQueryWrapper<Settlement>()
|
||||
.eq(Settlement::getOrderId, id).eq(Settlement::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(settlement)) {//结算单对象可以为空,如果为空则认为结算单没有数据
|
||||
settlement = new Settlement();
|
||||
}
|
||||
BeanUtils.copyProperties(settlement,settlementPO);
|
||||
purchaseOrderDetailsPO.setSettlementPO(settlementPO);
|
||||
|
||||
DeliveryInfoPO deliveryInfoPO = new DeliveryInfoPO();
|
||||
DeliveryInfo deliveryInfo = deliveryInfoMapper.selectOne(new LambdaQueryWrapper<DeliveryInfo>()
|
||||
.eq(DeliveryInfo::getOrderId, id).eq(DeliveryInfo::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(deliveryInfo)) {
|
||||
deliveryInfo = new DeliveryInfo();
|
||||
}
|
||||
BeanUtils.copyProperties(deliveryInfo, deliveryInfoPO);
|
||||
purchaseOrderDetailsPO.setDeliveryInfoPO(deliveryInfoPO);
|
||||
|
||||
|
||||
ReceiptInfoPO receiptInfoPO = new ReceiptInfoPO();
|
||||
ReceiptInfo receiptInfo = receiptInfoMapper.selectOne(new LambdaQueryWrapper<ReceiptInfo>()
|
||||
.eq(ReceiptInfo::getOrderId, id).eq(ReceiptInfo::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(receiptInfo)) {
|
||||
receiptInfo = new ReceiptInfo();
|
||||
}
|
||||
BeanUtils.copyProperties(receiptInfo, receiptInfoPO);
|
||||
purchaseOrderDetailsPO.setReceiptInfoPO(receiptInfoPO);
|
||||
|
||||
LogisticsPO logisticsPO = new LogisticsPO();
|
||||
Logistics logistics = logisticsMapper.selectOne(new LambdaQueryWrapper<Logistics>()
|
||||
.eq(Logistics::getOrderId, id).eq(Logistics::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(logistics)) {
|
||||
logistics = new Logistics();
|
||||
}
|
||||
BeanUtils.copyProperties(logistics, logisticsPO);
|
||||
purchaseOrderDetailsPO.setLogisticsPO(logisticsPO);
|
||||
|
||||
List<Goods> goodsList = goodsMapper.selectList(new LambdaQueryWrapper<Goods>()
|
||||
.eq(Goods::getOrderId, id).eq(Goods::getDelFlag, 1));
|
||||
List<GoodsPO> goodsPOList = goodsList.stream().map(goods -> {
|
||||
GoodsPO goodsPO = new GoodsPO();
|
||||
BeanUtils.copyProperties(goods, goodsPO);
|
||||
return goodsPO;
|
||||
}).collect(Collectors.toList());
|
||||
purchaseOrderDetailsPO.setGoodsPOList(goodsPOList);
|
||||
|
||||
|
||||
return purchaseOrderDetailsPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 采购订单审核
|
||||
* @param purchaseOrderAuditDO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean audit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
List<PurchaseOrder> purchaseOrders = new ArrayList<>();
|
||||
List<Long> ids = Convert.toList(Long.class, purchaseOrderAuditDO.getIds());
|
||||
for (Long id : ids) {
|
||||
PurchaseOrder purchaseOrder = this.getById(id);
|
||||
if (ObjectUtil.isNull(purchaseOrder)) {
|
||||
throw new ServiceException("未查询到对应的采购订单");
|
||||
}
|
||||
if (purchaseOrder.getAuditState() == 2 || purchaseOrder.getAuditState() == 3) {
|
||||
throw new ServiceException(String.format("订单号【%s】订单状态不符合预期,仅在待审核状态下才允许审核", purchaseOrder.getOrderNo()));
|
||||
}
|
||||
purchaseOrder.setAuditBy(purchaseOrderAuditDO.getAuditBy());
|
||||
purchaseOrder.setAuditTime(new Date());
|
||||
purchaseOrder.setAuditState(purchaseOrderAuditDO.getAuditState());
|
||||
purchaseOrder.setAuditResult(purchaseOrderAuditDO.getAuditResult());
|
||||
purchaseOrder.setOrderState(purchaseOrderAuditDO.getAuditState());
|
||||
purchaseOrder.setUpdateBy(purchaseOrderAuditDO.getUpdateBy());
|
||||
purchaseOrder.setUpdateTime(purchaseOrderAuditDO.getUpdateTime());
|
||||
purchaseOrder.setUpdateByName(purchaseOrderAuditDO.getUpdateByName());
|
||||
purchaseOrders.add(purchaseOrder);
|
||||
}
|
||||
return this.updateBatchById(purchaseOrders);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean cancelAudit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
List<PurchaseOrder> purchaseOrders = new ArrayList<>();
|
||||
List<Long> ids = Convert.toList(Long.class, purchaseOrderAuditDO.getIds());
|
||||
for (Long id : ids) {
|
||||
PurchaseOrder purchaseOrder = this.getById(id);
|
||||
if (ObjectUtil.isNull(purchaseOrder)) {
|
||||
throw new ServiceException("未查询到对应的采购订单");
|
||||
}
|
||||
//状态1,4,5,6,7,8无法取消审核
|
||||
if (ArrayUtil.contains(OrderConstant.PUR_STATUS_GROUP_UNABLE_CANCEL_AUDIT, purchaseOrder.getOrderState())) {
|
||||
throw new ServiceException(String.format("订单号【%s】订单状态异常,暂时无法取消审核", purchaseOrder.getOrderNo()));
|
||||
}
|
||||
purchaseOrder.setAuditBy(null);
|
||||
purchaseOrder.setAuditTime(null);
|
||||
//取消审核,审核状态还原为未审核
|
||||
purchaseOrder.setAuditState(OrderConstant.PUR_STATUS_1);
|
||||
purchaseOrder.setOrderState(1);
|
||||
purchaseOrder.setAuditResult("");
|
||||
purchaseOrder.setUpdateBy(purchaseOrderAuditDO.getUpdateBy());
|
||||
purchaseOrder.setUpdateTime(purchaseOrderAuditDO.getUpdateTime());
|
||||
purchaseOrder.setUpdateByName(purchaseOrderAuditDO.getUpdateByName());
|
||||
purchaseOrders.add(purchaseOrder);
|
||||
}
|
||||
return this.updateBatchById(purchaseOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PurchaseOrderPO> getInfo(List<Long> ids) {
|
||||
List<PurchaseOrder> purchaseOrders = purchaseOrderMapper.selectList(new LambdaQueryWrapper<PurchaseOrder>()
|
||||
.in(PurchaseOrder::getId, ids));
|
||||
return purchaseOrders.stream().map(purchaseOrder -> {
|
||||
PurchaseOrderPO purchaseOrderPO = new PurchaseOrderPO();
|
||||
BeanUtils.copyProperties(purchaseOrder, purchaseOrderPO);
|
||||
return purchaseOrderPO;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchUpdate(List<PurchaseOrderDO> purchaseOrderDOS) {
|
||||
List<PurchaseOrder> purchaseOrders = new ArrayList<>();
|
||||
for (PurchaseOrderDO purchaseOrderDO : purchaseOrderDOS) {
|
||||
PurchaseOrder purchaseOrder = new PurchaseOrder();
|
||||
BeanUtils.copyProperties(purchaseOrderDO,purchaseOrder);
|
||||
purchaseOrders.add(purchaseOrder);
|
||||
}
|
||||
return this.updateBatchById(purchaseOrders);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStateById(Long id, Integer state) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
purchaseOrderMapper.update(new PurchaseOrder(), new LambdaUpdateWrapper<PurchaseOrder>()
|
||||
.set(PurchaseOrder::getOrderState, state)
|
||||
.set(PurchaseOrder::getUpdateBy, loginUser.getUserid())
|
||||
.set(PurchaseOrder::getUpdateByName, loginUser.getUsername())
|
||||
.set(PurchaseOrder::getUpdateTime, new Date())
|
||||
.eq(PurchaseOrder::getId, id));
|
||||
}
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.po;
|
||||
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 采购订单管理对象 oms_purchase_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "采购订单详情对象", description = "采购订单详情响应对象")
|
||||
public class PurchaseOrderDetailsPO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("基本信息")
|
||||
private PurchaseOrderPO purchaseOrderPO;
|
||||
|
||||
@ApiModelProperty("结算信息")
|
||||
private SettlementPO settlementPO;
|
||||
|
||||
@ApiModelProperty("发货信息")
|
||||
private DeliveryInfoPO deliveryInfoPO;
|
||||
|
||||
@ApiModelProperty("收货信息")
|
||||
private ReceiptInfoPO receiptInfoPO;
|
||||
|
||||
@ApiModelProperty("物流信息")
|
||||
private LogisticsPO logisticsPO;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
private List<GoodsPO> goodsPOList;
|
||||
|
||||
|
||||
|
||||
}
|
||||
+216
@@ -0,0 +1,216 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 采购订单管理对象 oms_purchase_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "采购订单管理对象", description = "采购订单管理响应对象")
|
||||
public class PurchaseOrderPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("采购单号")
|
||||
@Excel(name = "采购单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态:1-待审核、2-已审核、3-已拒绝、4-已生成、5-部分采购、6-完成采购、7-已取消、8-已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分采购6完成采购7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应商ID")
|
||||
@Excel(name = "供应商ID")
|
||||
private Long supplierId;
|
||||
|
||||
@ApiModelProperty("供应商")
|
||||
@Excel(name = "供应商")
|
||||
private String supplier;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("收货仓库ID")
|
||||
@Excel(name = "收货仓库ID")
|
||||
private Long receivingWarehouseId;
|
||||
|
||||
@ApiModelProperty("收货仓库")
|
||||
@Excel(name = "收货仓库")
|
||||
private String receivingWarehouse;
|
||||
|
||||
@ApiModelProperty("交货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "交货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("来源:0-内部、1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("拦截状态:0-未拦截、1-拦截成功、2-拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
@ApiModelProperty("结算对象")
|
||||
@Excel(name = "结算对象")
|
||||
private String settlementObj;
|
||||
|
||||
@ApiModelProperty("结算方式")
|
||||
@Excel(name = "结算方式")
|
||||
private String settlementWay;
|
||||
|
||||
@ApiModelProperty("支付状态")
|
||||
@Excel(name = "支付状态")
|
||||
private String payStatus;
|
||||
|
||||
|
||||
@ApiModelProperty("供应链订单号")
|
||||
@Excel(name = "供应链订单号")
|
||||
private String scmOrderNo;
|
||||
|
||||
@ApiModelProperty("价税合计")
|
||||
@Excel(name = "价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
@Excel(name = "物料信息")
|
||||
private String materialInfo;
|
||||
|
||||
|
||||
@ApiModelProperty("物料数量")
|
||||
@Excel(name = "物料数量")
|
||||
private Integer materialNum;
|
||||
|
||||
@ApiModelProperty("入库数量")
|
||||
@Excel(name = "入库数量")
|
||||
private Integer inStorageNum;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.todo;
|
||||
|
||||
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 采购订单管理对象 oms_purchase_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class PurchaseOrderAddDO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("基本信息")
|
||||
private PurchaseOrderDO purchaseOrderDo;
|
||||
|
||||
@ApiModelProperty("结算信息")
|
||||
private SettlementDO settlementDo;
|
||||
|
||||
@ApiModelProperty("发货信息")
|
||||
private DeliveryInfoDO deliveryInfoDo;
|
||||
|
||||
@ApiModelProperty("收货信息")
|
||||
private ReceiptInfoDO receiptInfoDo;
|
||||
|
||||
@ApiModelProperty("物流信息")
|
||||
private LogisticsDO logisticsDo;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
private List<GoodsDO> goodsDOList;
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.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;
|
||||
|
||||
@Data
|
||||
public class PurchaseOrderAuditDO extends BaseVOEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("采购订单ID集合")
|
||||
private String ids;
|
||||
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
}
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.repository.todo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 采购订单管理对象 oms_purchase_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class PurchaseOrderDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("采购单号")
|
||||
@Excel(name = "采购单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1待审核2已审核3已拒绝4已生成5部分采购6完成采购7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分采购6完成采购7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应商ID")
|
||||
@Excel(name = "供应商ID")
|
||||
private Long supplierId;
|
||||
|
||||
@ApiModelProperty("供应商")
|
||||
@Excel(name = "供应商")
|
||||
private String supplier;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("收货仓库ID")
|
||||
@Excel(name = "收货仓库ID")
|
||||
private Long receivingWarehouseId;
|
||||
|
||||
@ApiModelProperty("收货仓库")
|
||||
@Excel(name = "收货仓库")
|
||||
private String receivingWarehouse;
|
||||
|
||||
@ApiModelProperty("交货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "交货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("来源;0-内部1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("价税合计")
|
||||
@Excel(name = "价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
@Excel(name = "物料信息")
|
||||
private String materialInfo;
|
||||
|
||||
@ApiModelProperty("物料数量")
|
||||
@Excel(name = "物料数量")
|
||||
private Integer materialNum;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+133
@@ -0,0 +1,133 @@
|
||||
package com.mhd.oms.domain.purchaseOrder.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.facade.IPurchaseOrderService;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderDetailsPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.po.PurchaseOrderPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderAuditDO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.todo.PurchaseOrderDO;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 采购订单管理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PurchaseOrderDomainService {
|
||||
|
||||
@Autowired
|
||||
private IPurchaseOrderService purchaseOrderService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询采购订单管理列表
|
||||
*/
|
||||
public List<PurchaseOrderPO> queryList(PurchaseOrderDO purchaseOrderDO) {
|
||||
return purchaseOrderService.queryList(purchaseOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增采购订单管理
|
||||
*/
|
||||
public Boolean insert(PurchaseOrderDO purchaseOrderDO) {
|
||||
|
||||
return purchaseOrderService.insert(purchaseOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增采购订单管理并且返回主键ID
|
||||
*/
|
||||
public Long insertReturnId(PurchaseOrderDO purchaseOrderDO) {
|
||||
|
||||
return purchaseOrderService.insertReturnId(purchaseOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改采购订单管理
|
||||
*/
|
||||
public Boolean update(PurchaseOrderDO purchaseOrderDO) {
|
||||
return purchaseOrderService.update(purchaseOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除采购订单管理
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return purchaseOrderService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取采购订单管理详细信息
|
||||
*/
|
||||
public PurchaseOrderDetailsPO getInfo(Long id)
|
||||
{
|
||||
return purchaseOrderService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public Boolean audit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
return purchaseOrderService.audit(purchaseOrderAuditDO);
|
||||
}
|
||||
|
||||
public Boolean cancelAudit(PurchaseOrderAuditDO purchaseOrderAuditDO) {
|
||||
return purchaseOrderService.cancelAudit(purchaseOrderAuditDO);
|
||||
}
|
||||
|
||||
|
||||
public List<PurchaseOrderPO> getInfo(List<Long> ids) {
|
||||
return purchaseOrderService.getInfo(ids);
|
||||
}
|
||||
|
||||
public Boolean batchUpdate(List<PurchaseOrderDO> purchaseOrderDOS) {
|
||||
return purchaseOrderService.batchUpdate(purchaseOrderDOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID更新状态
|
||||
*/
|
||||
public void updateStateById(Long id, Integer state) {
|
||||
purchaseOrderService.updateStateById(id, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* 采购订单导入-保存采购订单信息
|
||||
* @param purOrderExcelDTO - 导入信息
|
||||
* @return 保存的采购订单
|
||||
*/
|
||||
public PurchaseOrder saveFromImportSalesOrder(PurchaseOrderExcelDTO purOrderExcelDTO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
PurchaseOrderDO purchaseOrderDO = new PurchaseOrderDO();
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, purchaseOrderDO, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
purchaseOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
purchaseOrderDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
purchaseOrderDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
purchaseOrderDO.setCreateTime(new Date());
|
||||
// 成交价税合计:物料价税合计 - 优惠金额
|
||||
if(ObjectUtil.isNotNull(purOrderExcelDTO.getTaxAmount()) && ObjectUtil.isNotNull(purOrderExcelDTO.getDiscountAmount())){
|
||||
BigDecimal reachTotalAmount = purOrderExcelDTO.getTaxAmount().subtract(purOrderExcelDTO.getDiscountAmount());
|
||||
if(BigDecimal.ZERO.compareTo(reachTotalAmount) >= 0){
|
||||
throw new ServiceException("订单成交价税合计<=0,请检查物料价税合计与优惠金额数据!");
|
||||
}
|
||||
purchaseOrderDO.setTotalAmount(reachTotalAmount);
|
||||
}
|
||||
|
||||
return purchaseOrderService.insertReturnEntity(purchaseOrderDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.mhd.oms.domain.receiptInfo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 收货信息对象 oms_receipt_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName(value = "oms_receipt_info")
|
||||
public class ReceiptInfo extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("收货人")
|
||||
@Excel(name = "收货人")
|
||||
private String consignee;
|
||||
|
||||
@ApiModelProperty("收货人联系电话")
|
||||
@Excel(name = "收货人联系电话")
|
||||
private String consigneePhone;
|
||||
|
||||
@ApiModelProperty("收货人所在区域编码")
|
||||
@Excel(name = "收货人所在区域编码")
|
||||
private String consigneeAreaCode;
|
||||
|
||||
@ApiModelProperty("收货人所在区域")
|
||||
@Excel(name = "收货人所在区域")
|
||||
private String consigneeArea;
|
||||
|
||||
@ApiModelProperty("收货人详细地址")
|
||||
@Excel(name = "收货人详细地址")
|
||||
private String consigneeAddress;
|
||||
|
||||
@ApiModelProperty("收货地址经纬度")
|
||||
@Excel(name = "收货地址经纬度")
|
||||
private String raddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计到货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedReceivingTime;
|
||||
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.mhd.oms.domain.receiptInfo.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.receiptInfo.entity.ReceiptInfo;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 收货信息Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface IReceiptInfoService extends IService<ReceiptInfo>
|
||||
{
|
||||
/**
|
||||
* 分页查询收货信息列表
|
||||
*/
|
||||
public List<ReceiptInfoPO> queryList(ReceiptInfoDO receiptInfoDO);
|
||||
|
||||
/**
|
||||
* 新增收货信息
|
||||
*/
|
||||
public Boolean insert(ReceiptInfoDO receiptInfoDO);
|
||||
|
||||
/**
|
||||
* 修改收货信息
|
||||
*/
|
||||
public Boolean update(ReceiptInfoDO receiptInfoDO);
|
||||
|
||||
/**
|
||||
* 批量删除收货信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询收货信息
|
||||
*/
|
||||
public ReceiptInfoPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
Boolean batchInsert(List<ReceiptInfoDO> receiptInfoDOList);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.receiptInfo.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.receiptInfo.entity.ReceiptInfo;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 收货信息Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface ReceiptInfoMapper extends BaseMapper<ReceiptInfo>
|
||||
{
|
||||
/**
|
||||
* 查询收货信息列表
|
||||
*/
|
||||
public List<ReceiptInfoPO> queryList(ReceiptInfoDO receiptInfoDO);
|
||||
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
package com.mhd.oms.domain.receiptInfo.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.receiptInfo.entity.ReceiptInfo;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.facade.IReceiptInfoService;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.mapper.ReceiptInfoMapper;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 收货信息Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class ReceiptInfoImpl extends ServiceImpl<ReceiptInfoMapper, ReceiptInfo> implements IReceiptInfoService {
|
||||
@Autowired
|
||||
private ReceiptInfoMapper receiptInfoMapper;
|
||||
|
||||
/**
|
||||
* 查询收货信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<ReceiptInfoPO> queryList(ReceiptInfoDO receiptInfoDO)
|
||||
{
|
||||
return receiptInfoMapper.queryList(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增收货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(ReceiptInfoDO receiptInfoDO) {
|
||||
ReceiptInfo receiptInfo = new ReceiptInfo();
|
||||
BeanUtils.copyProperties(receiptInfoDO,receiptInfo);
|
||||
return this.save(receiptInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改收货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(ReceiptInfoDO receiptInfoDO) {
|
||||
ReceiptInfo receiptInfo = new ReceiptInfo();
|
||||
BeanUtils.copyProperties(receiptInfoDO,receiptInfo);
|
||||
return this.updateById(receiptInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除收货信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<ReceiptInfo> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
ReceiptInfo receiptInfo = new ReceiptInfo();
|
||||
receiptInfo.setId(id);
|
||||
receiptInfo.setDelFlag(2);
|
||||
list.add(receiptInfo);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改收货信息
|
||||
*/
|
||||
@Override
|
||||
public ReceiptInfoPO getInfo(Long id) {
|
||||
ReceiptInfo receiptInfo = this.getById(id);
|
||||
ReceiptInfoPO receiptInfoPO = new ReceiptInfoPO();
|
||||
BeanUtils.copyProperties(receiptInfo,receiptInfoPO);
|
||||
return receiptInfoPO;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchInsert(List<ReceiptInfoDO> receiptInfoDOList) {
|
||||
List<ReceiptInfo> receiptInfoList = receiptInfoDOList.stream().map(receiptInfoDO -> {
|
||||
ReceiptInfo receiptInfo = new ReceiptInfo();
|
||||
BeanUtils.copyProperties(receiptInfoDO, receiptInfo);
|
||||
return receiptInfo;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(receiptInfoList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.mhd.oms.domain.receiptInfo.repository.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 收货信息对象 oms_receipt_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "收货信息对象", description = "收货信息响应对象")
|
||||
public class ReceiptInfoPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("收货人")
|
||||
@Excel(name = "收货人")
|
||||
private String consignee;
|
||||
|
||||
@ApiModelProperty("收货人联系电话")
|
||||
@Excel(name = "收货人联系电话")
|
||||
private String consigneePhone;
|
||||
|
||||
@ApiModelProperty("收货人所在区域编码")
|
||||
@Excel(name = "收货人所在区域编码")
|
||||
private String consigneeAreaCode;
|
||||
|
||||
@ApiModelProperty("收货人所在区域")
|
||||
@Excel(name = "收货人所在区域")
|
||||
private String consigneeArea;
|
||||
|
||||
@ApiModelProperty("收货人详细地址")
|
||||
@Excel(name = "收货人详细地址")
|
||||
private String consigneeAddress;
|
||||
|
||||
@ApiModelProperty("收货地址经纬度")
|
||||
@Excel(name = "收货地址经纬度")
|
||||
private String raddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计到货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedReceivingTime;
|
||||
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
package com.mhd.oms.domain.receiptInfo.repository.todo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 收货信息对象 oms_receipt_info
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class ReceiptInfoDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("收货人")
|
||||
@Excel(name = "收货人")
|
||||
private String consignee;
|
||||
|
||||
@ApiModelProperty("收货人联系电话")
|
||||
@Excel(name = "收货人联系电话")
|
||||
private String consigneePhone;
|
||||
|
||||
@ApiModelProperty("收货人所在区域编码")
|
||||
@Excel(name = "收货人所在区域编码")
|
||||
private String consigneeAreaCode;
|
||||
|
||||
@ApiModelProperty("收货人所在区域")
|
||||
@Excel(name = "收货人所在区域")
|
||||
private String consigneeArea;
|
||||
|
||||
@ApiModelProperty("收货人详细地址")
|
||||
@Excel(name = "收货人详细地址")
|
||||
private String consigneeAddress;
|
||||
|
||||
@ApiModelProperty("收货地址经纬度")
|
||||
@Excel(name = "收货地址经纬度")
|
||||
private String raddressLatLon;
|
||||
|
||||
@ApiModelProperty("预计到货时间")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
private Date estimatedReceivingTime;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
package com.mhd.oms.domain.receiptInfo.service;
|
||||
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.facade.IReceiptInfoService;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 收货信息
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ReceiptInfoDomainService {
|
||||
|
||||
@Autowired
|
||||
private IReceiptInfoService receiptInfoService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询收货信息列表
|
||||
*/
|
||||
public List<ReceiptInfoPO> queryList(ReceiptInfoDO receiptInfoDO) {
|
||||
return receiptInfoService.queryList(receiptInfoDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增收货信息
|
||||
*/
|
||||
public Boolean insert(ReceiptInfoDO receiptInfoDO) {
|
||||
|
||||
return receiptInfoService.insert(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改收货信息
|
||||
*/
|
||||
public Boolean update(ReceiptInfoDO receiptInfoDO) {
|
||||
return receiptInfoService.update(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除收货信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return receiptInfoService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取收货信息详细信息
|
||||
*/
|
||||
public ReceiptInfoPO getInfo(Long id)
|
||||
{
|
||||
return receiptInfoService.getInfo(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
public Boolean batchInsert(List<ReceiptInfoDO> receiptInfoDOList) {
|
||||
return receiptInfoService.batchInsert(receiptInfoDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入销售订单 - 为传入的收货列表添加一条收货信息
|
||||
*
|
||||
* @param receiptInfoDOList - 添加数据的列表
|
||||
* @param salesOrderExcelDTO -导入的数据
|
||||
* @param salesOrder - 导入数据中的销售订单信息
|
||||
*/
|
||||
public void listAddFromImportSalesOrder(List<ReceiptInfoDO> receiptInfoDOList, SalesOrderExcelDTO salesOrderExcelDTO, SalesOrder salesOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
ReceiptInfoDO receiptInfoDO = new ReceiptInfoDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, receiptInfoDO, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
receiptInfoDO.setOrderId(salesOrder.getId());
|
||||
receiptInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
receiptInfoDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
receiptInfoDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
receiptInfoDO.setCreateTime(new Date());
|
||||
receiptInfoDOList.add(receiptInfoDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入采购订单 - 为传入的收货列表添加一条收货信息
|
||||
*
|
||||
* @param receiptInfoDOList - 添加数据的列表
|
||||
* @param purOrderExcelDTO -导入的数据
|
||||
* @param purOrder - 导入的采购订单信息
|
||||
*/
|
||||
public void listAddFromImportPurOrder(List<ReceiptInfoDO> receiptInfoDOList, PurchaseOrderExcelDTO purOrderExcelDTO, PurchaseOrder purOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
ReceiptInfoDO receiptInfoDO = new ReceiptInfoDO();
|
||||
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, receiptInfoDO, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
receiptInfoDO.setOrderId(purOrder.getId());
|
||||
receiptInfoDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
receiptInfoDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
receiptInfoDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
receiptInfoDO.setCreateTime(new Date());
|
||||
receiptInfoDOList.add(receiptInfoDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
package com.mhd.oms.domain.salesOrder.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_sales_order")
|
||||
public class SalesOrder extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("销售单号")
|
||||
@Excel(name = "销售单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
@Excel(name = "供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
private String scoNo;
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
@Excel(name = "客户ID")
|
||||
private Long customerId;
|
||||
|
||||
@ApiModelProperty("客户姓名")
|
||||
@Excel(name = "客户姓名")
|
||||
private String customer;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("出库数量")
|
||||
@Excel(name = "出库数量")
|
||||
private Long inStorageNum;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("来源;0-内部1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("发货仓库ID")
|
||||
@Excel(name = "发货仓库ID")
|
||||
private Long deliveryWarehouseId;
|
||||
|
||||
@ApiModelProperty("发货仓库")
|
||||
@Excel(name = "发货仓库")
|
||||
private String deliveryWarehouse;
|
||||
|
||||
@ApiModelProperty("发货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("校验库存是否充足;0-不校验1-校验")
|
||||
@Excel(name = "校验库存是否充足;0-不校验1-校验")
|
||||
private Long checkInventory;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("成交价税合计")
|
||||
@Excel(name = "成交价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderDetailsPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderAuditDO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 销售订单Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
public interface ISalesOrderService extends IService<SalesOrder>
|
||||
{
|
||||
/**
|
||||
* 分页查询销售订单列表
|
||||
*/
|
||||
public List<SalesOrderPO> queryList(SalesOrderDO salesOrderDO);
|
||||
|
||||
/**
|
||||
* 新增销售订单
|
||||
*/
|
||||
public Boolean insert(SalesOrderDO salesOrderDO);
|
||||
/** 新增并返回实体 */
|
||||
public SalesOrder insertReturnEntity(SalesOrderDO salesOrderDO);
|
||||
|
||||
/**
|
||||
* 修改销售订单
|
||||
*/
|
||||
public Boolean update(SalesOrderDO salesOrderDO);
|
||||
|
||||
/**
|
||||
* 批量删除销售订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询销售订单
|
||||
*/
|
||||
public SalesOrderPO getInfo(Long id);
|
||||
|
||||
List<SalesOrderPO> getInfos(List<Long> ids);
|
||||
|
||||
Boolean batchUpdate(List<SalesOrderDO> salesOrderDOS);
|
||||
|
||||
Boolean audit(SalesOrderAuditDO salesOrderAuditDO);
|
||||
|
||||
Boolean cancelAudit(SalesOrderAuditDO salesOrderAuditDO);
|
||||
|
||||
Long insertReturnId(SalesOrderDO salesOrderDO);
|
||||
|
||||
void updateStateById(Long id, Integer state);
|
||||
|
||||
SalesOrderDetailsPO getetails(Long id);
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderDO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 销售订单Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
public interface SalesOrderMapper extends BaseMapper<SalesOrder>
|
||||
{
|
||||
/**
|
||||
* 查询销售订单列表
|
||||
*/
|
||||
public List<SalesOrderPO> queryList(SalesOrderDO salesOrderDO);
|
||||
|
||||
List<SalesOrderPO> getInfosById(@Param("ids") List<Long> ids);
|
||||
@Select("select order_no, shipper, order_type, customer_orders, tackl_state,job_task_type,customer_id,shipper_id, order_type_id from oms_sales_order where id = #{orderId}")
|
||||
OrderInfoPO selectOrderInfoByOrderId(Long orderId);
|
||||
}
|
||||
+279
@@ -0,0 +1,279 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.persistence;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.deliveryInfo.entity.DeliveryInfo;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.mapper.DeliveryInfoMapper;
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.goods.entity.Goods;
|
||||
import com.mhd.oms.domain.goods.repository.mapper.GoodsMapper;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.logistics.entity.Logistics;
|
||||
import com.mhd.oms.domain.logistics.repository.mapper.LogisticsMapper;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.receiptInfo.entity.ReceiptInfo;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.mapper.ReceiptInfoMapper;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.salesOrder.repository.facade.ISalesOrderService;
|
||||
import com.mhd.oms.domain.salesOrder.repository.mapper.SalesOrderMapper;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderDetailsPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderAuditDO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderDO;
|
||||
import com.mhd.oms.domain.settlement.entity.Settlement;
|
||||
import com.mhd.oms.domain.settlement.repository.mapper.SettlementMapper;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 销售订单Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
@Service
|
||||
public class SalesOrderImpl extends ServiceImpl<SalesOrderMapper, SalesOrder> implements ISalesOrderService {
|
||||
@Autowired
|
||||
private SalesOrderMapper salesOrderMapper;
|
||||
|
||||
@Resource
|
||||
private SettlementMapper settlementMapper;
|
||||
|
||||
@Resource
|
||||
private DeliveryInfoMapper deliveryInfoMapper;
|
||||
|
||||
@Resource
|
||||
private ReceiptInfoMapper receiptInfoMapper;
|
||||
|
||||
@Resource
|
||||
private LogisticsMapper logisticsMapper;
|
||||
|
||||
@Resource
|
||||
private GoodsMapper goodsMapper;
|
||||
/**
|
||||
* 查询销售订单列表
|
||||
*/
|
||||
@Override
|
||||
public List<SalesOrderPO> queryList(SalesOrderDO salesOrderDO)
|
||||
{
|
||||
return salesOrderMapper.queryList(salesOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增销售订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(SalesOrderDO salesOrderDO) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
BeanUtils.copyProperties(salesOrderDO,salesOrder);
|
||||
return this.save(salesOrder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalesOrder insertReturnEntity(SalesOrderDO salesOrderDO) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
BeanUtils.copyProperties(salesOrderDO,salesOrder);
|
||||
this.save(salesOrder);
|
||||
|
||||
return salesOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改销售订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(SalesOrderDO salesOrderDO) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
BeanUtils.copyProperties(salesOrderDO,salesOrder);
|
||||
return this.updateById(salesOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除销售订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<SalesOrder> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
salesOrder.setId(id);
|
||||
salesOrder.setDelFlag(2);
|
||||
list.add(salesOrder);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改销售订单
|
||||
*/
|
||||
@Override
|
||||
public SalesOrderPO getInfo(Long id) {
|
||||
SalesOrder salesOrder = this.getById(id);
|
||||
SalesOrderPO salesOrderPO = new SalesOrderPO();
|
||||
BeanUtils.copyProperties(salesOrder,salesOrderPO);
|
||||
return salesOrderPO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalesOrderPO> getInfos(List<Long> ids) {
|
||||
return salesOrderMapper.getInfosById(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchUpdate(List<SalesOrderDO> salesOrderDOS) {
|
||||
List<SalesOrder> salesOrders = new ArrayList<>();
|
||||
for (SalesOrderDO salesOrderDO : salesOrderDOS) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
BeanUtils.copyProperties(salesOrderDO,salesOrder);
|
||||
salesOrders.add(salesOrder);
|
||||
}
|
||||
return this.updateBatchById(salesOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean audit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
List<SalesOrder> salesOrders = new ArrayList<>();
|
||||
List<Long> ids = Convert.toList(Long.class, salesOrderAuditDO.getIds());
|
||||
for (Long id : ids) {
|
||||
SalesOrder salesOrder = this.getById(id);
|
||||
if (ObjectUtil.isNull(salesOrder)) {
|
||||
throw new ServiceException("未查询到销售订单信息");
|
||||
}
|
||||
if (salesOrder.getOrderState() != 1) {
|
||||
throw new ServiceException(String.format("订单号【%s】订单状态不符合预期,仅在待审核状态下才允许审核", salesOrder.getOrderNo()));
|
||||
}
|
||||
salesOrder.setAuditBy(salesOrderAuditDO.getAuditBy());
|
||||
salesOrder.setAuditTime(new Date());
|
||||
salesOrder.setAuditState(salesOrderAuditDO.getAuditState());
|
||||
salesOrder.setAuditResult(salesOrderAuditDO.getAuditResult());
|
||||
salesOrder.setOrderState(salesOrderAuditDO.getAuditState());
|
||||
salesOrder.setUpdateBy(salesOrderAuditDO.getUpdateBy());
|
||||
salesOrder.setUpdateTime(salesOrderAuditDO.getUpdateTime());
|
||||
salesOrder.setUpdateByName(salesOrderAuditDO.getUpdateByName());
|
||||
salesOrders.add(salesOrder);
|
||||
}
|
||||
return this.updateBatchById(salesOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean cancelAudit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
List<SalesOrder> salesOrders = new ArrayList<>();
|
||||
List<Long> ids = Convert.toList(Long.class, salesOrderAuditDO.getIds());
|
||||
for (Long id : ids) {
|
||||
SalesOrder salesOrder = this.getById(id);
|
||||
if (ObjectUtil.isNull(salesOrder)) {
|
||||
throw new ServiceException("未查询到销售订单信息");
|
||||
}
|
||||
if (ArrayUtil.contains(OrderConstant.SO_STATUS_GROUP_UNABLE_CANCEL_AUDIT, salesOrder.getOrderState())) {
|
||||
throw new ServiceException(String.format("订单号【%s】订单状态不符合预期,仅在待审核状态下才允许审核", salesOrder.getOrderNo()));
|
||||
}
|
||||
salesOrder.setAuditBy(salesOrderAuditDO.getAuditBy());
|
||||
salesOrder.setAuditTime(new Date());
|
||||
salesOrder.setAuditState(OrderConstant.PUR_STATUS_1);
|
||||
salesOrder.setAuditResult("");
|
||||
salesOrder.setOrderState(1);
|
||||
salesOrder.setUpdateBy(salesOrderAuditDO.getUpdateBy());
|
||||
salesOrder.setUpdateTime(salesOrderAuditDO.getUpdateTime());
|
||||
salesOrder.setUpdateByName(salesOrderAuditDO.getUpdateByName());
|
||||
salesOrders.add(salesOrder);
|
||||
}
|
||||
return this.updateBatchById(salesOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long insertReturnId(SalesOrderDO salesOrderDO) {
|
||||
SalesOrder salesOrder = new SalesOrder();
|
||||
BeanUtils.copyProperties(salesOrderDO,salesOrder);
|
||||
this.save(salesOrder);
|
||||
return salesOrder.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStateById(Long id, Integer state) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
salesOrderMapper.update(new SalesOrder(), new LambdaUpdateWrapper<SalesOrder>()
|
||||
.set(SalesOrder::getOrderState, state)
|
||||
.set(SalesOrder::getUpdateBy, loginUser.getUserid())
|
||||
.set(SalesOrder::getUpdateByName, loginUser.getUsername())
|
||||
.set(SalesOrder::getUpdateTime, new Date())
|
||||
.eq(SalesOrder::getId, id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalesOrderDetailsPO getetails(Long id) {
|
||||
SalesOrderDetailsPO salesOrderDetailsPO = new SalesOrderDetailsPO();
|
||||
SalesOrder salesOrder = this.getById(id);
|
||||
SalesOrderPO salesOrderPO = new SalesOrderPO();
|
||||
if (ObjectUtil.isNull(salesOrder)) {
|
||||
throw new ServiceException("未查询到对应的销售单信息");
|
||||
}
|
||||
BeanUtils.copyProperties(salesOrder,salesOrderPO);
|
||||
salesOrderDetailsPO.setSalesOrderPO(salesOrderPO);
|
||||
|
||||
SettlementPO settlementPO = new SettlementPO();
|
||||
Settlement settlement = settlementMapper.selectOne(new LambdaQueryWrapper<Settlement>()
|
||||
.eq(Settlement::getOrderId, id).eq(Settlement::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(settlement)) {//结算单对象可以为空,如果为空则认为结算单没有数据
|
||||
settlement = new Settlement();
|
||||
}
|
||||
BeanUtils.copyProperties(settlement,settlementPO);
|
||||
salesOrderDetailsPO.setSettlementPO(settlementPO);
|
||||
|
||||
DeliveryInfoPO deliveryInfoPO = new DeliveryInfoPO();
|
||||
DeliveryInfo deliveryInfo = deliveryInfoMapper.selectOne(new LambdaQueryWrapper<DeliveryInfo>()
|
||||
.eq(DeliveryInfo::getOrderId, id).eq(DeliveryInfo::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(deliveryInfo)) {
|
||||
deliveryInfo = new DeliveryInfo();
|
||||
}
|
||||
BeanUtils.copyProperties(deliveryInfo, deliveryInfoPO);
|
||||
salesOrderDetailsPO.setDeliveryInfoPO(deliveryInfoPO);
|
||||
|
||||
|
||||
ReceiptInfoPO receiptInfoPO = new ReceiptInfoPO();
|
||||
ReceiptInfo receiptInfo = receiptInfoMapper.selectOne(new LambdaQueryWrapper<ReceiptInfo>()
|
||||
.eq(ReceiptInfo::getOrderId, id).eq(ReceiptInfo::getDelFlag, 1));
|
||||
if (ObjectUtil.isNull(receiptInfo)) {
|
||||
receiptInfo = new ReceiptInfo();
|
||||
}
|
||||
BeanUtils.copyProperties(receiptInfo, receiptInfoPO);
|
||||
salesOrderDetailsPO.setReceiptInfoPO(receiptInfoPO);
|
||||
|
||||
LogisticsPO logisticsPO = new LogisticsPO();
|
||||
Logistics logistics = logisticsMapper.selectOne(new LambdaQueryWrapper<Logistics>()
|
||||
.eq(Logistics::getOrderId, id).eq(Logistics::getDelFlag, 1));
|
||||
|
||||
if (ObjectUtil.isNull(logistics)) {
|
||||
logistics = new Logistics();
|
||||
}
|
||||
BeanUtils.copyProperties(logistics, logisticsPO);
|
||||
salesOrderDetailsPO.setLogisticsPO(logisticsPO);
|
||||
|
||||
List<Goods> goodsList = goodsMapper.selectList(new LambdaQueryWrapper<Goods>()
|
||||
.eq(Goods::getOrderId, id).eq(Goods::getDelFlag, 1));
|
||||
List<GoodsPO> goodsPOList = goodsList.stream().map(goods -> {
|
||||
GoodsPO goodsPO = new GoodsPO();
|
||||
BeanUtils.copyProperties(goods, goodsPO);
|
||||
return goodsPO;
|
||||
}).collect(Collectors.toList());
|
||||
salesOrderDetailsPO.setGoodsPOList(goodsPOList);
|
||||
|
||||
return salesOrderDetailsPO;
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.po;
|
||||
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.po.DeliveryInfoPO;
|
||||
import com.mhd.oms.domain.goods.repository.po.GoodsPO;
|
||||
import com.mhd.oms.domain.logistics.repository.po.LogisticsPO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.po.ReceiptInfoPO;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "销售订单详情对象", description = "销售订单详情对象")
|
||||
public class SalesOrderDetailsPO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("基本信息")
|
||||
private SalesOrderPO salesOrderPO;
|
||||
|
||||
@ApiModelProperty("结算信息")
|
||||
private SettlementPO settlementPO;
|
||||
|
||||
@ApiModelProperty("发货信息")
|
||||
private DeliveryInfoPO deliveryInfoPO;
|
||||
|
||||
@ApiModelProperty("收货信息")
|
||||
private ReceiptInfoPO receiptInfoPO;
|
||||
|
||||
@ApiModelProperty("物流信息")
|
||||
private LogisticsPO logisticsPO;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
private List<GoodsPO> goodsPOList;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "销售订单对象", description = "销售订单响应对象")
|
||||
public class SalesOrderPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private String auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;0待审核1通过2拒绝")
|
||||
@Excel(name = "审核状态;0待审核1通过2拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("销售单号")
|
||||
@Excel(name = "销售单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
@Excel(name = "供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
private String scoNo;
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
@Excel(name = "客户ID")
|
||||
private Long customerId;
|
||||
|
||||
@ApiModelProperty("客户姓名")
|
||||
@Excel(name = "客户姓名")
|
||||
private String customer;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("出库数量")
|
||||
@Excel(name = "出库数量")
|
||||
private Long inStorageNum;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("来源;0-内部1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("发货仓库ID")
|
||||
@Excel(name = "发货仓库ID")
|
||||
private Long deliveryWarehouseId;
|
||||
|
||||
@ApiModelProperty("发货仓库")
|
||||
@Excel(name = "发货仓库")
|
||||
private String deliveryWarehouse;
|
||||
|
||||
@ApiModelProperty("发货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("校验库存是否充足;0-不校验1-校验")
|
||||
@Excel(name = "校验库存是否充足;0-不校验1-校验")
|
||||
private Long checkInventory;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("成交价税合计")
|
||||
@Excel(name = "成交价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.todo;
|
||||
|
||||
import com.mhd.oms.domain.deliveryInfo.repository.todo.DeliveryInfoDO;
|
||||
import com.mhd.oms.domain.goods.repository.todo.GoodsDO;
|
||||
import com.mhd.oms.domain.logistics.repository.todo.LogisticsDO;
|
||||
import com.mhd.oms.domain.receiptInfo.repository.todo.ReceiptInfoDO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class SalesOrderAddDO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("基本信息")
|
||||
private SalesOrderDO salesOrderDO;
|
||||
|
||||
@ApiModelProperty("结算信息")
|
||||
private SettlementDO settlementDO;
|
||||
|
||||
@ApiModelProperty("发货信息")
|
||||
private DeliveryInfoDO deliveryInfoDO;
|
||||
|
||||
@ApiModelProperty("收货信息")
|
||||
private ReceiptInfoDO receiptInfoDO;
|
||||
|
||||
@ApiModelProperty("物流信息")
|
||||
private LogisticsDO logisticsDO;
|
||||
|
||||
@ApiModelProperty("物料信息")
|
||||
private List<GoodsDO> goodsDOS;
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.mhd.oms.domain.salesOrder.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;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class SalesOrderAuditDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("采购订单ID集合")
|
||||
private String ids;
|
||||
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private Long auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;1待审核2通过3拒绝")
|
||||
@Excel(name = "审核状态;1待审核2通过3拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
}
|
||||
+205
@@ -0,0 +1,205 @@
|
||||
package com.mhd.oms.domain.salesOrder.repository.todo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 销售订单对象 oms_sales_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class SalesOrderDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("审核人")
|
||||
@Excel(name = "审核人")
|
||||
private String auditBy;
|
||||
|
||||
@ApiModelProperty("审核时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date auditTime;
|
||||
|
||||
@ApiModelProperty("审核状态;0待审核1通过2拒绝")
|
||||
@Excel(name = "审核状态;0待审核1通过2拒绝")
|
||||
private Integer auditState;
|
||||
|
||||
@ApiModelProperty("审核结果")
|
||||
@Excel(name = "审核结果")
|
||||
private String auditResult;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("销售单号")
|
||||
@Excel(name = "销售单号")
|
||||
private String orderNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1待审核2已审核3已拒绝4已生成5部分销售6完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
@Excel(name = "供应链订单号;生产供应链订单回填此字段,取消供应链置空此字段")
|
||||
private String scoNo;
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
@Excel(name = "客户ID")
|
||||
private Long customerId;
|
||||
|
||||
@ApiModelProperty("客户姓名")
|
||||
@Excel(name = "客户姓名")
|
||||
private String customer;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
@Excel(name = "合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty("含税金额")
|
||||
@Excel(name = "含税金额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
@ApiModelProperty("出库数量")
|
||||
@Excel(name = "出库数量")
|
||||
private Long inStorageNum;
|
||||
|
||||
@ApiModelProperty("订单类型ID")
|
||||
@Excel(name = "订单类型ID")
|
||||
private Long orderTypeId;
|
||||
|
||||
@ApiModelProperty("订单类型")
|
||||
@Excel(name = "订单类型")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
@Excel(name = "作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
|
||||
@ApiModelProperty("作业任务类型")
|
||||
@Excel(name = "作业任务类型")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
@Excel(name = "下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
@Excel(name = "货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
@Excel(name = "货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("合同号")
|
||||
@Excel(name = "合同号")
|
||||
private String contractNo;
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@Excel(name = "项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("项目")
|
||||
@Excel(name = "项目")
|
||||
private String project;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
@Excel(name = "拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
|
||||
@ApiModelProperty("拦截时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "拦截时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date tacklTime;
|
||||
|
||||
@ApiModelProperty("来源;0-内部1-外部")
|
||||
@Excel(name = "来源;0-内部1-外部")
|
||||
private Integer source;
|
||||
|
||||
@ApiModelProperty("组织ID")
|
||||
@Excel(name = "组织ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("组织")
|
||||
@Excel(name = "组织")
|
||||
private String org;
|
||||
|
||||
@ApiModelProperty("订单时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "订单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date orderTime;
|
||||
|
||||
@ApiModelProperty("发货仓库ID")
|
||||
@Excel(name = "发货仓库ID")
|
||||
private Long deliveryWarehouseId;
|
||||
|
||||
@ApiModelProperty("发货仓库")
|
||||
@Excel(name = "发货仓库")
|
||||
private String deliveryWarehouse;
|
||||
|
||||
@ApiModelProperty("发货日期")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
@Excel(name = "发货日期", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date deliveryDate;
|
||||
|
||||
@ApiModelProperty("客户订单号")
|
||||
@Excel(name = "客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("校验库存是否充足;0-不校验1-校验")
|
||||
@Excel(name = "校验库存是否充足;0-不校验1-校验")
|
||||
private Long checkInventory;
|
||||
|
||||
@ApiModelProperty("优惠率")
|
||||
@Excel(name = "优惠率")
|
||||
private BigDecimal rateConcession;
|
||||
|
||||
@ApiModelProperty("优惠金额")
|
||||
@Excel(name = "优惠金额")
|
||||
private BigDecimal discountAmount;
|
||||
|
||||
@ApiModelProperty("成交价税合计")
|
||||
@Excel(name = "成交价税合计")
|
||||
private BigDecimal totalPriceTax;
|
||||
|
||||
@ApiModelProperty("附件名称")
|
||||
@Excel(name = "附件名称")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
package com.mhd.oms.domain.salesOrder.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.salesOrder.repository.facade.ISalesOrderService;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderDetailsPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.po.SalesOrderPO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderAuditDO;
|
||||
import com.mhd.oms.domain.salesOrder.repository.todo.SalesOrderDO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 销售订单
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-06-08
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SalesOrderDomainService {
|
||||
|
||||
@Autowired
|
||||
private ISalesOrderService salesOrderService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询销售订单列表
|
||||
*/
|
||||
public List<SalesOrderPO> queryList(SalesOrderDO salesOrderDO) {
|
||||
return salesOrderService.queryList(salesOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增销售订单
|
||||
*/
|
||||
public Boolean insert(SalesOrderDO salesOrderDO) {
|
||||
|
||||
return salesOrderService.insert(salesOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改销售订单
|
||||
*/
|
||||
public Boolean update(SalesOrderDO salesOrderDO) {
|
||||
return salesOrderService.update(salesOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除销售订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return salesOrderService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取销售订单详细信息
|
||||
*/
|
||||
public SalesOrderPO getInfo(Long id)
|
||||
{
|
||||
return salesOrderService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
public List<SalesOrderPO> getInfos(List<Long> ids) {
|
||||
return salesOrderService.getInfos(ids);
|
||||
}
|
||||
|
||||
public Boolean batchUpdate(List<SalesOrderDO> salesOrderDOS) {
|
||||
return salesOrderService.batchUpdate(salesOrderDOS);
|
||||
}
|
||||
|
||||
public Boolean audit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
return salesOrderService.audit(salesOrderAuditDO);
|
||||
}
|
||||
|
||||
public Boolean cancelAudit(SalesOrderAuditDO salesOrderAuditDO) {
|
||||
return salesOrderService.cancelAudit(salesOrderAuditDO);
|
||||
}
|
||||
|
||||
public Long insertReturnId(SalesOrderDO salesOrderDO) {
|
||||
return salesOrderService.insertReturnId(salesOrderDO);
|
||||
}
|
||||
|
||||
public void updateStateById(Long id, Integer state) {
|
||||
salesOrderService.updateStateById(id, state);
|
||||
}
|
||||
|
||||
public SalesOrderDetailsPO getetails(Long id) {
|
||||
return salesOrderService.getetails(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 销售订单导入-保存销售订单信息
|
||||
* @param salesOrderExcelDTO - 导入信息
|
||||
* @return 保存的销售订单信息
|
||||
*/
|
||||
public SalesOrder saveFromImportSalesOrder(SalesOrderExcelDTO salesOrderExcelDTO) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
SalesOrderDO salesOrderDO = new SalesOrderDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, salesOrderDO, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
salesOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
salesOrderDO.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
salesOrderDO.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
salesOrderDO.setCreateTime(new Date());
|
||||
// 成交价税合计:物料价税合计 - 优惠金额
|
||||
if(ObjectUtil.isNotNull(salesOrderExcelDTO.getTaxAmount()) && ObjectUtil.isNotNull(salesOrderExcelDTO.getDiscountAmount())){
|
||||
BigDecimal reachTotalAmount = salesOrderExcelDTO.getTaxAmount().subtract(salesOrderExcelDTO.getDiscountAmount());
|
||||
if(BigDecimal.ZERO.compareTo(reachTotalAmount) >= 0){
|
||||
throw new ServiceException("订单成交价税合计<=0,请检查物料价税合计与优惠金额数据!");
|
||||
}
|
||||
salesOrderDO.setTotalAmount(reachTotalAmount);
|
||||
}
|
||||
|
||||
return salesOrderService.insertReturnEntity(salesOrderDO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.mhd.oms.domain.scmOrder.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mhd.common.core.annotation.Excel;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* 供应链订单对象 oms_scm_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName("oms_scm_order")
|
||||
public class ScmOrder extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("供应链订单来源;1采购订单2销售订单3运输订单")
|
||||
@Excel(name = "供应链订单来源;1采购订单2销售订单3运输订单")
|
||||
private Integer scmSource;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("供应链订单号")
|
||||
@Excel(name = "供应链订单号")
|
||||
private String scmNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1未审核2已审核3部分生成4全部生成5部分完成6已完成7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1未审核2已审核3部分生成4全部生成5部分完成6已完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("任务数量")
|
||||
@Excel(name = "任务数量")
|
||||
private Long taskNum;
|
||||
|
||||
@ApiModelProperty("有效数量")
|
||||
@Excel(name = "有效数量")
|
||||
private Long activeTaskNum;
|
||||
|
||||
@ApiModelProperty("完成数量")
|
||||
@Excel(name = "完成数量")
|
||||
private Long finishTaskNum;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package com.mhd.oms.domain.scmOrder.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.scmOrder.entity.ScmOrder;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 供应链订单Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
public interface IScmOrderService extends IService<ScmOrder>
|
||||
{
|
||||
/**
|
||||
* 分页查询供应链订单列表
|
||||
*/
|
||||
public List<ScmOrderPO> queryList(ScmOrderDO scmOrderDO);
|
||||
|
||||
/**
|
||||
* 新增供应链订单
|
||||
*/
|
||||
public Boolean insert(ScmOrderDO scmOrderDO);
|
||||
|
||||
/**
|
||||
* 修改供应链订单
|
||||
*/
|
||||
public Boolean update(ScmOrderDO scmOrderDO);
|
||||
|
||||
/**
|
||||
* 批量删除供应链订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询供应链订单
|
||||
*/
|
||||
public ScmOrderPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 审核|取消审核【批量】
|
||||
*
|
||||
* @param exeState - 操作状态:1-审核、2-取消审核
|
||||
* @param idList - 供应链订单ID列表
|
||||
* @return 审核结果
|
||||
*/
|
||||
Boolean batchAuditOrCancelAudit(Integer exeState, List<String> idList);
|
||||
|
||||
/**
|
||||
* 根据orderID拦截订单
|
||||
*/
|
||||
void interceptByOrderId(Long orderId);
|
||||
|
||||
Boolean batchInsert(List<ScmOrderDO> scmOrderDOS);
|
||||
|
||||
List<ScmOrderPO> getInfosByOrderId(List<Long> ids);
|
||||
|
||||
Boolean batchUpdate(List<ScmOrderDO> scmOrderDOS);
|
||||
|
||||
/**
|
||||
* 获取传入ID列表的全部物料信息列表,按传入的ID分组
|
||||
* @param idList - 供应链订单ID列表
|
||||
* @return k-供应链id,v-对应物料列表
|
||||
*/
|
||||
Map<Long, List<ScmOrderPO>> getGoodsAndTaskInfoList(List<Long> idList);
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
package com.mhd.oms.domain.scmOrder.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.common.core.domain.po.UserPo;
|
||||
import com.mhd.oms.domain.scmOrder.entity.ScmOrder;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 供应链订单Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
public interface ScmOrderMapper extends BaseMapper<ScmOrder>
|
||||
{
|
||||
/**
|
||||
* 查询供应链订单列表
|
||||
*/
|
||||
public List<ScmOrderPO> queryList(ScmOrderDO scmOrderDO);
|
||||
|
||||
|
||||
/**
|
||||
* 批量修改供应链订单状态
|
||||
*
|
||||
* @param idList - 供应链订单ID列表
|
||||
* @param orderState - 订单状态
|
||||
* @param userPo - 审核人信息(当前登录人)
|
||||
*/
|
||||
Boolean batchUpdateOrderState(@Param("idList") List<String> idList, @Param("orderState") Integer orderState, @Param("userPo") UserPo userPo);
|
||||
|
||||
/**
|
||||
* 获取传入ID列表中对应的全部物料信息列表
|
||||
* @param idList - 供应链订单ID列表
|
||||
* @return - 物料信息列表
|
||||
*/
|
||||
List<ScmOrderPO> getGoodsAndTaskInfoList(@Param("idList") List<Long> idList);
|
||||
|
||||
@Select("select scm_no from oms_scm_order where order_id = #{orderId} and del_flag = 1 and order_state not in (7,8)")
|
||||
String selectScmOrderNoByOrderId(@Param("orderId") Long orderId);
|
||||
}
|
||||
+220
@@ -0,0 +1,220 @@
|
||||
package com.mhd.oms.domain.scmOrder.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.mapper.PurchaseOrderMapper;
|
||||
import com.mhd.oms.domain.salesOrder.repository.mapper.SalesOrderMapper;
|
||||
import com.mhd.oms.domain.scmOrder.entity.ScmOrder;
|
||||
import com.mhd.oms.domain.scmOrder.repository.facade.IScmOrderService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.mapper.ScmOrderMapper;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 供应链订单Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
@Service
|
||||
public class ScmOrderImpl extends ServiceImpl<ScmOrderMapper, ScmOrder> implements IScmOrderService{
|
||||
@Autowired
|
||||
private ScmOrderMapper scmOrderMapper;
|
||||
|
||||
@Resource
|
||||
private PurchaseOrderMapper purchaseOrderMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private SalesOrderMapper salesOrderMapper;
|
||||
|
||||
/**
|
||||
* 查询供应链订单列表
|
||||
*/
|
||||
@Override
|
||||
public List<ScmOrderPO> queryList(ScmOrderDO scmOrderDO)
|
||||
{
|
||||
List<ScmOrderPO> scmOrderPOS = scmOrderMapper.queryList(scmOrderDO);
|
||||
OrderInfoPO orderInfoPO = new OrderInfoPO();
|
||||
for (ScmOrderPO scmOrderPO : scmOrderPOS) {
|
||||
|
||||
switch (scmOrderPO.getScmSource()) {
|
||||
case 1://采购订单
|
||||
orderInfoPO = purchaseOrderMapper.selectOrderInfoByOrderId(scmOrderPO.getOrderId());
|
||||
break;
|
||||
case 2://销售订单
|
||||
orderInfoPO = salesOrderMapper.selectOrderInfoByOrderId(scmOrderPO.getOrderId());
|
||||
break;
|
||||
case 3://运输订单
|
||||
break;
|
||||
}
|
||||
scmOrderPO.setOrderNo(orderInfoPO.getOrderNo());
|
||||
scmOrderPO.setShipper(orderInfoPO.getShipper());
|
||||
scmOrderPO.setOrderType(orderInfoPO.getOrderType());
|
||||
scmOrderPO.setCustomerOrders(orderInfoPO.getCustomerOrders());
|
||||
scmOrderPO.setTacklState(orderInfoPO.getTacklState());
|
||||
scmOrderPO.setJobTaskType(orderInfoPO.getJobTaskType());
|
||||
|
||||
}
|
||||
return scmOrderPOS;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增供应链订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(ScmOrderDO scmOrderDO) {
|
||||
ScmOrder scmOrder = new ScmOrder();
|
||||
BeanUtils.copyProperties(scmOrderDO,scmOrder);
|
||||
return this.save(scmOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应链订单
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean update(ScmOrderDO scmOrderDO) {
|
||||
ScmOrder scmOrder = new ScmOrder();
|
||||
BeanUtils.copyProperties(scmOrderDO,scmOrder);
|
||||
return this.updateById(scmOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除供应链订单
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
|
||||
// 根据ID集合查询所有的供应链订单信息
|
||||
List<ScmOrder> scmOrders = this.listByIds(Arrays.asList(ids));
|
||||
// 供应链订单状态只有是已取消、已拦截状态下的订单才可以删除
|
||||
List<ScmOrder> scmOrderList = scmOrders.stream().filter(scmOrder -> scmOrder.getOrderState() != 7
|
||||
&& scmOrder.getOrderState() != 8).collect(Collectors.toList());
|
||||
if (!scmOrderList.isEmpty()) {
|
||||
throw new ServiceException("已取消/已拦截的订单状态才可以删除");
|
||||
}
|
||||
|
||||
for (ScmOrder scmOrder : scmOrders) {
|
||||
scmOrder.setDelFlag(2);
|
||||
}
|
||||
return this.updateBatchById(scmOrders);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应链订单
|
||||
*/
|
||||
@Override
|
||||
public ScmOrderPO getInfo(Long id) {
|
||||
ScmOrder scmOrder = this.getById(id);
|
||||
ScmOrderPO scmOrderPO = new ScmOrderPO();
|
||||
if(ObjectUtils.isNull(scmOrder)){
|
||||
return null;
|
||||
}
|
||||
BeanUtils.copyProperties(scmOrder,scmOrderPO);
|
||||
return scmOrderPO;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 审核|取消审核【批量】
|
||||
*
|
||||
* @param exeState - 操作状态:1-审核、2-取消审核
|
||||
* @param idList - 供应链订单ID列表
|
||||
* @return 审核结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchAuditOrCancelAudit(Integer exeState, List<String> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if(idList.size() == 0){
|
||||
throw new ServiceException("供应链订单ID列表不能为空");
|
||||
}
|
||||
|
||||
// 查询列表中符合对应当前操作状态的数据:审核-未审核状态的订单、取消审核-审核通过的订单
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO(idList, exeState);
|
||||
List<ScmOrderPO> scmOrderList = scmOrderMapper.queryList(scmOrderDO);
|
||||
if(scmOrderList.size() != idList.size()){
|
||||
throw new ServiceException("存在非【"+ (exeState == 1 ? "未审核" : "审核通过") +"】状态订单!");
|
||||
}
|
||||
|
||||
return scmOrderMapper.batchUpdateOrderState(idList,
|
||||
exeState == 1 ? OrderConstant.SCM_STATUS_2 : OrderConstant.SCM_STATUS_1,
|
||||
loginUser.getUserPo());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interceptByOrderId(Long orderId) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
scmOrderMapper.update(new ScmOrder(), new LambdaUpdateWrapper<ScmOrder>()
|
||||
.set(ScmOrder::getOrderState, OrderConstant.SCM_STATUS_8)
|
||||
.set(ScmOrder::getUpdateBy, loginUser.getUserid())
|
||||
.set(ScmOrder::getUpdateByName, loginUser.getUsername())
|
||||
.set(ScmOrder::getUpdateTime, new Date())
|
||||
.eq(ScmOrder::getOrderId, orderId)
|
||||
.eq(ScmOrder::getDelFlag, 1)
|
||||
.ne(ScmOrder::getOrderState, OrderConstant.SCM_STATUS_7));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Boolean batchInsert(List<ScmOrderDO> scmOrderDOS) {
|
||||
List<ScmOrder> scmOrders = new ArrayList<>();
|
||||
for (ScmOrderDO scmOrderDO : scmOrderDOS) {
|
||||
ScmOrder scmOrder = new ScmOrder();
|
||||
BeanUtils.copyProperties(scmOrderDO,scmOrder);
|
||||
scmOrders.add(scmOrder);
|
||||
}
|
||||
return this.saveBatch(scmOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ScmOrderPO> getInfosByOrderId(List<Long> ids) {
|
||||
|
||||
List<ScmOrder> scmOrders = this.scmOrderMapper.selectList(new LambdaQueryWrapper<ScmOrder>().in(ScmOrder::getOrderId, ids)
|
||||
.eq(ScmOrder::getDelFlag, 1));
|
||||
|
||||
return scmOrders.stream().map(scmOrder -> {
|
||||
ScmOrderPO scmOrderPO = new ScmOrderPO();
|
||||
BeanUtils.copyProperties(scmOrder,scmOrderPO);
|
||||
return scmOrderPO;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchUpdate(List<ScmOrderDO> scmOrderDOS) {
|
||||
List<ScmOrder> scmOrders = new ArrayList<>();
|
||||
for (ScmOrderDO scmOrderDO : scmOrderDOS) {
|
||||
ScmOrder scmOrder = new ScmOrder();
|
||||
BeanUtils.copyProperties(scmOrderDO,scmOrder);
|
||||
scmOrders.add(scmOrder);
|
||||
}
|
||||
|
||||
return this.updateBatchById(scmOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, List<ScmOrderPO>> getGoodsAndTaskInfoList(List<Long> idList) {
|
||||
if(idList.size() == 0){
|
||||
throw new ServiceException("供应链订单ID不能为空");
|
||||
}
|
||||
List<ScmOrderPO> goodsAndTaskInfoList = scmOrderMapper.getGoodsAndTaskInfoList(idList);
|
||||
return goodsAndTaskInfoList.stream().collect(Collectors.groupingBy(ScmOrderPO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.mhd.oms.domain.scmOrder.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;
|
||||
|
||||
|
||||
/**
|
||||
* 供应链订单对象 oms_scm_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "供应链订单对象", description = "供应链订单响应对象")
|
||||
public class ScmOrderPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("供应链订单来源:1-采购订单、2-销售订单、3-运输订单")
|
||||
@Excel(name = "供应链订单来源;1采购订单2销售订单3运输订单")
|
||||
private Integer scmSource;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("供应链订单号")
|
||||
@Excel(name = "供应链订单号")
|
||||
private String scmNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1-未审核、2-已审核、3-部分生成、4-全部生成、5-部分完成、6-已完成、7-已取消、8-已拦截")
|
||||
@Excel(name = "订单状态;1未审核2已审核3部分生成4全部生成5部分完成6已完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("任务数量")
|
||||
@Excel(name = "任务数量")
|
||||
private Long taskNum;
|
||||
|
||||
@ApiModelProperty("有效数量")
|
||||
@Excel(name = "有效数量")
|
||||
private Long activeTaskNum;
|
||||
|
||||
@ApiModelProperty("完成数量")
|
||||
@Excel(name = "完成数量")
|
||||
private Long finishTaskNum;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("物料ID")
|
||||
private Long goodsId;
|
||||
|
||||
@ApiModelProperty("总物料数量")
|
||||
private BigDecimal totalGoodsNum;
|
||||
@ApiModelProperty("已生成物料数量")
|
||||
private BigDecimal existedGoodsNum;
|
||||
|
||||
@ApiModelProperty("仓库ID")
|
||||
private Long warehouseId;
|
||||
@ApiModelProperty("仓库名称")
|
||||
private String warehouseName;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
private Integer jobTaskTypeId;
|
||||
@ApiModelProperty("作业任务类型名称")
|
||||
private String jobTaskType;
|
||||
|
||||
@ApiModelProperty("订单号/商流订单号")
|
||||
private String orderNo;
|
||||
@ApiModelProperty("货主")
|
||||
private String shipper;
|
||||
@ApiModelProperty("业务订单类型")
|
||||
private String orderType;
|
||||
@ApiModelProperty("客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("拦截状态;0未拦截1拦截成功2拦截失败")
|
||||
private Integer tacklState;
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.mhd.oms.domain.scmOrder.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;
|
||||
|
||||
|
||||
/**
|
||||
* 供应链订单对象 oms_scm_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class ScmOrderDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
private List<String> idList;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("供应链订单来源;1采购订单2销售订单3运输订单")
|
||||
@Excel(name = "供应链订单来源;1采购订单2销售订单3运输订单")
|
||||
private Integer scmSource;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("供应链订单号")
|
||||
@Excel(name = "供应链订单号")
|
||||
private String scmNo;
|
||||
|
||||
@ApiModelProperty("订单状态;1未审核2已审核3部分生成4全部生成5部分完成6已完成7已取消8已拦截")
|
||||
@Excel(name = "订单状态;1未审核2已审核3部分生成4全部生成5部分完成6已完成7已取消8已拦截")
|
||||
private Integer orderState;
|
||||
|
||||
@ApiModelProperty("任务数量")
|
||||
@Excel(name = "任务数量")
|
||||
private Long taskNum;
|
||||
|
||||
@ApiModelProperty("有效数量")
|
||||
@Excel(name = "有效数量")
|
||||
private Long activeTaskNum;
|
||||
|
||||
@ApiModelProperty("完成数量")
|
||||
@Excel(name = "完成数量")
|
||||
private Long finishTaskNum;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
|
||||
|
||||
public ScmOrderDO(){
|
||||
|
||||
}
|
||||
|
||||
public ScmOrderDO(List<String> idList, Integer orderState){
|
||||
this.idList = idList;
|
||||
this.orderState = orderState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
package com.mhd.oms.domain.scmOrder.service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.scmOrder.repository.facade.IScmOrderService;
|
||||
import com.mhd.oms.domain.scmOrder.repository.po.ScmOrderPO;
|
||||
import com.mhd.oms.domain.scmOrder.repository.todo.ScmOrderDO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.facade.ITaskOrderService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
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;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 供应链订单
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-21
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ScmOrderDomainService {
|
||||
|
||||
@Autowired
|
||||
private IScmOrderService scmOrderService;
|
||||
@Resource
|
||||
private ITaskOrderService taskOrderService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询供应链订单列表
|
||||
*/
|
||||
public List<ScmOrderPO> queryList(ScmOrderDO scmOrderDO) {
|
||||
return scmOrderService.queryList(scmOrderDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增供应链订单
|
||||
*/
|
||||
public Boolean insert(ScmOrderDO scmOrderDO) {
|
||||
|
||||
return scmOrderService.insert(scmOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应链订单
|
||||
*/
|
||||
public Boolean update(ScmOrderDO scmOrderDO) {
|
||||
return scmOrderService.update(scmOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除供应链订单
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return scmOrderService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取供应链订单详细信息
|
||||
*/
|
||||
public ScmOrderPO getInfo(Long id)
|
||||
{
|
||||
return scmOrderService.getInfo(id);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 审核|取消审核【批量】
|
||||
*
|
||||
* @param exeState - 操作状态:1-审核、2-取消审核
|
||||
* @param idList - 供应链订单ID列表
|
||||
*/
|
||||
public Boolean batchAuditOrCancelAudit(Integer exeState, List<String> idList) {
|
||||
return scmOrderService.batchAuditOrCancelAudit(exeState, idList);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新供应链订单任务数量、状态
|
||||
* 下游作业任务取消后,供应链订单需要进行更新对应的任务数量及状态
|
||||
* @param ableCancelledScmIdList - 取消的作业任务列表:ScmId不能为空
|
||||
*/
|
||||
public void updateFromCancelTask(List<TaskOrderPO> ableCancelledScmIdList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
// <供应链订单, List<对应可取消的作业任务列表>>
|
||||
Map<Long, List<TaskOrderPO>> taskOrderMapGroupByScmId = ableCancelledScmIdList.stream().collect(Collectors.groupingBy(TaskOrderPO::getScmId));
|
||||
taskOrderMapGroupByScmId.forEach((k,v) -> {
|
||||
ScmOrderPO scmOrderPo = scmOrderService.getInfo(k);
|
||||
// 查询供应链订单K下所有作业任务
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
taskOrderDO.setScmId(k);
|
||||
List<TaskOrderPO> taskOrderPoList = taskOrderService.queryList(taskOrderDO);
|
||||
// 作业任务状态分组
|
||||
Map<Integer, List<TaskOrderPO>> statusMap = taskOrderPoList.stream().collect(Collectors.groupingBy(TaskOrderPO::getTaskStatus));
|
||||
// 更新供应链订单信息
|
||||
ScmOrderDO scmOrderDo = new ScmOrderDO();
|
||||
BeanUtil.copyProperties(scmOrderPo, scmOrderDo);
|
||||
scmOrderDo.setActiveTaskNum(scmOrderDo.getActiveTaskNum() - v.size());
|
||||
if(!statusMap.containsKey(OrderConstant.TASK_STATUS_0)
|
||||
&& !statusMap.containsKey(OrderConstant.TASK_STATUS_1)
|
||||
&& !statusMap.containsKey(OrderConstant.TASK_STATUS_2)){
|
||||
scmOrderDo.setOrderState(OrderConstant.SCM_STATUS_2);
|
||||
}
|
||||
scmOrderDo.setUpdateBy(loginUser.getUserid());
|
||||
scmOrderDo.setUpdateByName(loginUser.getUsername());
|
||||
scmOrderDo.setUpdateTime(new Date());
|
||||
scmOrderService.update(scmOrderDo);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单ORDER_ID修改供应链订单为拦截状态
|
||||
* @param orderId - 订单ID
|
||||
*/
|
||||
public void interceptByOrderId(Long orderId) {
|
||||
scmOrderService.interceptByOrderId(orderId);
|
||||
}
|
||||
|
||||
public Boolean batchInsert(List<ScmOrderDO> scmOrderDOS) {
|
||||
return scmOrderService.batchInsert(scmOrderDOS);
|
||||
}
|
||||
|
||||
public List<ScmOrderPO> getInfosByOrderId(List<Long> ids) {
|
||||
return scmOrderService.getInfosByOrderId(ids);
|
||||
}
|
||||
|
||||
public Boolean batchUpdate(List<ScmOrderDO> scmOrderDOS) {
|
||||
return scmOrderService.batchUpdate(scmOrderDOS);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取传入列表中对应的物料信息列表,按传入的ID分组
|
||||
* @param idList 供应链订单ID列表
|
||||
* @return k-供应链id,v-对应物料列表
|
||||
*/
|
||||
public Map<Long, List<ScmOrderPO>> getGoodsAndTaskInfoList(List<Long> idList) {
|
||||
Map<Long, List<ScmOrderPO>> scmGoodsMap = scmOrderService.getGoodsAndTaskInfoList(idList);
|
||||
if(scmGoodsMap.size() != idList.size()){
|
||||
List<Long> ableCreateId = new ArrayList<>(scmGoodsMap.keySet());
|
||||
idList.removeAll(ableCreateId);
|
||||
throw new ServiceException("供应链订单ID:"+ idList + "异常,不可生成任务");
|
||||
}
|
||||
return scmGoodsMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新key中的供应链订单,组装传入的物料列表为作业任务并返回
|
||||
* @param scmGoodsMap - 供应链订单对应的所有物料的信息列表
|
||||
* @return - 应新增的作业任务列表
|
||||
*/
|
||||
public List<TaskOrderDO> handlerbatchCreateTaskOrder(Map<Long, List<ScmOrderPO>> scmGoodsMap) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
|
||||
List<TaskOrderDO> taskOrderList = new ArrayList<>();
|
||||
List<ScmOrderDO> scmOrderList = new ArrayList<>();
|
||||
|
||||
scmGoodsMap.forEach((k,v) -> {
|
||||
|
||||
// 供应链订单状态应处于可生成任务状态: 任务列表中的订单状态为供应链订单的状态,只判断1次就行
|
||||
if(!ArrayUtil.contains(OrderConstant.SCM_STATUS_GROUP_CAN_GENERATE_TASK, v.get(0).getOrderState())){
|
||||
throw new ServiceException("请检查供应链订单" + v.get(0).getScmNo() + "状态");
|
||||
}
|
||||
|
||||
// ================== 处理应生成的作业任务,新增到作业任务列表 =================
|
||||
// 可创建任务的物料列表: 物料总数量 - 已生成作业任务数量 > 0
|
||||
List<ScmOrderPO> ableCreateGoodsList = v.stream().filter(x -> BigDecimal.ZERO.compareTo(x.getTotalGoodsNum().subtract(x.getExistedGoodsNum())) < 0)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
ableCreateGoodsList.forEach(x -> {
|
||||
TaskOrderDO taskOrderDO = new TaskOrderDO();
|
||||
taskOrderDO.setCreateBy(loginUser.getUserid());
|
||||
taskOrderDO.setCreateByName(loginUser.getUsername());
|
||||
taskOrderDO.setCreateTime(new Date());
|
||||
taskOrderDO.setScmId(k);
|
||||
taskOrderDO.setWarehouseId(x.getWarehouseId());
|
||||
taskOrderDO.setWarehouseName(x.getWarehouseName());
|
||||
taskOrderDO.setPlanNum(x.getTotalGoodsNum().subtract(x.getExistedGoodsNum()));
|
||||
taskOrderDO.setTaskTypeId(x.getJobTaskTypeId());
|
||||
taskOrderDO.setTaskTypeName(x.getJobTaskType());
|
||||
taskOrderDO.setGoodsId(x.getGoodsId());
|
||||
taskOrderDO.setOrderId(x.getOrderId());
|
||||
taskOrderDO.setScmSource(x.getScmSource());
|
||||
taskOrderList.add(taskOrderDO);
|
||||
});
|
||||
|
||||
// ============= 增加供应链订单的任务数量、有效数量 =============
|
||||
ScmOrderPO scmOrder = scmOrderService.getInfo(k);
|
||||
ScmOrderDO scmOrderDO = new ScmOrderDO();
|
||||
BeanUtils.copyProperties(scmOrder, scmOrderDO, IgnoreNullUtil.getNullPropertyNames(scmOrder));
|
||||
scmOrderDO.setOrderState(OrderConstant.SCM_STATUS_4);
|
||||
scmOrderDO.setTaskNum(scmOrderDO.getTaskNum() + ableCreateGoodsList.size());
|
||||
scmOrderDO.setActiveTaskNum(scmOrderDO.getActiveTaskNum() + ableCreateGoodsList.size());
|
||||
scmOrderList.add(scmOrderDO);
|
||||
});
|
||||
|
||||
scmOrderService.batchUpdate(scmOrderList);
|
||||
return taskOrderList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
package com.mhd.oms.domain.settlement.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* 结算信息对象 oms_settlement
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@TableName(value = "oms_settlement")
|
||||
public class Settlement extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("结算对象ID")
|
||||
@Excel(name = "结算对象ID")
|
||||
private Long settlementObjId;
|
||||
|
||||
@ApiModelProperty("结算对象")
|
||||
@Excel(name = "结算对象")
|
||||
private String settlementObj;
|
||||
|
||||
@ApiModelProperty("结算方式ID")
|
||||
@Excel(name = "结算方式ID")
|
||||
private String settlementWayId;
|
||||
|
||||
@ApiModelProperty("结算方式")
|
||||
@Excel(name = "结算方式")
|
||||
private String settlementWay;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
@Excel(name = "支付方式")
|
||||
private String payMethod;
|
||||
|
||||
@ApiModelProperty("支付状态ID")
|
||||
@Excel(name = "支付状态ID")
|
||||
private String payStatusId;
|
||||
|
||||
@ApiModelProperty("支付状态")
|
||||
@Excel(name = "支付状态")
|
||||
private String payStatus;
|
||||
|
||||
@ApiModelProperty("预付金额")
|
||||
@Excel(name = "预付金额")
|
||||
private BigDecimal prepaidAmount;
|
||||
|
||||
@ApiModelProperty("实付金额;采购订单:本次付款")
|
||||
@Excel(name = "实付金额;采购订单:本次付款")
|
||||
private BigDecimal paidAmount;
|
||||
|
||||
@ApiModelProperty("欠款金额;采购订单:本次欠款")
|
||||
@Excel(name = "欠款金额;采购订单:本次欠款")
|
||||
private BigDecimal debtAmount;
|
||||
|
||||
@ApiModelProperty("付款账号")
|
||||
@Excel(name = "付款账号")
|
||||
private String paymentAccNo;
|
||||
|
||||
@ApiModelProperty("付款单号")
|
||||
@Excel(name = "付款单号")
|
||||
private String paymentOrderNo;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
package com.mhd.oms.domain.settlement.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.settlement.entity.Settlement;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 结算信息Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface ISettlementService extends IService<Settlement>
|
||||
{
|
||||
/**
|
||||
* 分页查询结算信息列表
|
||||
*/
|
||||
public List<SettlementPO> queryList(SettlementDO settlementDO);
|
||||
|
||||
/**
|
||||
* 新增结算信息
|
||||
*/
|
||||
public Boolean insert(SettlementDO settlementDO);
|
||||
|
||||
/**
|
||||
* 修改结算信息
|
||||
*/
|
||||
public Boolean update(SettlementDO settlementDO);
|
||||
|
||||
/**
|
||||
* 批量删除结算信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询结算信息
|
||||
*/
|
||||
public SettlementPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
Boolean batchInsert(List<SettlementDO> settlementDOList);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.mhd.oms.domain.settlement.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.settlement.entity.Settlement;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 结算信息Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
public interface SettlementMapper extends BaseMapper<Settlement>
|
||||
{
|
||||
/**
|
||||
* 查询结算信息列表
|
||||
*/
|
||||
public List<SettlementPO> queryList(SettlementDO settlementDO);
|
||||
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.mhd.oms.domain.settlement.repository.persistence;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.oms.domain.settlement.entity.Settlement;
|
||||
import com.mhd.oms.domain.settlement.repository.facade.ISettlementService;
|
||||
import com.mhd.oms.domain.settlement.repository.mapper.SettlementMapper;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 结算信息Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
public class SettlementImpl extends ServiceImpl<SettlementMapper, Settlement> implements ISettlementService{
|
||||
@Autowired
|
||||
private SettlementMapper settlementMapper;
|
||||
|
||||
/**
|
||||
* 查询结算信息列表
|
||||
*/
|
||||
@Override
|
||||
public List<SettlementPO> queryList(SettlementDO settlementDO)
|
||||
{
|
||||
return settlementMapper.queryList(settlementDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增结算信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(SettlementDO settlementDO) {
|
||||
Settlement settlement = new Settlement();
|
||||
BeanUtils.copyProperties(settlementDO,settlement);
|
||||
return this.save(settlement);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改结算信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(SettlementDO settlementDO) {
|
||||
Settlement settlement = new Settlement();
|
||||
BeanUtils.copyProperties(settlementDO,settlement);
|
||||
return this.updateById(settlement);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除结算信息
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
List<Settlement> list = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
Settlement settlement = new Settlement();
|
||||
settlement.setId(id);
|
||||
settlement.setDelFlag(2);
|
||||
list.add(settlement);
|
||||
}
|
||||
return this.updateBatchById(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改结算信息
|
||||
*/
|
||||
@Override
|
||||
public SettlementPO getInfo(Long id) {
|
||||
Settlement settlement = this.getById(id);
|
||||
SettlementPO settlementPO = new SettlementPO();
|
||||
BeanUtils.copyProperties(settlement,settlementPO);
|
||||
return settlementPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchInsert(List<SettlementDO> settlementDOList) {
|
||||
List<Settlement> settlementList = settlementDOList.stream().map(settlementDO -> {
|
||||
Settlement settlement = new Settlement();
|
||||
BeanUtils.copyProperties(settlementDO, settlement);
|
||||
return settlement;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(settlementList);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.mhd.oms.domain.settlement.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;
|
||||
|
||||
|
||||
/**
|
||||
* 结算信息对象 oms_settlement
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "结算信息对象", description = "结算信息响应对象")
|
||||
public class SettlementPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("结算对象ID")
|
||||
@Excel(name = "结算对象ID")
|
||||
private Long settlementObjId;
|
||||
|
||||
@ApiModelProperty("结算对象")
|
||||
@Excel(name = "结算对象")
|
||||
private String settlementObj;
|
||||
|
||||
@ApiModelProperty("结算方式ID")
|
||||
@Excel(name = "结算方式ID")
|
||||
private String settlementWayId;
|
||||
|
||||
@ApiModelProperty("结算方式")
|
||||
@Excel(name = "结算方式")
|
||||
private String settlementWay;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
@Excel(name = "支付方式")
|
||||
private String payMethod;
|
||||
|
||||
@ApiModelProperty("支付状态ID")
|
||||
@Excel(name = "支付状态ID")
|
||||
private String payStatusId;
|
||||
|
||||
@ApiModelProperty("支付状态")
|
||||
@Excel(name = "支付状态")
|
||||
private String payStatus;
|
||||
|
||||
@ApiModelProperty("预付金额")
|
||||
@Excel(name = "预付金额")
|
||||
private BigDecimal prepaidAmount;
|
||||
|
||||
@ApiModelProperty("实付金额(采购订单本次付款)")
|
||||
@Excel(name = "实付金额;采购订单:本次付款")
|
||||
private BigDecimal paidAmount;
|
||||
|
||||
@ApiModelProperty("欠款金额(采购订单本次欠款)")
|
||||
@Excel(name = "欠款金额;采购订单:本次欠款")
|
||||
private BigDecimal debtAmount;
|
||||
|
||||
@ApiModelProperty("付款账号")
|
||||
@Excel(name = "付款账号")
|
||||
private String paymentAccNo;
|
||||
|
||||
@ApiModelProperty("付款单号")
|
||||
@Excel(name = "付款单号")
|
||||
private String paymentOrderNo;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package com.mhd.oms.domain.settlement.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;
|
||||
|
||||
|
||||
/**
|
||||
* 结算信息对象 oms_settlement
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class SettlementDO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
@Excel(name = "最高组织id")
|
||||
private Long topOrganizationId;
|
||||
|
||||
@ApiModelProperty("组织表id")
|
||||
@Excel(name = "组织表id")
|
||||
private Long organizationId;
|
||||
|
||||
@ApiModelProperty("组织名称")
|
||||
@Excel(name = "组织名称")
|
||||
private String organizationName;
|
||||
|
||||
@ApiModelProperty("订单管理表ID")
|
||||
@Excel(name = "订单管理表ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("结算对象ID")
|
||||
@Excel(name = "结算对象ID")
|
||||
private Long settlementObjId;
|
||||
|
||||
@ApiModelProperty("结算对象")
|
||||
@Excel(name = "结算对象")
|
||||
private String settlementObj;
|
||||
|
||||
@ApiModelProperty("结算方式ID")
|
||||
@Excel(name = "结算方式ID")
|
||||
private String settlementWayId;
|
||||
|
||||
@ApiModelProperty("结算方式")
|
||||
@Excel(name = "结算方式")
|
||||
private String settlementWay;
|
||||
|
||||
@ApiModelProperty("支付方式")
|
||||
@Excel(name = "支付方式")
|
||||
private String payMethod;
|
||||
|
||||
@ApiModelProperty("支付状态ID")
|
||||
@Excel(name = "支付状态ID")
|
||||
private String payStatusId;
|
||||
|
||||
@ApiModelProperty("支付状态")
|
||||
@Excel(name = "支付状态")
|
||||
private String payStatus;
|
||||
|
||||
@ApiModelProperty("预付金额")
|
||||
@Excel(name = "预付金额")
|
||||
private BigDecimal prepaidAmount;
|
||||
|
||||
@ApiModelProperty("实付金额;采购订单:本次付款")
|
||||
@Excel(name = "实付金额;采购订单:本次付款")
|
||||
private BigDecimal paidAmount;
|
||||
|
||||
@ApiModelProperty("欠款金额;采购订单:本次欠款")
|
||||
@Excel(name = "欠款金额;采购订单:本次欠款")
|
||||
private BigDecimal debtAmount;
|
||||
|
||||
@ApiModelProperty("付款账号")
|
||||
@Excel(name = "付款账号")
|
||||
private String paymentAccNo;
|
||||
|
||||
@ApiModelProperty("付款单号")
|
||||
@Excel(name = "付款单号")
|
||||
private String paymentOrderNo;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileName;
|
||||
|
||||
@ApiModelProperty("附件地址")
|
||||
@Excel(name = "附件地址")
|
||||
private String fileUrl;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
@Excel(name = "备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("合计金额")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
@ApiModelProperty(name = "组织ID集合")
|
||||
private List<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "权限菜单ID")
|
||||
private Long permissionMenuId;
|
||||
}
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
package com.mhd.oms.domain.settlement.service;
|
||||
|
||||
import com.mhd.common.core.utils.IgnoreNullUtil;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.domain.purchaseOrder.entity.PurchaseOrder;
|
||||
import com.mhd.oms.domain.salesOrder.entity.SalesOrder;
|
||||
import com.mhd.oms.domain.settlement.repository.facade.ISettlementService;
|
||||
import com.mhd.oms.domain.settlement.repository.po.SettlementPO;
|
||||
import com.mhd.oms.domain.settlement.repository.todo.SettlementDO;
|
||||
import com.mhd.oms.interfaces.dto.purchaseOrder.PurchaseOrderExcelDTO;
|
||||
import com.mhd.oms.interfaces.dto.salesOrder.SalesOrderExcelDTO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 结算信息
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-16
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class SettlementDomainService {
|
||||
|
||||
@Autowired
|
||||
private ISettlementService settlementService;
|
||||
|
||||
|
||||
/**
|
||||
* 分页查询结算信息列表
|
||||
*/
|
||||
public List<SettlementPO> queryList(SettlementDO settlementDO) {
|
||||
return settlementService.queryList(settlementDO);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增结算信息
|
||||
*/
|
||||
public Boolean insert(SettlementDO settlementDO) {
|
||||
|
||||
return settlementService.insert(settlementDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改结算信息
|
||||
*/
|
||||
public Boolean update(SettlementDO settlementDO) {
|
||||
return settlementService.update(settlementDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除结算信息
|
||||
*/
|
||||
public Boolean delete(Long[] ids) {
|
||||
return settlementService.delete(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取结算信息详细信息
|
||||
*/
|
||||
public SettlementPO getInfo(Long id)
|
||||
{
|
||||
return settlementService.getInfo(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
public Boolean batchInsert(List<SettlementDO> settlementDOList) {
|
||||
return settlementService.batchInsert(settlementDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入销售订单 - 为传入的结算列表添加一条结算信息
|
||||
*
|
||||
* @param settlementDOList - 添加数据的列表
|
||||
* @param salesOrderExcelDTO -导入的数据
|
||||
* @param salesOrder - 导入数据中的销售订单信息
|
||||
*/
|
||||
public void listAddFromImportSalesOrder(List<SettlementDO> settlementDOList, SalesOrderExcelDTO salesOrderExcelDTO, SalesOrder salesOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
SettlementDO settlementDo = new SettlementDO();
|
||||
|
||||
BeanUtils.copyProperties(salesOrderExcelDTO, settlementDo, IgnoreNullUtil.getNullPropertyNames(salesOrderExcelDTO));
|
||||
settlementDo.setOrderId(salesOrder.getId());
|
||||
settlementDo.setRemark(salesOrderExcelDTO.getSettlementRemark());
|
||||
settlementDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
settlementDo.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
settlementDo.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
settlementDo.setCreateTime(new Date());
|
||||
settlementDo.setTotalAmount(salesOrder.getTotalAmount());
|
||||
settlementDo.setDebtAmount(salesOrder.getTotalAmount());
|
||||
settlementDOList.add(settlementDo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入采购订单 - 为传入的结算列表添加一条结算信息
|
||||
*
|
||||
* @param settlementDOList - 添加数据的列表
|
||||
* @param purOrderExcelDTO -导入的数据
|
||||
* @param purOrder - 导入的采购订单信息
|
||||
*/
|
||||
public void listAddFromImportPurOrder(List<SettlementDO> settlementDOList, PurchaseOrderExcelDTO purOrderExcelDTO, PurchaseOrder purOrder) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
SettlementDO settlementDo = new SettlementDO();
|
||||
|
||||
BeanUtils.copyProperties(purOrderExcelDTO, settlementDo, IgnoreNullUtil.getNullPropertyNames(purOrderExcelDTO));
|
||||
settlementDo.setOrderId(purOrder.getId());
|
||||
settlementDo.setRemark(purOrderExcelDTO.getSettlementRemark());
|
||||
settlementDo.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||
settlementDo.setCreateBy(loginUser.getUserPo().getUserId());
|
||||
settlementDo.setCreateByName(loginUser.getUserPo().getUserName());
|
||||
settlementDo.setCreateTime(new Date());
|
||||
settlementDo.setTotalAmount(purOrder.getTotalAmount());
|
||||
settlementDo.setDebtAmount(purOrder.getTotalAmount());
|
||||
settlementDOList.add(settlementDo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.mhd.oms.domain.taskOrder.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
/**
|
||||
* 作业任务对象 oms_task_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName("oms_task_order")
|
||||
public class TaskOrder extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
private Long topOrganizationId;
|
||||
@ApiModelProperty("组织表id")
|
||||
private Long organizationId;
|
||||
@ApiModelProperty("组织名称")
|
||||
private Long organizationName;
|
||||
|
||||
@ApiModelProperty("供应链订单ID")
|
||||
private Long scmId;
|
||||
@ApiModelProperty("订单ID")
|
||||
private Long orderId;
|
||||
@ApiModelProperty("物料ID")
|
||||
private Long goodsId;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
private String taskNo;
|
||||
@ApiModelProperty("任务状态:0-未下发、1-已下发、2-已完成、3-已拦截、4-已取消")
|
||||
private Integer taskStatus;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
private Integer taskTypeId;
|
||||
@ApiModelProperty("作业任务类型名称")
|
||||
private String taskTypeName;
|
||||
|
||||
@ApiModelProperty("仓库ID")
|
||||
private Long warehouseId;
|
||||
@ApiModelProperty("仓库名称")
|
||||
private String warehouseName;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("计划数量")
|
||||
private BigDecimal planNum;
|
||||
|
||||
@ApiModelProperty("合并单号")
|
||||
private String mergeTaskNo;
|
||||
|
||||
@ApiModelProperty("合并状态(0未合并1已合并)")
|
||||
private Integer mergeState;
|
||||
|
||||
@ApiModelProperty("通知单号")
|
||||
private String noticeCode;
|
||||
|
||||
@ApiModelProperty("入库单号")
|
||||
private String enterWarehouseCode;
|
||||
|
||||
@ApiModelProperty("供应链订单来源:0-默认、1-采购订单、2-销售订单、3-运输订单")
|
||||
private Integer scmSource;
|
||||
|
||||
public TaskOrder(){
|
||||
|
||||
}
|
||||
|
||||
public TaskOrder(String taskNo){
|
||||
this.taskNo = taskNo;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.mhd.oms.domain.taskOrder.repository.facade;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.taskOrder.entity.TaskOrder;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作业任务Service接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
public interface ITaskOrderService extends IService<TaskOrder>
|
||||
{
|
||||
/**
|
||||
* 分页查询作业任务列表
|
||||
*/
|
||||
List<TaskOrderPO> queryList(TaskOrderDO taskOrderDO);
|
||||
|
||||
/**
|
||||
* 新增作业任务
|
||||
*/
|
||||
Boolean insert(TaskOrderDO taskOrderDO);
|
||||
|
||||
/**
|
||||
* 修改作业任务
|
||||
*/
|
||||
Boolean update(TaskOrderDO taskOrderDO);
|
||||
|
||||
/**
|
||||
* 批量删除作业任务
|
||||
*/
|
||||
Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询作业任务
|
||||
*/
|
||||
TaskOrderPO getInfo(Long id);
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
* @param taskOrderDOList 批量新增列表
|
||||
* @return 新增结果
|
||||
*/
|
||||
Boolean batchInsert(List<TaskOrderDO> taskOrderDOList);
|
||||
|
||||
/**
|
||||
* 根据供应链订单ID获取作业任务中有效【未下发、已下发、已完成】物料数量
|
||||
* @param scmId - 供应链订单ID
|
||||
* @param goodsId - 物料ID
|
||||
* @return 有效物料数量
|
||||
*/
|
||||
BigDecimal queryEffectiveNumByScmId(Long scmId, Long goodsId);
|
||||
|
||||
Boolean batchUpdate(List<TaskOrderDO> taskOrderDOS);
|
||||
|
||||
List<PoTaskDetailPO> getPoTaskDetail(List<Long> ids);
|
||||
|
||||
Integer getQuantityDeliver(List<Long> ids);
|
||||
|
||||
TaskOrderPO getInfoByTaskNo(String taskNo);
|
||||
|
||||
|
||||
/**
|
||||
* 获取给定ID列表中可取消的作业任务
|
||||
* @param idList - 作业任务ID列表
|
||||
* @return - 可取消的作业任务
|
||||
*/
|
||||
List<TaskOrderPO> getAbleCancelledTaskList(List<Long> idList);
|
||||
|
||||
/**
|
||||
* 取消作业任务
|
||||
*
|
||||
* @param idList - 取消的作业任务ID
|
||||
*/
|
||||
void cancelTaskOrder(List<Long> idList);
|
||||
|
||||
/**
|
||||
* 根据订单ORDER_ID修改作业任务为拦截状态
|
||||
* @param orderId - 订单ID
|
||||
*/
|
||||
void interceptByOrderId(Long orderId);
|
||||
|
||||
List<TaskOrderPO> getInfos(List<Long> ids);
|
||||
|
||||
List<TaskOrderPO> getInfoByIds(List<Long> ids);
|
||||
|
||||
List<TaskOrderPO> getInfosByOrderId(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据orderId获取任务列表
|
||||
* @param idList - 【采购|销售|运输】订单ID列表
|
||||
* @param sourceType - 调用方来源类型:1-采购订单、2-销售订单
|
||||
*/
|
||||
List<TaskOrderPO> queryListByOrderId(List<Long> idList, Integer sourceType);
|
||||
|
||||
OrderInfoPO getOrderInfo(TaskOrderDO taskOrderDO);
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.mhd.oms.domain.taskOrder.repository.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mhd.oms.domain.taskOrder.entity.TaskOrder;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作业任务Mapper接口
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
public interface TaskOrderMapper extends BaseMapper<TaskOrder>
|
||||
{
|
||||
/**
|
||||
* 查询作业任务列表
|
||||
*/
|
||||
public List<TaskOrderPO> queryList(TaskOrderDO taskOrderDO);
|
||||
|
||||
/**
|
||||
* 根据供应链订单ID获取作业任务中有效【未下发、已下发、已完成】物料数量
|
||||
* @param scmId - 供应链订单ID
|
||||
* @param goodsId - 物料ID
|
||||
* @return 作业任务重有效物料数量
|
||||
*/
|
||||
BigDecimal queryEffectiveNumByScmId(@Param("scmId") Long scmId, @Param("goodsId") Long goodsId);
|
||||
|
||||
/**
|
||||
* 获取采购订单的任务详情信息
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
List<PoTaskDetailPO> getPoTaskDetail(@Param("ids") List<Long> ids);
|
||||
|
||||
/**
|
||||
* 取消作业任务
|
||||
*
|
||||
* @param idList - 取消的作业任务ID
|
||||
* @return - 可取消的作业任务
|
||||
*/
|
||||
List<TaskOrderPO> getAbleCancelledTaskList(@Param("idList") List<Long> idList);
|
||||
|
||||
List<TaskOrderPO> getInfoByIds(@Param("ids") List<Long> ids);
|
||||
|
||||
List<TaskOrderPO> queryPurListByOrderId(@Param("orderIdList") List<Long> orderIdList);
|
||||
|
||||
List<TaskOrderPO> querySalesListByOrderId(@Param("orderIdList") List<Long> orderIdList);
|
||||
|
||||
}
|
||||
+277
@@ -0,0 +1,277 @@
|
||||
package com.mhd.oms.domain.taskOrder.repository.persistence;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mhd.common.core.exception.ServiceException;
|
||||
import com.mhd.common.core.utils.OrderSequence;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.oms.constant.OrderConstant;
|
||||
import com.mhd.oms.domain.OrderInfoPO;
|
||||
import com.mhd.oms.domain.orderType.entity.OrderType;
|
||||
import com.mhd.oms.domain.orderType.repository.mapper.OrderTypeMapper;
|
||||
import com.mhd.oms.domain.purchaseOrder.repository.mapper.PurchaseOrderMapper;
|
||||
import com.mhd.oms.domain.salesOrder.repository.mapper.SalesOrderMapper;
|
||||
import com.mhd.oms.domain.taskOrder.entity.TaskOrder;
|
||||
import com.mhd.oms.domain.taskOrder.repository.facade.ITaskOrderService;
|
||||
import com.mhd.oms.domain.taskOrder.repository.mapper.TaskOrderMapper;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.PoTaskDetailPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.po.TaskOrderPO;
|
||||
import com.mhd.oms.domain.taskOrder.repository.todo.TaskOrderDO;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 作业任务Service业务层处理
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
@Service
|
||||
public class TaskOrderImpl extends ServiceImpl<TaskOrderMapper, TaskOrder> implements ITaskOrderService{
|
||||
@Resource
|
||||
private TaskOrderMapper taskOrderMapper;
|
||||
|
||||
@Resource
|
||||
private PurchaseOrderMapper purchaseOrderMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private SalesOrderMapper salesOrderMapper;
|
||||
|
||||
@Resource
|
||||
private OrderTypeMapper orderTypeMapper;
|
||||
|
||||
/**
|
||||
* 查询作业任务列表
|
||||
*/
|
||||
@Override
|
||||
public List<TaskOrderPO> queryList(TaskOrderDO taskOrderDO)
|
||||
{
|
||||
return taskOrderMapper.queryList(taskOrderDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增作业任务
|
||||
*/
|
||||
@Override
|
||||
public Boolean insert(TaskOrderDO taskOrderDO) {
|
||||
TaskOrder taskOrder = new TaskOrder();
|
||||
BeanUtils.copyProperties(taskOrderDO,taskOrder);
|
||||
return this.save(taskOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改作业任务
|
||||
*/
|
||||
@Override
|
||||
public Boolean update(TaskOrderDO taskOrderDO) {
|
||||
TaskOrder taskOrder = new TaskOrder();
|
||||
BeanUtils.copyProperties(taskOrderDO,taskOrder);
|
||||
return this.updateById(taskOrder);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除作业任务
|
||||
*/
|
||||
@Override
|
||||
public Boolean delete(Long[] ids ) {
|
||||
|
||||
//根据ID集合查询所有的作业任务信息
|
||||
List<TaskOrder> taskOrders = this.listByIds(Arrays.asList(ids));
|
||||
//作业任务只有已拦截、已取消的作业任务才可以删除作业任务
|
||||
List<TaskOrder> taskOrderList = taskOrders.stream().filter(taskOrder -> taskOrder.getTaskStatus() != 3 && taskOrder.getTaskStatus() != 4)
|
||||
.collect(Collectors.toList());
|
||||
if (!taskOrderList.isEmpty()) {
|
||||
throw new ServiceException("已拦截/已取消的任务状态,方可进行删除操作");
|
||||
}
|
||||
|
||||
for (TaskOrder taskOrder : taskOrders) {
|
||||
taskOrder.setDelFlag(2);
|
||||
}
|
||||
return this.updateBatchById(taskOrders);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改作业任务
|
||||
*/
|
||||
@Override
|
||||
public TaskOrderPO getInfo(Long id) {
|
||||
TaskOrder taskOrder = this.getOne(new LambdaQueryWrapper<TaskOrder>()
|
||||
.eq(TaskOrder::getId, id).eq(TaskOrder::getDelFlag, 1));
|
||||
TaskOrderPO taskOrderPO = new TaskOrderPO();
|
||||
BeanUtils.copyProperties(taskOrder,taskOrderPO);
|
||||
return taskOrderPO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean batchInsert(List<TaskOrderDO> taskOrderDOList) {
|
||||
List<TaskOrder> taskOrderList = taskOrderDOList.stream().map(taskOrderDO -> {
|
||||
TaskOrder taskOrder = new TaskOrder(OrderSequence.getOrderCode(OrderConstant.TASK_NO_PREFIX));
|
||||
BeanUtils.copyProperties(taskOrderDO, taskOrder);
|
||||
return taskOrder;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
return this.saveBatch(taskOrderList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据供应链订单ID获取作业任务中有效【未下发、已下发、已完成】物料数量
|
||||
* @param scmId - 供应链订单ID
|
||||
* @param goodsId - 物料ID
|
||||
* @return 作业任务重有效物料数量
|
||||
*/
|
||||
@Override
|
||||
public BigDecimal queryEffectiveNumByScmId(Long scmId, Long goodsId) {
|
||||
return taskOrderMapper.queryEffectiveNumByScmId(scmId, goodsId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchUpdate(List<TaskOrderDO> taskOrderDOS) {
|
||||
List<TaskOrder> taskOrders = taskOrderDOS.stream().map(taskOrderDO -> {
|
||||
TaskOrder taskOrder = new TaskOrder();
|
||||
BeanUtils.copyProperties(taskOrderDO, taskOrder);
|
||||
return taskOrder;
|
||||
}).collect(Collectors.toList());
|
||||
return this.updateBatchById(taskOrders);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PoTaskDetailPO> getPoTaskDetail(List<Long> ids) {
|
||||
return taskOrderMapper.getPoTaskDetail(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getQuantityDeliver(List<Long> ids) {
|
||||
return taskOrderMapper.selectCount(new LambdaQueryWrapper<TaskOrder>()
|
||||
.eq(TaskOrder::getDelFlag, 1)
|
||||
.in(TaskOrder::getId,ids)
|
||||
.ne(TaskOrder::getTaskStatus,0).or().eq(TaskOrder::getMergeState,1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TaskOrderPO getInfoByTaskNo(String taskNo) {
|
||||
TaskOrderPO taskOrderPO = new TaskOrderPO();
|
||||
TaskOrder taskOrder = taskOrderMapper.selectOne(new LambdaQueryWrapper<TaskOrder>()
|
||||
.eq(TaskOrder::getTaskNo, taskNo).eq(TaskOrder::getDelFlag,1));
|
||||
if (ObjectUtil.isNull(taskOrder)) {
|
||||
taskOrder = new TaskOrder();
|
||||
}
|
||||
BeanUtils.copyProperties(taskOrder,taskOrderPO);
|
||||
return taskOrderPO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskOrderPO> getAbleCancelledTaskList(List<Long> idList) {
|
||||
return taskOrderMapper.getAbleCancelledTaskList(idList);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void cancelTaskOrder(List<Long> idList) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
taskOrderMapper.update(new TaskOrder(), new LambdaUpdateWrapper<TaskOrder>()
|
||||
.in(TaskOrder::getId, idList)
|
||||
.eq(TaskOrder::getDelFlag, 1)
|
||||
.set(TaskOrder::getTaskStatus, OrderConstant.TASK_STATUS_4)
|
||||
.set(TaskOrder::getUpdateBy, loginUser.getUserid())
|
||||
.set(TaskOrder::getUpdateByName, loginUser.getUsername())
|
||||
.set(TaskOrder::getUpdateTime, new Date()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskOrderPO> getInfos(List<Long> ids) {
|
||||
List<TaskOrder> taskOrders = this.listByIds(ids);
|
||||
|
||||
return taskOrders.stream().map(taskOrder -> {
|
||||
TaskOrderPO taskOrderPO = new TaskOrderPO();
|
||||
BeanUtils.copyProperties(taskOrder, taskOrderPO);
|
||||
return taskOrderPO;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskOrderPO> getInfoByIds(List<Long> ids) {
|
||||
return taskOrderMapper.getInfoByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TaskOrderPO> getInfosByOrderId(List<Long> ids) {
|
||||
List<TaskOrder> taskOrders = this.taskOrderMapper.selectList(new LambdaQueryWrapper<TaskOrder>()
|
||||
.in(TaskOrder::getOrderId, ids).eq(TaskOrder::getDelFlag, 1));
|
||||
|
||||
return taskOrders.stream().map(taskOrder -> {
|
||||
TaskOrderPO taskOrderPO = new TaskOrderPO();
|
||||
BeanUtils.copyProperties(taskOrder, taskOrderPO);
|
||||
return taskOrderPO;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void interceptByOrderId(Long orderId) {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
taskOrderMapper.update(new TaskOrder(), new LambdaUpdateWrapper<TaskOrder>()
|
||||
.set(TaskOrder::getTaskStatus, OrderConstant.TASK_STATUS_3)
|
||||
.set(TaskOrder::getUpdateBy, loginUser.getUserid())
|
||||
.set(TaskOrder::getUpdateByName, loginUser.getUsername())
|
||||
.set(TaskOrder::getUpdateTime, new Date())
|
||||
.eq(TaskOrder::getOrderId, orderId)
|
||||
.eq(TaskOrder::getDelFlag, 1)
|
||||
.ne(TaskOrder::getTaskStatus, OrderConstant.TASK_STATUS_4));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TaskOrderPO> queryListByOrderId(List<Long> idList, Integer sourceType)
|
||||
{
|
||||
List<TaskOrderPO> taskOrderPOList = new ArrayList<>();
|
||||
if(OrderConstant.SCM_SOURCE_1.equals(sourceType)){
|
||||
taskOrderPOList = taskOrderMapper.queryPurListByOrderId(idList);
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_2.equals(sourceType)){
|
||||
taskOrderPOList = taskOrderMapper.querySalesListByOrderId(idList);
|
||||
|
||||
}
|
||||
else if(OrderConstant.SCM_SOURCE_3.equals(sourceType)){
|
||||
|
||||
}
|
||||
else{
|
||||
throw new ServiceException("内部错误");
|
||||
}
|
||||
return taskOrderPOList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderInfoPO getOrderInfo(TaskOrderDO taskOrderDO) {
|
||||
OrderInfoPO orderInfoPO = new OrderInfoPO();
|
||||
switch (taskOrderDO.getScmSource()) {
|
||||
case 1://采购订单
|
||||
orderInfoPO = purchaseOrderMapper.selectOrderInfoByOrderId(taskOrderDO.getOrderId());
|
||||
break;
|
||||
case 2://销售订单
|
||||
orderInfoPO = salesOrderMapper.selectOrderInfoByOrderId(taskOrderDO.getOrderId());
|
||||
break;
|
||||
case 3://运输订单
|
||||
break;
|
||||
}
|
||||
//查询订单类型
|
||||
OrderType orderType = orderTypeMapper.selectById(orderInfoPO.getOrderTypeId());
|
||||
orderInfoPO.setOrderTypeCode(orderType.getOrderTypeId());
|
||||
return orderInfoPO;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.mhd.oms.domain.taskOrder.repository.po;
|
||||
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@Data
|
||||
public class PoTaskDetailPO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
private String taskNo;
|
||||
|
||||
@ApiModelProperty("下发仓库ID")
|
||||
private Long warehouseId;
|
||||
|
||||
@ApiModelProperty("下发仓库名称")
|
||||
private String warehouseName;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
private Long shipperId;
|
||||
|
||||
@ApiModelProperty("货主")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("任务数量")
|
||||
private Integer taskNum;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
private String mergeTaskNo;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.mhd.oms.domain.taskOrder.repository.po;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.mhd.common.core.web.domain.BaseVOEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 作业任务对象 oms_task_order
|
||||
*
|
||||
* @author gen
|
||||
* @date 2024-05-24
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "作业任务对象", description = "作业任务响应对象")
|
||||
public class TaskOrderPO extends BaseVOEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("最高组织id")
|
||||
private Long topOrganizationId;
|
||||
@ApiModelProperty("组织表id")
|
||||
private Long organizationId;
|
||||
@ApiModelProperty("组织名称")
|
||||
private Long organizationName;
|
||||
|
||||
@ApiModelProperty("供应链订单ID")
|
||||
private Long scmId;
|
||||
@ApiModelProperty("物料ID")
|
||||
private Long goodsId;
|
||||
@ApiModelProperty("订单ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty("作业任务号")
|
||||
private String taskNo;
|
||||
@ApiModelProperty("任务状态:0-未下发、1-已下发、2-已完成、3-已拦截、4-已取消")
|
||||
private Integer taskStatus;
|
||||
@ApiModelProperty("任务状态")
|
||||
private String taskStatusStr;
|
||||
|
||||
@ApiModelProperty("作业任务类型ID")
|
||||
private Integer taskTypeId;
|
||||
@ApiModelProperty("作业任务类型名称")
|
||||
private String taskTypeName;
|
||||
|
||||
@ApiModelProperty("仓库ID")
|
||||
private Long warehouseId;
|
||||
@ApiModelProperty("仓库名称")
|
||||
private String warehouseName;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("计划数量")
|
||||
private BigDecimal planNum;
|
||||
|
||||
@ApiModelProperty("合并单号")
|
||||
private String mergeTaskNo;
|
||||
|
||||
@ApiModelProperty("合并状态:0-未合并、1-已合并")
|
||||
private Integer mergeState;
|
||||
@ApiModelProperty("合并状态")
|
||||
private String mergeStateStr;
|
||||
|
||||
@ApiModelProperty("通知单号")
|
||||
private String noticeCode;
|
||||
@ApiModelProperty("入库单号")
|
||||
private String enterWarehouseCode;
|
||||
|
||||
@ApiModelProperty("采购订单号")
|
||||
private String orderNo;
|
||||
@ApiModelProperty("客户订单号")
|
||||
private String customerOrders;
|
||||
|
||||
@ApiModelProperty("货主ID")
|
||||
private String shipperId;
|
||||
@ApiModelProperty("货主名称")
|
||||
private String shipper;
|
||||
|
||||
@ApiModelProperty("供应商ID")
|
||||
private String supplierId;
|
||||
@ApiModelProperty("供应商名称")
|
||||
private String supplier;
|
||||
|
||||
@ApiModelProperty("下发订单类型ID")
|
||||
private String orderTypeId;
|
||||
@ApiModelProperty("下发订单类型名称")
|
||||
private String orderType;
|
||||
|
||||
@ApiModelProperty("下发系统")
|
||||
private String deliverySystem;
|
||||
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty("预计到货时间")
|
||||
private Date estimatedReceivingTime;
|
||||
|
||||
|
||||
@ApiModelProperty("订单任务来源:0-默认、1-采购订单、2-销售订单、3-运输订单")
|
||||
private Integer scmSource;
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user